Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Проверка аутентификации пользователей
 
 автор: do_cool   (02.12.2006 в 09:00)   письмо автору
 
 

Пытаюсь сделать проверку аутентификации для входа пользователей в тестирующую систему. Определение привилегий и, соответственно, вход на определенную привилегиями страницу осуществляется не только по логину и паролю, но и по СТАТУСУ пользователя (это важно!).
Помогите, пожалуйста, доработать скрипт до рабочего состояния...


<?
/*вход зарегистрированных пользователей*/

$dbmysql_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*/
$resultmysql_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>

   
 
 автор: cheops   (02.12.2006 в 13:24)   письмо автору
 
   для: do_cool   (02.12.2006 в 09:00)
 

А чем существующий скрипт не устраивает? Он не работает как надо или выводит какие-то сообщения об ошибках?

   
 
 автор: do_cool   (04.12.2006 в 11:23)   письмо автору
 
   для: cheops   (02.12.2006 в 13:24)
 

>А чем существующий скрипт не устраивает? Он не работает как надо или выводит какие-то сообщения об ошибках?

Данный скрипт не выкидывает на нужную страницу при проверке логина, пароля и статуса пользователя. Остаюсь на этой же странице и при этом выводится сообщение "Вы не можете войти в систему!". Почему-то срабатывает только данная часть скрипта...:


else 
{
print "<hr>"."<br>"."<br>"."<center>"."Вы не можете войти в систему!"."</center>";
}

   
 
 автор: Гость   (02.12.2006 в 17:22)   письмо автору
 
   для: do_cool   (02.12.2006 в 09:00)
 

А зачем изначально указывается параметр "статус", не проще его извлечь из базы?

   
 
 автор: do_cool   (04.12.2006 в 11:24)   письмо автору
 
   для: Гость   (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 проверяем на наличие в сесси статуса...
примерно так.

[поправлено модератором]

   
 
 автор: do_cool   (05.12.2006 в 08:43)   письмо автору
 
   для: Serrrgio   (04.12.2006 в 17:14)
 

Огромное спасибо, попробую. :)))

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования