За последние 24 часа нас посетили 20550 программистов и 1601 робот. Сейчас ищут 1137 программистов ...

Форма Авторизации

Тема в разделе "PHP для новичков", создана пользователем Manvel, 15 янв 2015.

  1. p@R@dox 55RU

    p@R@dox 55RU Зэк
    [ БАН ]

    С нами с:
    21 май 2014
    Сообщения:
    1.358
    Симпатии:
    7
    Адрес:
    с планеты Ялмез
    нет. $login <- php переменная, $_POST['login'] <- переменная которая приходит после отправки формы ;)
     
  2. Manvel

    Manvel Новичок

    С нами с:
    10 янв 2015
    Сообщения:
    48
    Симпатии:
    0
    так тогда мой вопрос принадлежит этому "SELECT * FROM `users` WHERE `login` = '$login'" ? `login` = '$login ?
     
  3. Fell-x27

    Fell-x27 Суперстар
    Команда форума Модератор

    С нами с:
    25 июл 2013
    Сообщения:
    12.156
    Симпатии:
    1.770
    Адрес:
    :сердА
    Что я и говорил в самом начале, бинго :)
    А вот тут уже тебе надо почитать про экранирование данных и SQL-инъекции. Иначе, если использовать такие запросы, можно будет очень легко тебя взломать.
     
  4. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    7.794
    Симпатии:
    1.331
    Адрес:
    Лень
    Код (PHP):
    1. <?php
    2. define("CMD_SQLITE", 666);
    3.  
    4. require ("{$_SERVER['DOCUMENT_ROOT']}/include/core.php");
    5.  
    6. if ($_POST['login'] && 
    7.     mb_strlen(iconv("UTF-8", "UTF-8", $_POST['login'])) <= 10 && 
    8.     mb_strlen(iconv("UTF-8", "UTF-8", $_POST['login'])) >= 3 &&
    9.     $_POST['password'] && 
    10.     mb_strlen(iconv("UTF-8", "UTF-8", $_POST['password'])) <= 10 && 
    11.     mb_strlen(iconv("UTF-8", "UTF-8", $_POST['password'])) >= 3 &&
    12.     strtoupper($_POST['password']) != strtoupper($_POST['login']) && 
    13.     isset($_POST['submit']) &&
    14.     preg_match(functions::preg_sim(2), $_POST['login'].$_POST['password']) == 0)
    15.     {
    16.     
    17.     $res = SQL::Q("SELECT * FROM twwk_users WHERE upper(login) = upper('".$_POST['login']."') AND password = '".md5(strtoupper($_POST['password']))."'")->fetch(SQLITE_ASSOC);
    18.     if ($res[id]) {
    19.         SQL::Q("DELETE FROM twwk_ban_ip WHERE date_unban < '".time()."'");
    20.         SQL::Q("UPDATE twwk_users SET visit = '".time()."' WHERE id = '".$res[id]."'");
    21.         $user_ban = SQL::Q("SELECT * FROM twwk_ban_ip WHERE ip = '".cmdCore::$ip."' OR name = '".$res[name]."' AND date_unban > '".time()."'")->fetch(SQLITE_ASSOC);
    22.         if ($user_ban[name]) 
    23.         {
    24.     CONTENT::getError('<span style="color:red;">Уважаемый '.(($user_ban[name] == $name)?$user_ban[name].', вы были забанены':$res[name].', ваш аккаунт '.$user_ban[name].' был заблокирован').' за: '.$user_ban[messages].', до: '.date('d F Y \в H:i:s', $user_ban[date_unban]).', с уважением администрация сайта!</span>');
    25.         } else {
    26.             SQL::Q("DELETE FROM twwk_remember WHERE num_user = '".$res[id]."'");
    27.             cmdCore::session($res[id]);
    28.             if (array_key_exists ('mem', $_POST)) {
    29.                 $hash = md5($login.$passw.cmdCore::$ip);
    30.                 SQL::Q("INSERT INTO twwk_remember('num_user', 'hash', 'time') VALUES ('".$res[id]."', '$hash', '".(time() + 3600*24*30)."')");
    31.                 setcookie('REM', $hash, time() + 3600*24*30);
    32.             }
    33.             header ("Location: http://". SITE_URL);
    34.         }
    35.     } else {
    36.         header ("Location: http://". SITE_URL ."/login.php?e=1&login=".$_POST['login']);
    37.     }
    38. } else {
    39.     CONTENT::CONTAINER('<b>Авторизация</b>',FALSE,
    40.         '<form action="login.php" method="POST">'."\n".
    41.         ((preg_match(functions::preg_sim(2), $_POST['login'].$_POST['password']) == 1)?
    42.             '<span style="color:red;">Не вводите спец символы в поле ввода.</span><br>':'')."\n".
    43.         (((mb_strlen(iconv("UTF-8", "UTF-8", $_POST['login'])) > 10 || mb_strlen(iconv("UTF-8", "UTF-8", $_POST['login'])) < 3 || mb_strlen(iconv("UTF-8", "UTF-8", $_POST['password'])) > 10 || mb_strlen(iconv("UTF-8", "UTF-8", $_POST['login'])) < 3) && $_POST['submit'])?
    44.             '<span style="color:red;">Вводите данные не менее 3 и не более 10 латинских символов!</span><br>':'')."\n".
    45.         ((isset($_GET['e']))?
    46.             '<span style="color:red;">Вы ввели неправильный логин или пароль!</span><br>':'')."\n".
    47.         '<table border="0" cellpadding="0" cellspacing="0">'."\n".
    48.         '<tr><td width="130">Логин:</td><td><input type="text" class="text" name="login" size="42" maxlength="10" value="'.substr($_REQUEST['login'], 0, 10).'">'."\n".
    49.         (((strtoupper($_POST['login']) == strtoupper($_POST['password'])) && $_POST['login'] && $_POST['submit'])?
    50.             '<br><span style="color:red;">Логин не должен совпадать с паролем!</span>':'')."\n".
    51.         ((empty($_POST['login']) && $_POST['submit'])?
    52.             '<br><span style="color:red;">Вы забыли ввести логин</span>':'')."\n".
    53.         '</td></tr>'."\n".
    54.         '<tr><td width="130">Пароль:</td><td><input type="password" class="text" name="password" size="42" maxlength="10">'."\n".
    55.         ((empty($_POST['password']) && $_POST['submit'])?
    56.             '<br><span style="color:red;">Вы забыли ввести пароль</span>':'')."\n".
    57.         '</td></tr>'."\n".
    58.         '<tr><td width="130"><input type="checkbox" name="mem" value="1" checked="checked"> Запомнить меня</td></tr>'."\n".
    59.         '<tr><td width="130"><input type="submit" class="button" name="submit" value="Вход"></td></tr>'."\n".
    60.         '<tr>'."\n".
    61.         '<td width="130"><input type="button" class="button" value="Забыли пароль?" onclick="location.href=\'./users/forgot.php?login='.substr($_REQUEST['login'], 0, 10).'\'"></td>'."\n".
    62.         '<td><span style="color: #00FF00;">'.substr($_REQUEST['login'], 0, 20).'</span></td>'."\n".
    63.         '</tr>'."\n".
    64.         '</table>'."\n".
    65.         '</form>'."\n"
    66.     );
    67. }
    68.  
    69. require (DIR_SYSTEM .'views/template.php'); 
     
  5. Fell-x27

    Fell-x27 Суперстар
    Команда форума Модератор

    С нами с:
    25 июл 2013
    Сообщения:
    12.156
    Симпатии:
    1.770
    Адрес:
    :сердА
    Верхнее ограничение на длину пароля в 10 символов - сакс. У меня 20-символьные пароли, что мне теперь делать?
     
  6. Manvel

    Manvel Новичок

    С нами с:
    10 янв 2015
    Сообщения:
    48
    Симпатии:
    0
    а если ограничение написать в создание таблици ?

    Добавлено спустя 2 минуты 28 секунд:
    и еше как делать чтоб после входа исчезалось форма входа а то оно останится а верху работает if
     
  7. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    7.794
    Симпатии:
    1.331
    Адрес:
    Лень
    *й забить)
     
  8. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    а нафига вообще ограничивать пароль? один хрен же хеш хранить только
     
  9. p@R@dox 55RU

    p@R@dox 55RU Зэк
    [ БАН ]

    С нами с:
    21 май 2014
    Сообщения:
    1.358
    Симпатии:
    7
    Адрес:
    с планеты Ялмез
    очевидно, для простоты и удобство набора и запоминания :)
     
  10. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    Фигасе очевидно. а мне вот не очевидно. сайту не надо соваться в мою голову со своим уставом. у меня пароль 20 символов и я его запомнил легко. зачем ограничивать? =)
     
  11. Fell-x27

    Fell-x27 Суперстар
    Команда форума Модератор

    С нами с:
    25 июл 2013
    Сообщения:
    12.156
    Симпатии:
    1.770
    Адрес:
    :сердА
    Обернуть в проверку наличия самого $_POST, мол, если $_POST пустой, то, стало быть, код, который на нем завязан, не должен будет работать.
     
  12. mkramer

    mkramer Суперстар
    Команда форума Модератор

    С нами с:
    20 июн 2012
    Сообщения:
    8.585
    Симпатии:
    1.762
    Manvel, введён ли пароль и логин надо проверять до того, как делать запрос в базу данных. После запроса надо проверить вернул ли он что-нибудь, и сравнить пароли.

    Может вам поискать сайты и книги про php на вашем родном языке? Если вы так пишите, то с чтением тоже проблемы. Вообще, странно. Много работаю с заказчиками из Азербайджана, и у них нет никаких проблем с русским языком...
     
  13. artoodetoo

    artoodetoo Суперстар
    Команда форума Модератор

    С нами с:
    11 июн 2010
    Сообщения:
    11.115
    Симпатии:
    1.244
    Адрес:
    там-сям
    ой, зря ты это сказал!

    Добавлено спустя 6 минут 32 секунды:
    надо хранить не пароль, а хеш от пароля, а он не зависит от длины пароля!
    хеш гарантированно не больше небольшого N (зависит от конкретной функции)

    Добавлено спустя 2 минуты 28 секунд:
    изменить алгоритм. тебе тут сто раз сказали: у тебя странный алгоритм.
    попробуй начать не с программы, а с описания простыми словами:
    "если пользователь еще не вошел, показать форму. если данные отправлены, то выполнить проверку…" и т.д.
    надо сначала понять, потом делать.
     
  14. p@R@dox 55RU

    p@R@dox 55RU Зэк
    [ БАН ]

    С нами с:
    21 май 2014
    Сообщения:
    1.358
    Симпатии:
    7
    Адрес:
    с планеты Ялмез
    видимо в курсе.... :D

    Манел, прислушайся к парням - дельные советы дают :)
     
  15. Manvel

    Manvel Новичок

    С нами с:
    10 янв 2015
    Сообщения:
    48
    Симпатии:
    0
    оки спс всем