За последние 24 часа нас посетили 16237 программистов и 1517 роботов. Сейчас ищут 743 программиста ...

Ну что я за дебил то (еще раз - тупой вопрос)

Тема в разделе "PHP для новичков", создана пользователем Dare, 10 дек 2009.

  1. Dare

    Dare Активный пользователь

    С нами с:
    8 ноя 2009
    Сообщения:
    37
    Симпатии:
    0
    PHP:
    1. <?php
    2. $log = $_POST['login'];
    3. $pas = $_POST['password'];
    4. $link = mysql_connect("localhost","root","root");
    5. $db="project";
    6. $query = "SELECT * FROM user WHERE login='$log'";
    7. $result = mysql_query($query,$link);
    8. $resulttoarray = mysql_fetch_array($result);
    9. $login=$resulttoarray['login'];
    10. $pass=$resulttoarray['password'];
    11. if (!$result){
    12. Header("Location: index.php");
    13. die();
    14. }
    15. if ($pas != $pass) {
    16. Header("Location: index.php");
    17. die();
    18. } else {
    19. $_SESSION['ID'] = $log;
    20. Header("Location: index.php");
    21. die();
    22. }
    23. ?>
    Ну так вот. Если бользователь в базе есть то все нормально - проверка логина и пароля. Но зато если в логин ввести не зареганого юзера то можно войти как угодно. Можно даже и без логина. По логике это
    PHP:
    1. if (!$result){
    2. Header("Location: index.php");
    3. die();
    4. }
    5.  
    Но чтото не работает. Поделитесь секретом
     
  2. karakh

    karakh Активный пользователь

    С нами с:
    11 дек 2007
    Сообщения:
    1.344
    Симпатии:
    0
    О, блин...
    PHP:
    1.  
    2. <?php
    3.  $log = $_POST['login'];
    4.  $pas = $_POST['password'];
    5.  $link = mysql_connect("localhost","root","root");
    6.  $db="project";
    7.  $query = select * from user WHERE login='$log' AND password='$pas'"; // в идеале конечно password='md5($pas)' да еще и с солью бы...
    8. $result = mysql_query($query,$link);
    9. if (!$result || !mysql_num_rows($result)) // внимание! $result возвращает false не "если ничего не нашел", а "если не выполнился запрос"
    10. {
    11. Header("Location: index.php");
    12. die();
    13. }else
    14. {
    15. session_start();
    16. $_SESSION['ID'] = $log;
    17. Header("Location: index.php");
    18. die();
    19. }
    20. ?>
     
  3. TheShock

    TheShock Активный пользователь

    С нами с:
    30 май 2009
    Сообщения:
    1.255
    Симпатии:
    0
    Адрес:
    Київ
    1. потому-что запрос получается правильным. пример очень плох, но, я думаю, если if ($pas != $pass) { поменять на if ($login && $pas != $pass) { то будет работать


    [​IMG]
     
  4. Dare

    Dare Активный пользователь

    С нами с:
    8 ноя 2009
    Сообщения:
    37
    Симпатии:
    0
    Ну и последний вопрос. В регистрации как сделать чтобы типа
    PHP:
    1. if ($pas=""){
    2.  
    Ведь при "" он пустую строку не проверяет
     
  5. TheShock

    TheShock Активный пользователь

    С нами с:
    30 май 2009
    Сообщения:
    1.255
    Симпатии:
    0
    Адрес:
    Київ
    видимо так if ($pas == ""){
     
  6. admyx

    admyx Активный пользователь

    С нами с:
    14 мар 2008
    Сообщения:
    2.159
    Симпатии:
    1
    Dare
    PHP:
    1. <?
    2. if(empty($pass))
    3. {
    4.            echo 'password empty';
    5. }
    6. else
    7.            echo 'check password';