|
|
|
| Пытаюсь сделать проверку аутентификации для входа пользователей в тестирующую систему. Определение привилегий и, соответственно, вход на определенную привилегиями страницу осуществляется не только по логину и паролю, но и по СТАТУСУ пользователя (это важно!).
Помогите, пожалуйста, доработать скрипт до рабочего состояния...
<?
/*вход зарегистрированных пользователей*/
$db= mysql_connect('localhost','root'); /*установление соединения*/
mysql_select_db('VUOKSa-1');/*выбор базы для работы*/
function enter ($login,$password,$status)
{
$login=@$_POST['Login']; /*передача данных*/
$password=@$_POST['Password']; /*передача данных*/
$status=@$_POST['Status'];/*передача данных*/
$sql= "select Login,Password,Status from Users";/*запрос на полный выбор из таблицы Users*/
$result= mysql_query($sql); /*выполнение запроса*/
while ($row=mysql_fetch_array($result)) /*массив, сравнивающий введеные логин
и пароль и сравнивающий полученные значения с хранящимися в таблице;
в случае успеха пользователь входит в систему, в противном случае - нет*/
{
if ($row['Login']==$login and $row['Password']==@md5($password) and $row['Status']==$status)
{
$enter=1;
$login=$row['Login'];
$status=$row['Status'];
}
}
if (isset($enter) and $status=='Преподаватель')
{
print "В данном проекте вы имеете статус 'Преподаватель'.
Если вы желаете попасть в редактор тестов, то нажмите кнопку:
<table><tr><td><form action='/teatcher/index.php' method='POST'>
<input type='hidden' name='Login' value='$login'>
<input type='submit' value='Перейти'> </form></td></tr></table><br>";
}
elseif (isset($enter) and $status=='Студент')
{
print "В данном проекте вы имеете статус 'Студент'.
Если вы желаете пройти тест, то нажмите кнопку:
<table><tr><td><form action='/student/index.php' method='POST'>
<input type='hidden' name='Login' value='$login'>
<input type='submit' value='Перейти'> </form></td></tr></table><br>";
}
else
{
print "<hr>"."<br>"."<br>"."<center>"."Вы не можете войти в систему!"."</center>";
}
}
if (isset ($_POST['ent']))
{
print '<form action="main.php" method="post" name="ent">
<center><b>Login:</b> <input type="text" name="Login"></center>
<center><b>Password:</b> <input type="text" name="Password"></center>
<center><input type="hidden" name="interface" value="enter"></center><br>
<center><input type="submit" value="Войти"></center><br>
</form>';
}
if (@$_POST['interface']=="enter")
{
enter($_POST['Login'],$_POST['Password'],@$_POST['Status']);
}
mysql_close();/*закрытие базы*/
?>
<form action="main.php" method="post" name="ent">
<center><b>Login:</b> <input type="text" name="Login"></center>
<center><b>Password:</b> <input type="text" name="Password"></center>
<center><input type="hidden" name="interface" value="enter"></center><br>
<center><input type="submit" value="Войти"></center><br>
</form>
</body>
</html>
|
| |
|
|
|
|
|
|
|
для: do_cool
(02.12.2006 в 09:00)
| | А чем существующий скрипт не устраивает? Он не работает как надо или выводит какие-то сообщения об ошибках? | |
|
|
|
|
|
|
|
для: cheops
(02.12.2006 в 13:24)
| | >А чем существующий скрипт не устраивает? Он не работает как надо или выводит какие-то сообщения об ошибках?
Данный скрипт не выкидывает на нужную страницу при проверке логина, пароля и статуса пользователя. Остаюсь на этой же странице и при этом выводится сообщение "Вы не можете войти в систему!". Почему-то срабатывает только данная часть скрипта...:
else
{
print "<hr>"."<br>"."<br>"."<center>"."Вы не можете войти в систему!"."</center>";
}
|
| |
|
|
|
|
|
|
|
для: do_cool
(02.12.2006 в 09:00)
| | А зачем изначально указывается параметр "статус", не проще его извлечь из базы? | |
|
|
|
|
|
|
|
для: Гость
(02.12.2006 в 17:22)
| | Нет, не проще, система должна проверять статус, а не извлекать его | |
|
|
|
|
автор: Serrrgio (04.12.2006 в 17:14) |
|
|
для: do_cool
(02.12.2006 в 09:00)
| | скрипт нужно переписывать с нуля а не дорабатывать...
во-первых не вижу где в форме передается "статус"?
2-х зачем брать всю базу и потом ее перебирать в пхп?
и при вашей авторизации, вообще пароль не нужен, что мне мешает сделать POST запрос по адресу, к примеру, /teatcher/index.php с параметром name='Login' value='Директор'?
чтобы все заработало - нужно почитать про системы авторизации на пхп, сесть и написать все заново с использованием сессий (и без всяких функций внутри скрипта, помоему она "enter" здесь не нужна )
примерно порядок такой:
(сначала нужно добавить в форму поле input type="text" name="Status")
берем логин, пароль, статус
делаем запрос к базе
$sql="select status where login='".addslashes($login)."' AND Passwod='".md5($password)."' AND status='".addslashes($status)."'"
потом если mysql_num_rows($result)==1 то
стартуем сессию в которой регистрируем перемнную status со значением из запроса и сразу делаем переход на teatcher/index.php или /student/index.php
else
print "<hr>"."<br>"."<br>"."<center>"."Вы не можете войти в систему!"."</center>";
а в teatcher/index.php или /student/index.php проверяем на наличие в сесси статуса...
примерно так.
[поправлено модератором] | |
|
|
|
|
|
|
|
для: Serrrgio
(04.12.2006 в 17:14)
| | Огромное спасибо, попробую. :))) | |
|
|
|