За последние 24 часа нас посетил 16531 программист и 1646 роботов. Сейчас ищут 1559 программистов ...

Помогите, пожалуйста!

Тема в разделе "Сделайте за меня", создана пользователем vaniok, 9 фев 2015.

  1. vaniok

    vaniok Новичок

    С нами с:
    9 фев 2015
    Сообщения:
    1
    Симпатии:
    0
    Всем доброго времени суток!
    Прошу помощи в коде. Дело в том, что после проверки всех данных, хоть, например, и длинна пароля/логина не соответствует условию, регистрация все-равно проходит. А пользователь видит сообщение об ошибке.
    Подскажите пожалуйста, как правильно сделать, чтоб при невыполнении условия - регистрация не проходила.
    Заранее спасибо!

    Код (Text):
    1. <?php
    2.     session_start();
    3.     ?>
    4. <?php require_once("includes/connection.php"); ?>
    5. <?php include("includes/header.php"); ?>
    6.  
    7. <?php
    8.  
    9.     if(isset($_SESSION["session_username"])){
    10.     // вывод "Session is set"; // в целях проверки
    11. echo '<script type="text/javascript">
    12. window.location = "intropage.php"
    13.  
    14. </script>';
    15.     }
    16.    
    17.     if(isset($_POST["register"])){
    18.    
    19.     if(!empty($_POST['full_name']) && !empty($_POST['email']) && !empty($_POST['username']) && !empty($_POST['password'])) {
    20.   $full_name=$_POST['full_name'];
    21.     $email=$_POST['email'];
    22.  $username=$_POST['username'];
    23.  $password=$_POST['password'];
    24.  $query=mysql_query("SELECT * FROM usertbl WHERE username='".$username."'");
    25.   $numrows=mysql_num_rows($query);
    26. if($numrows==0)
    27.    {
    28.     $sql="INSERT INTO usertbl
    29.   (full_name, email, username,password)
    30.     VALUES('$full_name','$email', '$username', '$password')";
    31.   $result=mysql_query($sql);
    32.  if($result){
    33.     $message = "Вы были успешно зарегистрированы! Теперь необходимо войти.";
    34. } else {
    35.  $message = "Ошибка при отправке регистрационных данных";
    36.   }
    37.      }else {
    38.     $message = "Этот логин уже используется. Пожалуйста, выберите другой.";
    39.    }
    40. }
    41.      else {
    42.     $message = "Все поля являются обязательными к заполнению!";
    43.     }
    44.  
    45. if (strlen($password) < 6){
    46. $message = "Введенный Вами <b>пароль слишком короткий!</b> <br> Необходимо ввести не менее 6-ти символов.";
    47. end;
    48. }
    49.  
    50. if (strlen($username) < 4){
    51. $message = "Введенное Вами <b>имя пользователя (логин) слишком короткое!</b> <br> Необходимо ввести не менее 4-х символов.";
    52. end;
    53. }  
    54.  
    55.     }
    56.     ?>
    57.  
    58.     <?php if (!empty($message)) {echo "<p class=\"error\">" . $message . "</p>";} ?>
    59.  
    60.  
    61.  
    62.  
    63.  
    64.  
    65. <div class="container mregister">
    66. <div id="login">
    67.  <h1>Регистрация</h1>
    68. <form action="register.php" id="registerform" method="post"name="registerform">
    69.  <p><label for="user_login">Полное имя<br>
    70.  <input class="input" id="full_name" name="full_name"size="32"  type="text" value=""></label></p>
    71. <p><label for="user_pass">E-mail<br>
    72. <input class="input" id="email" name="email" size="32"type="email" value=""></label></p>
    73. <p><label for="user_pass">Имя пользователя<br>
    74. <input class="input" id="username" name="username"size="20" type="text" value=""></label></p>
    75. <p><label for="user_pass">Пароль<br>
    76. <input class="input" id="password" name="password"size="32"   type="password" value=""></label></p>
    77. <p class="submit"><input class="button" id="register" name= "register" type="submit" value="Зарегистрироваться"></p>
    78.       <p class="regtext">Уже зарегистрированы? <a href= "login.php">Введите имя пользователя</a>!</p>
    79.  </form>
    80. </div>
    81. </div>
    82.  
    83. <?php include("includes/footer.php"); ?>
     
  2. denis01

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

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
    Зачем заставлять пользователя использовать 6 символов минимум, одного хватит, и можно с помощью empty проверить.
    Условие strlen($password) < 6 добавь в if(isset($_POST["register"]))
     
  3. rognorog

    rognorog Новичок

    С нами с:
    7 июл 2014
    Сообщения:
    330
    Симпатии:
    0
    Безопаснее.
     
  4. Fell-x27

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

    С нами с:
    25 июл 2013
    Сообщения:
    12.156
    Симпатии:
    1.770
    Адрес:
    :сердА
    мой пароль, допустим, á•┴, три символа. Какова вероятность, что он будет хоть в одном словаре или набрутится перебором?

    Не надо ставить минимальную и максимальные длины паролей. Пусть пользователь сам решает. Для намеков ему, можно рядышком поставить боксик, в который будет выводиться инфа с рекомендациями, типа "слабый пароль", "короткий пароль", а пользователь пусть сам решает, что и как. Его пароли - его дело. Твое дело - эти пароли просолить и запечь, чтобы никто не смог восстановить из дампа.
     
  5. Zuldek

    Zuldek Старожил

    С нами с:
    13 май 2014
    Сообщения:
    2.381
    Симпатии:
    344
    Адрес:
    Лондон, Тисовая улица, дом 4, чулан под лестницей
    Прослезился.
    Не просто безопаснее. Если вы будете хешировать 6-ти символьные пароли и я получу доступ к вашей базе ну и соответственно ... , то я получу все ваши пароли за день, чтобы вам был понятен смысл длинных паролей.
    Соль, причем не просто соль, а индивидуальная для каждого юзера даст небольшой плюсик но опять же легко вскрываема (в особенности для конкретного пользователя). Длинна пароля прямо пропорциональна скорости их взлома. Поэтому рекомендуется хранить хеши солёных паролей из 32 символов. Как вы эти 32 символа получаете уже ваше дело. Об этом вообще лучше не спрашивать а придумать свой вариант. Чем он уникальнее тем дольше хеши будут искаться по радужным таблицам.
    Истина в том, что если система должна быть максимально безопасной, то авторизация не должна быть единственным звеном защиты. Можно использовать подтверждение авторизации через SMS и т.п.
    Ахинею в виде 10 раз md5 5 раз sha1 только не используйте, никакого выигрыша это вам не даст. Бородатый баян, но до сих пор наблюдаю это в коде нубов... .
     
  6. igordata

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

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    да, ибо нужно использовать тысячи, а не десятки.
     
  7. Fell-x27

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

    С нами с:
    25 июл 2013
    Сообщения:
    12.156
    Симпатии:
    1.770
    Адрес:
    :сердА
  8. rognorog

    rognorog Новичок

    С нами с:
    7 июл 2014
    Сообщения:
    330
    Симпатии:
    0
    Не могу сказать, что это правильно " не ограничивать ". К сожалению.
     
  9. exlant

    exlant Новичок

    С нами с:
    11 фев 2015
    Сообщения:
    5
    Симпатии:
    0
    по топику: в конкретном данном случаи попробуй вместо end; поставить die(); или exit(); end не останавливает выполнение кода

    и ifы с проверкой на количество символов выше поставить
     
  10. Fell-x27

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

    С нами с:
    25 июл 2013
    Сообщения:
    12.156
    Симпатии:
    1.770
    Адрес:
    :сердА
  11. igordata

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

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    end это вообще из другой оперы

    А что ты можешь вообще сказать? :D ты или объясни суть своего мистического решения, или пиздабол viewtopic.php?p=414945#p414945
     
  12. rognorog

    rognorog Новичок

    С нами с:
    7 июл 2014
    Сообщения:
    330
    Симпатии:
    0
    Ваши пользователи. Срать так срите на них =)
     
  13. Fell-x27

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

    С нами с:
    25 июл 2013
    Сообщения:
    12.156
    Симпатии:
    1.770
    Адрес:
    :сердА
    Большинство людей используют один-два пароля на все. И это его личное дело. И длина пароля его личное дело. А когда какой-то очередной вшивый недосервис заставляет пользователя выдумывать новый пароль, это, с вероятностью 95% значит, что пользователь либо передумает регаться, либо просто никогда не вернется больше. Либо, если вернется, просто не вспомнит пароль, будет восстанавливать, сгенерит опять что-то "по требованию". И потом цикл повторится. ИМХО, единственные порталы, которые имеют право качать права в этом плане - это платежные сервисы или системы, так или иначе, завязанные на реальных деньгах и банковских операциях.

    Задача разработчика - не аккаунт пользователя уберечь от вскрытия, это вторично, а защитить почту и остальные аккаунты, где пользователь сидит, если будет слита база. Потому что если ты хранишь пароль открыто, то, по закону 95%, ты кому-то отдал в открытую пароль от остальных сервисов, где юзер бывает. Это пробивается по гуглу и вуаля. Так что главное пользователя не подставить со своей стороны. Если же пользователь дурак - пусть остается наедине с этим фактом, его право.

    Никаких принуждений. Максимум - рекомендации.