ФорумПрограммированиеPHP для идиотов → Авторизация пользователей

Авторизация пользователей

  • sen4ik

    Сообщения: ? Репутация: N Группа: Адекваты

    Spritz 19 сентября 2010 г. 21:28

    Здравы будьте бояре
    Новый человек я в скриптописании
    На суд честной выношу скрипт для авторизации пользователей
    Что не так?
    Коменты в скрипте на ином языке писаны - уж не осудите… Писал для американцев, коментил как мог…

    <?php

    session_start();

    //set posted data from login input to variable $login

    if (isset($_POST[&#39;login&#39;])) { $login = $_POST[&#39;login&#39;]; if ($login == &#39;&#39;) { unset($login);} }

    //set entered password to var $password

    if (isset($_POST[&#39;password&#39;])) { $password=$_POST[&#39;password&#39;]; if ($password ==&#39;&#39;) { unset($password);} }

    //if user didn&#39;t enter login and password then give an error

    if (empty($login) or empty($password))

    {

    exit (&quot;<br><br><br><br><center><font color=red>You entered not all information, go back and try again!</font>

    <br><a href=&#39;index.php&#39;>Back to Main</a></center>&quot;);

    }



    //if user exist then wew check login and password for special characters

    $login = stripslashes($login);

    $login = htmlspecialchars($login);

    $login = str_replace(&quot;&#39;&quot;,&quot;&quot;,$login);

    $password = stripslashes($password);

    $password = htmlspecialchars($password);

    //trim spaces

    $login = trim($login);

    $password = trim($password);



    // connect to database

    include (&quot;connect.php&quot;);// connect.php should be in one folder with index.php file



    $str=&quot;SELECT * FROM users WHERE login=&#39;$login&#39;&quot;;

    $result = mysql_query(&quot;SELECT * FROM users WHERE login=&#39;$login&#39;&quot;,$link);

    $myrow = mysql_fetch_array($result);



    if (empty($myrow[&#39;password&#39;]))

    {

    //if user with login does not exist

    exit (&quot;<br><br><br><br><center><font color=red>Sorry! Login and Password that you entered are incorrect!</font>

    <br><a href=&#39;index.php&#39;>Back to Main</a></center>&quot;);

    }

    else {

    //if user exists then match passwords

    if ($myrow[&#39;password&#39;]==$password) {

    //if passwords match then start session

    $_SESSION[&#39;login&#39;]=$myrow[&#39;login&#39;];

    $_SESSION[&#39;agent_name&#39;]=$myrow[&#39;name&#39;];

    $_SESSION[&#39;agent_id&#39;]=$myrow[&#39;id&#39;];

    $_SESSION[&#39;id&#39;]=md5(&#39;time()&#39;.&#39;$myrow[id]&#39;);

    $_SESSION[&#39;auth&#39;]=$myrow[&#39;rights&#39;];

    $_SESSION[&#39;office&#39;]=$myrow[&#39;office&#39;];



    if ($_SESSION[&#39;auth&#39;]==&quot;admin&quot;){

    // if user rights in db is admin

    exit(Header(&quot;Location:admin_control_panel.php&quot;));

    }



    else {

    // if user rights in db is user

    exit(Header(&quot;Location:user_control_panel.php&quot;));

    }

    }



    else {

    //if passwords didn&#39;t match

    exit (&quot;Sorry! Password and Login that you entered are incorrect!<br><a href=&#39;index.php&#39;>Back to Main</a>&quot;);

    }

    }

    ?>
  • technobulka

    Сообщения: 4552 Репутация: N Группа: Джедаи

    Spritz 19 сентября 2010 г. 21:35, спустя 7 минут 10 секунд

    if (isset($_POST[&#39;login&#39;]) &amp;&amp; isset($_POST[&#39;password&#39;]))
    {
    $login = mysql_real_escape_string($_POST[&#39;login&#39;]);
    $password = md5($_POST[&#39;password&#39;]);

    // делаем запрос к БД
    // и ищем юзера с таким логином и паролем

    $query = &quot;SELECT `id`
    FROM `users`
    WHERE `login`=&#39;{$login}&#39; AND `password`=&#39;{$password}&#39;
    LIMIT 1&quot;;
    $sql = mysql_query($query) or die(mysql_error());

    // если такой пользователь нашелся
    if (mysql_num_rows($sql) == 1) {
    // то мы ставим об этом метку в сессии (допустим мы будем ставить ID пользователя)

    $row = mysql_fetch_assoc($sql);
    $_SESSION[&#39;user_id&#39;] = $row[&#39;id&#39;];

    // не забываем, что для работы с сессионными данными, у нас в каждом скрипте должно присутствовать session_start();
    }
    else {
    die(&#39;Такой логин с паролем не найдены в базе данных. И даём ссылку на повторную авторизацию.&#39;);
    }
    }

    элементарнейшая авторизация, без лишних взмахов ушами)) взято тут - http://pyha.ru/articles/php/auth/
    Высокоуровневое абстрактное говно
  • LIFF

    Сообщения: 188 Репутация: N Группа: Адекваты

    Spritz 20 сентября 2010 г. 2:06, спустя 4 часа 31 минуту 2 секунды

    sen4ik, сильно сомневаюсь что это творение твоих рук…

    Особенно нравится..



    if (isset($_POST[&#39;login&#39;])) { $login = $_POST[&#39;login&#39;]; if ($login == &#39;&#39;) { unset($login);} }

    //set entered password to var $password

    if (isset($_POST[&#39;password&#39;])) { $password=$_POST[&#39;password&#39;]; if ($password ==&#39;&#39;) { unset($password);} }

    //if user didn&#39;t enter login and password then give an error

    if (empty($login) or empty($password))



    ..
  • Givi

    Сообщения: ? Репутация: N Группа: Адекваты

    Spritz 20 сентября 2010 г. 2:51, спустя 44 минуты 27 секунд

    мдя… полная лажа + поддержу LIFFа и соглашусь, что код не похож на авторский. Хотя это и не говорит в сторону качества кода и его оформления (оно тоже УГ).
  • Абырвалг

    Сообщения: 6477 Репутация: N Группа: Джедаи

    Spritz 20 сентября 2010 г. 2:55, спустя 4 минуты 42 секунды

    sen4ik, комментарии в стиле Капитана Очевидности писать не стоит.

    $login = stripslashes($login);

    $login = htmlspecialchars($login);

    $login = str_replace(&quot;&#39;&quot;,&quot;&quot;,$login);

    все это в корне неверно. В начале скрипта нужно проверить, включены ли magic quotes. Если включены - рекурсивно обработать get, post, cookie функцией stripslashes

    а потом перед запросами mysql_real_escape или что-то в этом роде
  • sen4ik

    Сообщения: ? Репутация: N Группа: Адекваты

    Spritz 20 сентября 2010 г. 3:37, спустя 41 минуту 14 секунд


    sen4ik, сильно сомневаюсь что это творение твоих рук…
    Особенно нравится..



    мдя… полная лажа + поддержу LIFFа и соглашусь, что код не похож на авторский. Хотя это и не говорит в сторону качества кода и его оформления (оно тоже УГ).


    конечно там посмотрел, так почитал, так скопипастил - и получилось то что видите

    Stasovsky пасиб за код… постараюсь упростить свой

    Спасибо всем,.. приезжайте в гости.
  • phpdude

    Сообщения: 26617 Репутация: N Группа: в ухо

    Spritz 20 сентября 2010 г. 3:45, спустя 8 минут 29 секунд

    приезжайте в гости.

    ломать кости)
    Сапожник без сапог

Пожалуйста, авторизуйтесь, чтобы написать комментарий!