Важная информация
Показано с 1 по 10 из 10

Тема: Авторизация пользователя в системе

  1. #1 Авторизация пользователя в системе 
    Новичок
    Регистрация
    06.09.2012
    Сообщений
    1
    Сказал(а) спасибо
    0
    Поблагодарили 0 раз(а) в 0 сообщениях
    Здравствуйте уважаемые пользователи iForum

    У меня есть код авторизации пользователя. Но так как я только начал изучать PHP в нем наверняка что то не работает. Прошу вас отмодерировать данный код.

    PHP Code:
    1. <?php
    2.  
    3. include "$direction/auth.tpl";
    4.  
    5. if ([Ссылки могут видеть только зарегистрированные пользователи. ]($_POST['submit']))
    6. {
    7.   // Получим входные данные
    8.   $login = $_POST ['login'];
    9.   $password = $_POST ['password'];
    10.   $zap = $_POST['zap'];
    11.   // Проверим входящие данные
    12.   // Проверка вводимых данных на корректность
    13.   if(![Ссылки могут видеть только зарегистрированные пользователи. ]("/[A-Za-z0-9]/",$login))
    14.     {
    15.       echo "Проверьте правильность ввода логина!";   // Здесь и далее можно поставить урл на свою страницу ошибки
    16.       [Ссылки могут видеть только зарегистрированные пользователи. ]();
    17.     }
    18.   if(![Ссылки могут видеть только зарегистрированные пользователи. ]("/[A-Za-z0-9]/",$password))
    19.     {
    20.       echo "Проверьте правильность ввода пароля!";
    21.       [Ссылки могут видеть только зарегистрированные пользователи. ]();
    22.     }
    23.   if(!($zap == "yes") && !($zap ==""))
    24.     {
    25.       echo "Ошибка!";
    26.       [Ссылки могут видеть только зарегистрированные пользователи. ] ();
    27.     }
    28.   // Найдём хеш пароля
    29.   $password = [Ссылки могут видеть только зарегистрированные пользователи. ] ($password);
    30.   // Найдём пользователя с введённым логином
    31.   // Составим запрос
    32.   $query = "SELECT login, password FROM accounts WHERE login = '$login'";
    33.   // Произведём запрос
    34.   $ath = [Ссылки могут видеть только зарегистрированные пользователи. ] ($query, $dbconnect);
    35.   // Проверим выполненость запроса
    36.   if (!$ath)
    37.     {
    38.       [Ссылки могут видеть только зарегистрированные пользователи. ] ($dbconnect);
    39.       echo "Ваши логин или пароль не верны!";
    40.       [Ссылки могут видеть только зарегистрированные пользователи. ] ();
    41.     }
    42.   // Извлечём результаты запроса
    43.   $result = [Ссылки могут видеть только зарегистрированные пользователи. ] ($ath);
    44.   // Проверим наличие логина
    45.   if (![Ссылки могут видеть только зарегистрированные пользователи. ]($result ['login']))
    46.     {
    47.       [Ссылки могут видеть только зарегистрированные пользователи. ] ($dbconnect);
    48.       echo "Такого логина не существует!";
    49.       [Ссылки могут видеть только зарегистрированные пользователи. ] ();
    50.     }
    51.   // Если логин есть проверим правильность пароля
    52.   if (!($password == $result ['password']))
    53.     {
    54.   [Ссылки могут видеть только зарегистрированные пользователи. ]();
    55.   $_SESSION["Login"] = "NO";
    56.       [Ссылки могут видеть только зарегистрированные пользователи. ] ($dbconnect);
    57.       echo "Пароль не совпадает с указанным логином!";
    58.       [Ссылки могут видеть только зарегистрированные пользователи. ] ();
    59.     }
    60. else {
    61. [Ссылки могут видеть только зарегистрированные пользователи. ]();
    62.   $_SESSION["Login"] = "YES";
    63.   }
    64.   // Если пароль правильный, то производим запись в куки в зависимости от того, будет запоминание пользователя или нет
    65.   if ($zap == "yes")
    66.     {
    67.       [Ссылки могут видеть только зарегистрированные пользователи. ] ('l','$login', [Ссылки могут видеть только зарегистрированные пользователи. ]() + 172800, '/', '$host');
    68.       [Ссылки могут видеть только зарегистрированные пользователи. ] ('p','$password', [Ссылки могут видеть только зарегистрированные пользователи. ]() + 172800, '/', '$host');
    69.     }
    70.   else
    71.     {
    72.       [Ссылки могут видеть только зарегистрированные пользователи. ] ('l','$login', 0, '/', '$host');
    73.       [Ссылки могут видеть только зарегистрированные пользователи. ] ('p','$password', 0, '/', '$host');
    74.     }
    75.   // Выводим сообщение об успешности залогинивания
    76.   echo "Логин и пароль приняты системой";
    77.   
    78.  
    79.  
    80. // Проверить корректность username и password
    81. if ($_POST["login"] == $admin_login && $_POST["password"] == $admin_password) {
    82. // Если корректны, устанавливаем значение сессии в YES
    83.   [Ссылки могут видеть только зарегистрированные пользователи. ]();
    84.   $_SESSION["Admin"] = "YES";
    85. }
    86. else {
    87. // Если некорректны, устанавливаем сессию в NO
    88.   [Ссылки могут видеть только зарегистрированные пользователи. ]();
    89.   $_SESSION["Admin"] = "NO";   
    90. }
    91. }
    92.  
    93. ?>


    P.S. Проблема скорее всего есть в сессииях. Так как их я практически не знаю
    Ответить с цитированием  
     

  2. #2  
    Разбирающийся Аватар для seisros
    Регистрация
    12.09.2012
    Сообщений
    29
    Сказал(а) спасибо
    0
    Поблагодарили 0 раз(а) в 0 сообщениях
    А х** его знает, сам научным тыком юзай. Ты без ядра мастыриш. Разбей на алгоритмы.
    Ответить с цитированием  
     

  3. #3  
    Модератор Аватар для pingvin
    Регистрация
    11.02.2011
    Сообщений
    389
    Сказал(а) спасибо
    80
    Поблагодарили 75 раз(а) в 48 сообщениях
    А где именно ошибка? На какой строке?
    На этом месте могло быть Ваше "Спасибо"
    Ответить с цитированием  
     

  4. #4  
    Гуру Аватар для Абадябер
    Регистрация
    09.12.2010
    Адрес
    Беларусь, Минск
    Сообщений
    1,219
    Сказал(а) спасибо
    302
    Поблагодарили 176 раз(а) в 144 сообщениях
    Записей в блоге
    5
    А где именно ошибка? На какой строке?
    Ну, нас, собственно, и просят установить это =)
    Дружба-магия-радость!
    Ответить с цитированием  
     

  5. #5  
    Новичок
    Регистрация
    02.08.2012
    Сообщений
    4
    Сказал(а) спасибо
    0
    Поблагодарили 0 раз(а) в 0 сообщениях
    Цитата Сообщение от Backward Посмотреть сообщение
    Здравствуйте уважаемые пользователи iForum

    У меня есть код авторизации пользователя. Но так как я только начал изучать PHP в нем наверняка что то не работает. Прошу вас отмодерировать данный код.

    PHP Code:
    1. <?php
    2.  
    3. include "$direction/auth.tpl";
    4.  
    5. if ([Ссылки могут видеть только зарегистрированные пользователи. ]($_POST['submit']))
    6. {
    7.   // Получим входные данные
    8.   $login = $_POST ['login'];
    9.   $password = $_POST ['password'];
    10.   $zap = $_POST['zap'];
    11.   // Проверим входящие данные
    12.   // Проверка вводимых данных на корректность
    13.   if(![Ссылки могут видеть только зарегистрированные пользователи. ]("/[A-Za-z0-9]/",$login))
    14.     {
    15.       echo "Проверьте правильность ввода логина!";   // Здесь и далее можно поставить урл на свою страницу ошибки
    16.       [Ссылки могут видеть только зарегистрированные пользователи. ]();
    17.     }
    18.   if(![Ссылки могут видеть только зарегистрированные пользователи. ]("/[A-Za-z0-9]/",$password))
    19.     {
    20.       echo "Проверьте правильность ввода пароля!";
    21.       [Ссылки могут видеть только зарегистрированные пользователи. ]();
    22.     }
    23.   if(!($zap == "yes") && !($zap ==""))
    24.     {
    25.       echo "Ошибка!";
    26.       [Ссылки могут видеть только зарегистрированные пользователи. ] ();
    27.     }
    28.   // Найдём хеш пароля
    29.   $password = [Ссылки могут видеть только зарегистрированные пользователи. ] ($password);
    30.   // Найдём пользователя с введённым логином
    31.   // Составим запрос
    32.   $query = "SELECT login, password FROM accounts WHERE login = '$login'";
    33.   // Произведём запрос
    34.   $ath = [Ссылки могут видеть только зарегистрированные пользователи. ] ($query, $dbconnect);
    35.   // Проверим выполненость запроса
    36.   if (!$ath)
    37.     {
    38.       [Ссылки могут видеть только зарегистрированные пользователи. ] ($dbconnect);
    39.       echo "Ваши логин или пароль не верны!";
    40.       [Ссылки могут видеть только зарегистрированные пользователи. ] ();
    41.     }
    42.   // Извлечём результаты запроса
    43.   $result = [Ссылки могут видеть только зарегистрированные пользователи. ] ($ath);
    44.   // Проверим наличие логина
    45.   if (![Ссылки могут видеть только зарегистрированные пользователи. ]($result ['login']))
    46.     {
    47.       [Ссылки могут видеть только зарегистрированные пользователи. ] ($dbconnect);
    48.       echo "Такого логина не существует!";
    49.       [Ссылки могут видеть только зарегистрированные пользователи. ] ();
    50.     }
    51.   // Если логин есть проверим правильность пароля
    52.   if (!($password == $result ['password']))
    53.     {
    54.   [Ссылки могут видеть только зарегистрированные пользователи. ]();
    55.   $_SESSION["Login"] = "NO";
    56.       [Ссылки могут видеть только зарегистрированные пользователи. ] ($dbconnect);
    57.       echo "Пароль не совпадает с указанным логином!";
    58.       [Ссылки могут видеть только зарегистрированные пользователи. ] ();
    59.     }
    60. else {
    61. [Ссылки могут видеть только зарегистрированные пользователи. ]();
    62.   $_SESSION["Login"] = "YES";
    63.   }
    64.   // Если пароль правильный, то производим запись в куки в зависимости от того, будет запоминание пользователя или нет
    65.   if ($zap == "yes")
    66.     {
    67.       [Ссылки могут видеть только зарегистрированные пользователи. ] ('l','$login', [Ссылки могут видеть только зарегистрированные пользователи. ]() + 172800, '/', '$host');
    68.       [Ссылки могут видеть только зарегистрированные пользователи. ] ('p','$password', [Ссылки могут видеть только зарегистрированные пользователи. ]() + 172800, '/', '$host');
    69.     }
    70.   else
    71.     {
    72.       [Ссылки могут видеть только зарегистрированные пользователи. ] ('l','$login', 0, '/', '$host');
    73.       [Ссылки могут видеть только зарегистрированные пользователи. ] ('p','$password', 0, '/', '$host');
    74.     }
    75.   // Выводим сообщение об успешности залогинивания
    76.   echo "Логин и пароль приняты системой";
    77.   
    78.  
    79.  
    80. // Проверить корректность username и password
    81. if ($_POST["login"] == $admin_login && $_POST["password"] == $admin_password) {
    82. // Если корректны, устанавливаем значение сессии в YES
    83.   [Ссылки могут видеть только зарегистрированные пользователи. ]();
    84.   $_SESSION["Admin"] = "YES";
    85. }
    86. else {
    87. // Если некорректны, устанавливаем сессию в NO
    88.   [Ссылки могут видеть только зарегистрированные пользователи. ]();
    89.   $_SESSION["Admin"] = "NO";   
    90. }
    91. }
    92.  
    93. ?>


    P.S. Проблема скорее всего есть в сессииях. Так как их я практически не знаю
    сессию нужно включать сразу после открытия php кода:
    <?php
    session_start();
    .....
    ....
    .....

    ?>
    и включать её стоит только 1 раз, попробуй так

    PHP Code:
    1.  
    2. <?php
    3. [Ссылки могут видеть только зарегистрированные пользователи. ]();
    4.  
    5.     include "$direction/auth.tpl";
    6.  
    7. if ([Ссылки могут видеть только зарегистрированные пользователи. ]($_POST['submit']))
    8. {
    9.   // Получим входные данные
    10.   $login = $_POST ['login'];
    11.   $password = $_POST ['password'];
    12.   $zap = $_POST['zap'];
    13.   // Проверим входящие данные
    14.   // Проверка вводимых данных на корректность
    15.   if(![Ссылки могут видеть только зарегистрированные пользователи. ]("/[A-Za-z0-9]/",$login))
    16.     {
    17.       echo "Проверьте правильность ввода логина!";      // Здесь и далее можно поставить урл на свою страницу ошибки
    18.       [Ссылки могут видеть только зарегистрированные пользователи. ]();
    19.     }
    20.   if(![Ссылки могут видеть только зарегистрированные пользователи. ]("/[A-Za-z0-9]/",$password))
    21.     {
    22.       echo "Проверьте правильность ввода пароля!";
    23.       [Ссылки могут видеть только зарегистрированные пользователи. ]();
    24.     }
    25.   if(!($zap == "yes") && !($zap ==""))
    26.     {
    27.       echo "Ошибка!";
    28.       [Ссылки могут видеть только зарегистрированные пользователи. ] ();
    29.     }
    30.   // Найдём хеш пароля
    31.   $password = [Ссылки могут видеть только зарегистрированные пользователи. ] ($password);
    32.   // Найдём пользователя с введённым логином
    33.   // Составим запрос
    34.   $query = "SELECT login, password FROM accounts WHERE login = '$login'";
    35.   // Произведём запрос
    36.   $ath = [Ссылки могут видеть только зарегистрированные пользователи. ] ($query, $dbconnect);
    37.   // Проверим выполненость запроса
    38.   if (!$ath)
    39.     {
    40.       [Ссылки могут видеть только зарегистрированные пользователи. ] ($dbconnect);
    41.       echo "Ваши логин или пароль не верны!";
    42.       [Ссылки могут видеть только зарегистрированные пользователи. ] ();
    43.     }
    44.   // Извлечём результаты запроса
    45.   $result = [Ссылки могут видеть только зарегистрированные пользователи. ] ($ath);
    46.   // Проверим наличие логина
    47.   if (![Ссылки могут видеть только зарегистрированные пользователи. ]($result ['login']))
    48.     {
    49.       [Ссылки могут видеть только зарегистрированные пользователи. ] ($dbconnect);
    50.       echo "Такого логина не существует!";
    51.       [Ссылки могут видеть только зарегистрированные пользователи. ] ();
    52.     }
    53.   // Если логин есть проверим правильность пароля
    54.   if (!($password == $result ['password']))
    55.     {
    56.       
    57.       $_SESSION["Login"] = "NO";
    58.       [Ссылки могут видеть только зарегистрированные пользователи. ] ($dbconnect);
    59.       echo "Пароль не совпадает с указанным логином!";
    60.       [Ссылки могут видеть только зарегистрированные пользователи. ] ();
    61.     }
    62. else {
    63.     
    64.       $_SESSION["Login"] = "YES";
    65.       }
    66.   // Если пароль правильный, то производим запись в куки в зависимости от того, будет запоминание пользователя или нет
    67.   if ($zap == "yes")
    68.     {
    69.       [Ссылки могут видеть только зарегистрированные пользователи. ] ('l','$login', [Ссылки могут видеть только зарегистрированные пользователи. ]() + 172800, '/', '$host');
    70.       [Ссылки могут видеть только зарегистрированные пользователи. ] ('p','$password', [Ссылки могут видеть только зарегистрированные пользователи. ]() + 172800, '/', '$host');
    71.     }
    72.   else
    73.     {
    74.       [Ссылки могут видеть только зарегистрированные пользователи. ] ('l','$login', 0, '/', '$host');
    75.       [Ссылки могут видеть только зарегистрированные пользователи. ] ('p','$password', 0, '/', '$host');
    76.     }
    77.   // Выводим сообщение об успешности залогинивания
    78.   echo "Логин и пароль приняты системой";
    79.   
    80.  
    81.  
    82.     // Проверить корректность username и password
    83.     if ($_POST["login"] == $admin_login && $_POST["password"] == $admin_password) {
    84.     // Если корректны, устанавливаем значение сессии в YES
    85.     
    86.       $_SESSION["Admin"] = "YES";
    87.     }
    88.     else {
    89.     // Если некорректны, устанавливаем сессию в NO
    90.       
    91.       $_SESSION["Admin"] = "NO";          
    92.     }
    93. }
    94.  
    95. ?>

    если не работает, попробуй мой вариант
    PHP Code:
    1.  
    2. <?php
    3. [Ссылки могут видеть только зарегистрированные пользователи. ]();
    4. /*
    5. Соеденение с базой данных
    6. */
    7.     $db = [Ссылки могут видеть только зарегистрированные пользователи. ]('ХОСТ', 'ИМЯ ПОЛЬЗОВАТЕЛЯ', 'ПАРОЛЬ');
    8. $db2 = [Ссылки могут видеть только зарегистрированные пользователи. ]('ИМЯ БАЗЫ ДАННЫХ',$db);
    9.  
    10. /*
    11. проверка ввода логин
    12. */
    13. if ([Ссылки могут видеть только зарегистрированные пользователи. ]($_POST['login']))
    14. {
    15. $login = $_POST['login'];
    16. if ($login == '')
    17. {
    18. [Ссылки могут видеть только зарегистрированные пользователи. ]("Введите логин!");
    19. }
    20. }
    21. /*
    22. проверка ввода пароля
    23. */
    24. if ([Ссылки могут видеть только зарегистрированные пользователи. ]($_POST['password']))
    25. {
    26. $password=$_POST['password'];
    27. if ($password =='')
    28. {
    29. [Ссылки могут видеть только зарегистрированные пользователи. ]("Введите пароль!");
    30. }
    31. }
    32.  
    33. /*
    34. проверка не знаю чего
    35. */
    36. if(!($zap == "yes") && !($zap ==""))
    37. {
    38. echo "Ошибка!";
    39. [Ссылки могут видеть только зарегистрированные пользователи. ] ();
    40. }
    41.  
    42.   /*
    43. Проверка на существование логина и пароля
    44. */
    45.   $password = [Ссылки могут видеть только зарегистрированные пользователи. ] ($password);
    46.   $query = [Ссылки могут видеть только зарегистрированные пользователи. ]("SELECT * FROM accounts WHERE login = '$login' AND password='$password'");
    47.   $myrow = [Ссылки могут видеть только зарегистрированные пользователи. ]($query);
    48. if([Ссылки могут видеть только зарегистрированные пользователи. ]($myrow['id'])){
    49. [Ссылки могут видеть только зарегистрированные пользователи. ]("Извините, введённый вами логин или пароль неверный.");
    50. }
    51. else {
    52. /*
    53. Если логин и пароль совпадают то добавляем их в сессии
    54. */
    55.      $_SESSION['password']=$myrow['password'];
    56.   $_SESSION['login']=$myrow['login'];
    57.           $_SESSION['id']=$myrow['id'];
    58.   $_SESSION['nick']=$myrow['nick'];
    59.  
    60. /*
    61. Я так тонял $_POST['zap'] запоминание пользователя или нет
    62. */
    63.    if ([Ссылки могут видеть только зарегистрированные пользователи. ]($_POST['zap'])){
    64. [Ссылки могут видеть только зарегистрированные пользователи. ] ("login", $login, [Ссылки могут видеть только зарегистрированные пользователи. ]()+ 9999999);
    65. [Ссылки могут видеть только зарегистрированные пользователи. ] ("password", $password, [Ссылки могут видеть только зарегистрированные пользователи. ]()+ 9999999);}
    66. echo "Вы вошли в систему<meta http-equiv=\"refresh\" content=\"2;URL=index.php\"";
    67. }
    68. ?>

    -------------------------index.php-------------------
    PHP Code:
    1.  
    2. <?php
    3. [Ссылки могут видеть только зарегистрированные пользователи. ]();
    4. $db = [Ссылки могут видеть только зарегистрированные пользователи. ]('ХОСТ', 'ИМЯ ПОЛЬЗОВАТЕЛЯ', 'ПАРОЛЬ');
    5. $db2 = [Ссылки могут видеть только зарегистрированные пользователи. ]('ИМЯ БАЗЫ ДАННЫХ',$db);
    6. $selectUser = [Ссылки могут видеть только зарегистрированные пользователи. ]("SELECT * FROM имя_таблицы WHERE id='$_SESSION[id]'");
    7. $selectUserResult = [Ссылки могут видеть только зарегистрированные пользователи. ]($selectUser);
    8. ?>
    9. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    10. <html xmlns="http://www.w3.org/1999/xhtml">
    11. <head>
    12. <meta http-equiv="Content-Type" content="text/html; charset=windows-1251" />
    13. <title>Документ без названия</title>
    14. </head>
    15. <body>
    16. <?php
    17. if([Ссылки могут видеть только зарегистрированные пользователи. ]($_SESSION['id']) or [Ссылки могут видеть только зарегистрированные пользователи. ]($_SESSION['login'])){
    18. echo "Вы не вошли на сайт";
    19. }
    20. else {
    21. echo "$selectUserResult[login], Вы вошли на сайт";
    22. }
    23. ?>
    24. </body>
    25. </html>
    Последний раз редактировалось vana2012; 25.10.2012 в 02:03.
    Ответить с цитированием  
     

  6. #6  
    Новичок
    Регистрация
    13.01.2013
    Сообщений
    2
    Сказал(а) спасибо
    0
    Поблагодарили 0 раз(а) в 0 сообщениях
    Вот мой код авторизации:

    PHP Code:
    1. <?php
    2. if([Ссылки могут видеть только зарегистрированные пользователи. ]($_POST['submit']))
    3. {
    4. $status = "";
    5. $login = $_POST['login'];
    6. if($login == "")
    7. {
    8. [Ссылки могут видеть только зарегистрированные пользователи. ]($login);
    9. $status .= "<p style='text-align: center;'>Введите <b>логин</b>!</p>\n";
    10. }
    11.  
    12. $pass = $_POST['pass'];
    13. if($pass == "")
    14. {
    15. [Ссылки могут видеть только зарегистрированные пользователи. ]($pass);
    16. $status .= "<p style='text-align: center;'>Введите <b>пароль</b>!</p>\n";
    17. }
    18.  
    19. if([Ссылки могут видеть только зарегистрированные пользователи. ]($login,$pass))
    20. {
    21. $login = [Ссылки могут видеть только зарегистрированные пользователи. ]([Ссылки могут видеть только зарегистрированные пользователи. ]($login,ENT_QUOTES));
    22. $pass = [Ссылки могут видеть только зарегистрированные пользователи. ]($pass);
    23. $row = [Ссылки могут видеть только зарегистрированные пользователи. ]([Ссылки могут видеть только зарегистрированные пользователи. ]("SELECT `id`,`login`,`admin` FROM `users` WHERE `login` = '$login' AND `pass` = '$pass'"));
    24. if($row['id'] != "")
    25. {
    26. $_SESSION['ID'] = $row['id'];
    27. $_SESSION['LOGIN'] = $row['login'];
    28. $_SESSION['ADMIN'] = $row['admin'];
    29. $status .= "<p style='text-align: center;'>Добро пожаловать <b>$row[login]</b></p>\n<meta http-equiv='refresh' content='3;url=/$_GET[ref]'>\n";
    30. $succ = 1;
    31. }
    32. else $status .= "<p style='text-align: center;'>Неверный <b>логин</b>/<b>пароль</b>.</p>\n";
    33. }
    34. }
    35. ?>
    Ответить с цитированием  
     

  7. #7  
    Гуру Аватар для Konstantin Shcherba
    Регистрация
    08.11.2010
    Сообщений
    1,336
    Сказал(а) спасибо
    26
    Поблагодарили 139 раз(а) в 107 сообщениях
    Записей в блоге
    1
    Я бы заменил

    PHP Code:
    1. if($row['id'] != "")


    на

    PHP Code:
    1. if([Ссылки могут видеть только зарегистрированные пользователи. ]($row) > 0)
    Ответить с цитированием  
     

  8. #8  
    Новичок
    Регистрация
    13.01.2013
    Сообщений
    2
    Сказал(а) спасибо
    0
    Поблагодарили 0 раз(а) в 0 сообщениях
    Цитата Сообщение от Backward Посмотреть сообщение
    Здравствуйте уважаемые пользователи iForum

    У меня есть код авторизации пользователя. Но так как я только начал изучать PHP в нем наверняка что то не работает. Прошу вас отмодерировать данный код.

    PHP Code:
    1. <?php
    2.  
    3. include "$direction/auth.tpl";
    4.  
    5. if ([Ссылки могут видеть только зарегистрированные пользователи. ]($_POST['submit']))
    6. {
    7.   // Получим входные данные
    8.   $login = $_POST ['login'];
    9.   $password = $_POST ['password'];
    10.   $zap = $_POST['zap'];
    11.   // Проверим входящие данные
    12.   // Проверка вводимых данных на корректность
    13.   if(![Ссылки могут видеть только зарегистрированные пользователи. ]("/[A-Za-z0-9]/",$login))
    14.     {
    15.       echo "Проверьте правильность ввода логина!";   // Здесь и далее можно поставить урл на свою страницу ошибки
    16.       [Ссылки могут видеть только зарегистрированные пользователи. ]();
    17.     }
    18.   if(![Ссылки могут видеть только зарегистрированные пользователи. ]("/[A-Za-z0-9]/",$password))
    19.     {
    20.       echo "Проверьте правильность ввода пароля!";
    21.       [Ссылки могут видеть только зарегистрированные пользователи. ]();
    22.     }
    23.   if(!($zap == "yes") && !($zap ==""))
    24.     {
    25.       echo "Ошибка!";
    26.       [Ссылки могут видеть только зарегистрированные пользователи. ] ();
    27.     }
    28.   // Найдём хеш пароля
    29.   $password = [Ссылки могут видеть только зарегистрированные пользователи. ] ($password);
    30.   // Найдём пользователя с введённым логином
    31.   // Составим запрос
    32.   $query = "SELECT login, password FROM accounts WHERE login = '$login'";
    33.   // Произведём запрос
    34.   $ath = [Ссылки могут видеть только зарегистрированные пользователи. ] ($query, $dbconnect);
    35.   // Проверим выполненость запроса
    36.   if (!$ath)
    37.     {
    38.       [Ссылки могут видеть только зарегистрированные пользователи. ] ($dbconnect);
    39.       echo "Ваши логин или пароль не верны!";
    40.       [Ссылки могут видеть только зарегистрированные пользователи. ] ();
    41.     }
    42.   // Извлечём результаты запроса
    43.   $result = [Ссылки могут видеть только зарегистрированные пользователи. ] ($ath);
    44.   // Проверим наличие логина
    45.   if (![Ссылки могут видеть только зарегистрированные пользователи. ]($result ['login']))
    46.     {
    47.       [Ссылки могут видеть только зарегистрированные пользователи. ] ($dbconnect);
    48.       echo "Такого логина не существует!";
    49.       [Ссылки могут видеть только зарегистрированные пользователи. ] ();
    50.     }
    51.   // Если логин есть проверим правильность пароля
    52.   if (!($password == $result ['password']))
    53.     {
    54.   [Ссылки могут видеть только зарегистрированные пользователи. ]();
    55.   $_SESSION["Login"] = "NO";
    56.       [Ссылки могут видеть только зарегистрированные пользователи. ] ($dbconnect);
    57.       echo "Пароль не совпадает с указанным логином!";
    58.       [Ссылки могут видеть только зарегистрированные пользователи. ] ();
    59.     }
    60. else {
    61. [Ссылки могут видеть только зарегистрированные пользователи. ]();
    62.   $_SESSION["Login"] = "YES";
    63.   }
    64.   // Если пароль правильный, то производим запись в куки в зависимости от того, будет запоминание пользователя или нет
    65.   if ($zap == "yes")
    66.     {
    67.       [Ссылки могут видеть только зарегистрированные пользователи. ] ('l','$login', [Ссылки могут видеть только зарегистрированные пользователи. ]() + 172800, '/', '$host');
    68.       [Ссылки могут видеть только зарегистрированные пользователи. ] ('p','$password', [Ссылки могут видеть только зарегистрированные пользователи. ]() + 172800, '/', '$host');
    69.     }
    70.   else
    71.     {
    72.       [Ссылки могут видеть только зарегистрированные пользователи. ] ('l','$login', 0, '/', '$host');
    73.       [Ссылки могут видеть только зарегистрированные пользователи. ] ('p','$password', 0, '/', '$host');
    74.     }
    75.   // Выводим сообщение об успешности залогинивания
    76.   echo "Логин и пароль приняты системой";
    77.   
    78.  
    79.  
    80. // Проверить корректность username и password
    81. if ($_POST["login"] == $admin_login && $_POST["password"] == $admin_password) {
    82. // Если корректны, устанавливаем значение сессии в YES
    83.   [Ссылки могут видеть только зарегистрированные пользователи. ]();
    84.   $_SESSION["Admin"] = "YES";
    85. }
    86. else {
    87. // Если некорректны, устанавливаем сессию в NO
    88.   [Ссылки могут видеть только зарегистрированные пользователи. ]();
    89.   $_SESSION["Admin"] = "NO";   
    90. }
    91. }
    92.  
    93. ?>


    P.S. Проблема скорее всего есть в сессииях. Так как их я практически не знаю
    PHP Code:
    1.  
    2. $login = $_POST ['login'];
    3. $password = $_POST ['password'];
    4. $zap = $_POST['zap'];


    Зачем дублировать переменные? Почему сразу не использовать данные из массива $_POST?

    PHP Code:
    1.  
    2. [Ссылки могут видеть только зарегистрированные пользователи. ]("/[A-Za-z0-9]/",$login)

    Эта регулярка только для примера, или реальное ограничение только анлийские символы и цифры? Вполне нормальный логин vasya_petya. Не говоря уже о "безопасном пароле", типа Abs_123!@#

    PHP Code:
    1.  
    2. if(!($zap == "yes") && !($zap ==""))

    это вообще жесть)

    PHP Code:
    1.  
    2. $query = "SELECT login, password FROM accounts WHERE login = '$login'";


    SQL Иньекции нынче отменили?

    PHP Code:
    1.  
    2. $password = [Ссылки могут видеть только зарегистрированные пользователи. ] ($password);

    Лучше использвоать crypt(), ну и хеш без соли бесполезен.

    PHP Code:
    1.  
    2.       [Ссылки могут видеть только зарегистрированные пользователи. ] ($dbconnect);
    3.       echo "Ваши логин или пароль не верны!";
    4.       [Ссылки могут видеть только зарегистрированные пользователи. ] ();

    По завершении работы скрипта php сам закрывает все соединения с БД, смысл закрывать его на доли секунды раньше, не доверяете серверу?

    PHP Code:
    1.  
    2. if ($_POST["login"] == $admin_login && $_POST["password"] == $admin_password)

    Логин и пароль админа берется из переменных? По идее надо держать в бд данные о пользователях типа id login password и роль role. В дальнейшем после успешной авторизации проверять только роль, допустим если роль админа то туда, если нет то сюда. Ну и спомощью роли можно ограничить доступ к страницам.


    Ну и как уже сказали выше открывать сессию нужно только раз в самом начале скрипта прямо после <?php

    Надеюсь мои комментарии помогут в начинаниях)
    Ответить с цитированием  
     

  9. #9  
    Новичок
    Регистрация
    13.01.2013
    Сообщений
    2
    Сказал(а) спасибо
    0
    Поблагодарили 0 раз(а) в 0 сообщениях
    Цитата Сообщение от admin Посмотреть сообщение
    Я бы заменил

    PHP Code:
    1. if($row['id'] != "")


    на

    PHP Code:
    1. if([Ссылки могут видеть только зарегистрированные пользователи. ]($row) > 0)
    Возможно. Но насколько велика разница? Ну видно что ваш вариант на один символ меньше. count() логически будет пересчитывать все подрят, а мой вариант сразуже проверит переменную. По логике вещей мой вариант возьмет меньше памяти чем ваш. Ну или разубедите меня.
    Ответить с цитированием  
     

  10. #10  
    Гуру Аватар для Konstantin Shcherba
    Регистрация
    08.11.2010
    Сообщений
    1,336
    Сказал(а) спасибо
    26
    Поблагодарили 139 раз(а) в 107 сообщениях
    Записей в блоге
    1
    Если пара логин/пароль неверная, то mysql_fetch_assoc вернет пустой результат.
    Соответственно никакого $row['id'] не будет существовать, а вы его сравниваете.
    Ответить с цитированием  
     

Информация о теме
Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Похожие темы

  1. Joomla - вывести имя пользователя
    от Ultra_Dragonoid в разделе Системы управления контентом
    Ответов: 3
    Последнее сообщение: 24.03.2015, 16:24
  2. Время пользователя
    от Ultra_Dragonoid в разделе PHP
    Ответов: 4
    Последнее сообщение: 13.01.2013, 15:19
Ваши права
  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •