SQLinfo.ru - Все о MySQL Webew.ru: теория и практика веб-технологий

Форум пользователей MySQL

Задавайте вопросы, мы ответим

Вы не зашли.

#1 20.10.2011 12:48:59

pkhell
Активист
Зарегистрирован: 23.03.2011
Сообщений: 127

Регистрация и авторизация одним файлом

Здравствуйте. Необходимо реализовать тест со связкой php+MySQL, который содержит блок регистрации, авторизации и самого теста в одном единственном файле.
У меня это выглядит следующим образом:


$error=0; //Счётчик ошибок
if ($_POST["pass"]!=$_POST["pass2"]) $error=1; //Пароли разные!
$query = mysql_query("SELECT * FROM Users WHERE login='".$_POST["login"]."'");
if (mysql_num_rows($query)>0)
$error=$error+2; //Такой логин уже есть в базе
if (strlen($_POST["login"])<5 and strlen($_POST["login"])!=0) $error=$error+4; //Логин слишком короткий
if ($error==0)
{
$text_query="INSERT INTO Users VALUES ('', '".$_POST["lname"]."',
'"
.$_POST["fname"]."', '".$_POST["group"]."', '".$_POST["login"]."',
'"
.MD5($_POST["pass"])."', '0')";
$query=mysql_query($text_query);}
if (mysql_errno()!=0){
$text=mysql_errno().":".mysql_error();

$state="input";
}
else
{
$state="reg";
}

PRINT("<TABLE><TR><TD>");
if ($error==1)        PRINT "Введены разные пароли, повторите ввод!";
elseif ($error==2) PRINT "Такой логин уже существует";
elseif ($error==3) PRINT "Такой логин уже существует ";
elseif ($error==4) PRINT "Логин должен содержать не менее 5 символов";
elseif ($error==5) PRINT "Введены разные пароли, повторите ввод ";
PRINT("</TD></TR></TABLE>");
if ($error==0)    {
PRINT("<FORM action=\"index.php?state=reg\" method=\"post\">
<TABLE>
<TR><TD>Имя: </TD><TD>
<INPUT type=\"text\" value=\"\" name=\"lname\"></TD></TR>\n
<TR><TD>Фамилия: </TD><TD>
<INPUT type=\"text\" value=\"\" name=\"fname\"></TD></TR>\n
<TR><TD>Группа: </TD><TD>
<INPUT type=\"text\" value=\"\" name=\"group\"></TD></TR>\n <TR>
<TD>Логин: </TD><TD> <INPUT type=\"text\" value=\"\" name=\"login\">
</TD></TR>\n
<TR><TD>Пароль: </TD><TD>
<INPUT type=\"password\" value=\"\" name=\"pass\"></TD></TR>\n
<TR><TD>Пароль (ещё раз): </TD>
<TD> <INPUT type=\"password\" value=\"\" name=\"pass2\"></TD></TR>\n
<TR><TD align=center colspan=2>
<INPUT type=\"submit\" value=\"Готово\"></TD></TR>
</TABLE>
</FORM>"
);}
else
{
PRINT("<FORM action=\"index.php?state=reg\" method=\"post\">
<TABLE>
<TR><TD>Имя: </TD><TD>
<INPUT type=\"text\" value=\""
.$_POST["lname"]."\" name=\"lname\"></TD></TR>\n
<TR><TD>Фамилия: </TD><TD>
<INPUT type=\"text\" value=\""
.$_POST["fname"]."\" name=\"fname\"></TD></TR>\n
<TR><TD>Группа: </TD><TD>
<INPUT type=\"text\" value=\""
.$_POST["group"]."\" name=\"group\"></TD></TR>\n
<TR><TD>Логин: </TD><TD>
<INPUT type=\"text\" value=\""
.$_POST["login"]."\" name=\"login\"></TD></TR>\n
<TR><TD>Пароль: </TD><TD>
<INPUT type=\"password\" value=\"\" name=\"pass\"></TD></TR>\n
<TR><TD>Пароль (ещё раз): </TD><TD>
<INPUT type=\"password\" value=\"\" name=\"pass2\"></TD></TR>\n
<TR><TD align=center colspan=2>
<INPUT type=\"submit\" value=\"Готово\"></TD></TR>
</TABLE>
</FORM>"
);
}
//форма авторизации
PRINT("<FORM action=\"index.php?state=input\" method=\"post\">
<TABLE>
<TR><TD colspan=2>Авторизация<BR>\n</TD></TR>
<TR><TD>Логин: </TD><TD>
<INPUT type=\"text\" value=\"\" name=\"login\"></TD></TR>\n
<TR><TD>Пароль: </TD><TD>
<INPUT type=\"password\" value=\"\" name=\"pass\">
<INPUT type=\"submit\" value=\"Ок\"></TD></TR>\n
<TR><TD colspan=2 align=center><a href=\"index.php?state=reg\">
Регистрация</a></TD></TR>
</TABLE>
</FORM>"
);
// обработчик авторизации
$query = mysql_query("SELECT Type FROM Users
WHERE login='"
.$_POST["login"]."' AND Password='".MD5($_POST["pass"])."'");
$row = mysql_fetch_assoc($query);
if (mysql_num_rows($query)==0)
$text="Несоответствие логина и пароля: ".MD5($_POST["pass"]);
else $num=0;
if (empty($text))
{
$_SESSION["login"] = $_POST["login"];
$_SESSION["pass"] = $_POST["pass"];
}
if (!empty($text)) PRINT $text;
else
if (isset($_SESSION["login"]))
PRINT("
<TABLE>
<TR><TD><B>Тест</B></TD></TR>
<TR><TD><a href=\"index.php?state=run\">Начать тест</a></TD></TR>
<TR><TD><a href=\"index.php?state=quit\">Выход</a></TD></TR>
<TR><TD></TD></TR>
</TABLE>"
);
 

Когда-то все это было в разных файлах и прекрасно работало, а теперь я не могу правильно организовать переходы между блоками (SQL заваливает ошибками). Если Вас не затруднит, то помогите пожалуйста. Все необходимые файлы прилагаю. Спасибо. Прошу особо не ругаться, так как это наработки.
P.S.
Суть в том, чтобы выделить параметр и на его основе сначала сделать регистрацию, а потом, благодаря кнопке, спокойно перейти к авторизации.

Отредактированно pkhell (20.10.2011 12:53:26)


Прикрепленные файлы:
Attachment Icon www.rar, Размер: 83,364 байт, Скачано: 478

Неактивен

 

#2 23.10.2011 20:29:14

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6757

Re: Регистрация и авторизация одним файлом

FAQ#13?

Неактивен

 

Board footer

Работает на PunBB
© Copyright 2002–2008 Rickard Andersson