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

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

  • sen4ik

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

    Spritz 20 сентября 2010 г. 5:28

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

    <?php

    session_start();

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

    if (isset($_POST['login'])) { $login = $_POST['login']; if ($login == '') { unset($login);} }

    //set entered password to var $password

    if (isset($_POST['password'])) { $password=$_POST['password']; if ($password =='') { unset($password);} }

    //if user didn't enter login and password then give an error

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

    {

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

    <br><a href='index.php'>Back to Main</a></center>");

    }



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

    $login = stripslashes($login);

    $login = htmlspecialchars($login);

    $login = str_replace("'","",$login);

    $password = stripslashes($password);

    $password = htmlspecialchars($password);

    //trim spaces

    $login = trim($login);

    $password = trim($password);



    // connect to database

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



    $str="SELECT * FROM users WHERE login='$login'";

    $result = mysql_query("SELECT * FROM users WHERE login='$login'",$link);

    $myrow = mysql_fetch_array($result);



    if (empty($myrow['password']))

    {

    //if user with login does not exist

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

    <br><a href='index.php'>Back to Main</a></center>");

    }

    else {

    //if user exists then match passwords

    if ($myrow['password']==$password) {

    //if passwords match then start session

    $_SESSION['login']=$myrow['login'];

    $_SESSION['agent_name']=$myrow['name'];

    $_SESSION['agent_id']=$myrow['id'];

    $_SESSION['id']=md5('time()'.'$myrow[id]');

    $_SESSION['auth']=$myrow['rights'];

    $_SESSION['office']=$myrow['office'];



    if ($_SESSION['auth']=="admin"){

    // if user rights in db is admin

    exit(Header("Location:admin_control_panel.php"));

    }



    else {

    // if user rights in db is user

    exit(Header("Location:user_control_panel.php"));

    }

    }



    else {

    //if passwords didn't match

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

    }

    }

    ?>
  • technobulka

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

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

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

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

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

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

    $row = mysql_fetch_assoc($sql);
    $_SESSION['user_id'] = $row['id'];

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

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

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

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

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

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



    if (isset($_POST['login'])) { $login = $_POST['login']; if ($login == '') { unset($login);} }

    //set entered password to var $password

    if (isset($_POST['password'])) { $password=$_POST['password']; if ($password =='') { unset($password);} }

    //if user didn't enter login and password then give an error

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



    ..
  • Givi

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

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

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

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

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

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

    $login = stripslashes($login);

    $login = htmlspecialchars($login);

    $login = str_replace("'","",$login);

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

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

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

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


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



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


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

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

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

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

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

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

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

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