За последние 24 часа нас посетили 15256 программистов и 1671 робот. Сейчас ищут 794 программиста ...

Актуально?

Тема в разделе "PHP для новичков", создана пользователем M1lleniuM, 13 окт 2012.

  1. M1lleniuM

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

    С нами с:
    28 сен 2012
    Сообщения:
    34
    Симпатии:
    0
    Пока нет возможности проверить работоспособность, поэтому спрашиваю у вас:) Написал скрипт Авторизации (пока, далее планирую регистрацию добавить и забыли пароль(как видно по форме)). Возможно криво/косо/неудачно т.к. я новичок:) Сильно не ругаться:) Если не трудно указать на ошибки. Только начал изучать Mysqli.
    Форма
    Код (PHP):
    1. <?php
    2. echo '<form action="/a.php" method="post"><h1><b><i>Авторизация</h1></b></i><br>
    3.         Логин:<br>
    4.         <input type=text name="login"><br>
    5.         Пароль:<br>
    6.         <input type=password name="password"><br><br>
    7.         <input type=submit name="submit" value="Войти">
    8.         </form>';
    9. echo '<br><br>
    10.         <a href=/reg.php>Регистрация</a><br><br>
    11.         <a href=/zab.php>Забыли пароль?</a>';
    12. ?>
    Авторизация:
    Код (PHP):
    1. <?php
    2.  
    3. $login=trim($login);
    4. $login=htmlspecialchars($login);
    5. $login=stripslashes($login);
    6. $password=trim($password);
    7. $password=htmlspecialchars($password);
    8. $password=stripslashes($password);
    9. $login=$_POST['login'];
    10. $password=$_POST['password'];
    11. if(!$login || !$password){
    12. echo 'Вы не заполнили поля';
    13. echo '<br><br>';
    14. echo '[url="/index.php"]Назад[/url]';
    15. } else {
    16. @$db=new mysqli('localhost','name','pass');
    17. echo 'Не удалось соединиться с сервером. Повторите попытку позже...<br><br>';
    18. echo '[url="/index.php"]Назад[/url]';
    19. } else {
    20. $c=mysqli_select_db('Auth');
    21. $q="SELECT `Login`=`{$login}`,`Password`=`{$password}` FROM `Auth`";
    22. $query=mysqli_query($q);
    23. if($query){
    24. echo "Вы авторизовались!";}
    25. else {
    26. echo 'Такого пользователя не существует, либо вы ввели неверные данные. Пожалуйста, попробуйте снова.';
    27. echo '<br><br>';
    28. echo '[url="/index.php"]Назад[/url]';
    29. }
    30. }
    31. ?>
    И да, если можно советы и пожелания:) Адекватная критика очень приветствуется:)
     
  2. igordata

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

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    А ты осмыслено можешь объяснить, что тут делается?:
    Код (PHP):
    1. <?php
    2.  
    3. $login=trim($login);
    4. $login=htmlspecialchars($login);
    5. $login=stripslashes($login);
    6. $password=trim($password);
    7. $password=htmlspecialchars($password);
    8. $password=stripslashes($password);
    9. $login=$_POST['login'];
    10. $password=$_POST['password']; 
     
  3. M1lleniuM

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

    С нами с:
    28 сен 2012
    Сообщения:
    34
    Симпатии:
    0
    Ну как бы удаление пробелов, перевод в html-сущности и вывод из массива $_POST. Вроде так. Где накосячил?:)
     
  4. igordata

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

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    ну в последних двух строчках что произойдёт? и с какими данными ты работаешь в первых шести?
     
  5. M1lleniuM

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

    С нами с:
    28 сен 2012
    Сообщения:
    34
    Симпатии:
    0
    С данными перенаправленными из формы. Вроде так. А последние две выводятся из массива $_POST
     
  6. igordata

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

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    а из формы это откуда, и зачем тогда POST?
     
  7. M1lleniuM

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

    С нами с:
    28 сен 2012
    Сообщения:
    34
    Симпатии:
    0
    Ну form action = a.php method = post. Первый код - форма(index.php). Второй - авторизация(a.php)
     
  8. igordata

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

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    $login=trim($login);

    Короче
    Во первых в этой переменной ничерта нет
    Во вторых ты потом заменяешь это ничерта на значение из поста.
     
  9. Your

    Your Старожил

    С нами с:
    2 июл 2011
    Сообщения:
    4.074
    Симпатии:
    7
    А подумать не пробовали?

    Код (PHP):
    1. $login=$_POST['login'];
    2. $login=trim($login); 
     
  10. M1lleniuM

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

    С нами с:
    28 сен 2012
    Сообщения:
    34
    Симпатии:
    0
    Спасибо:) Сначала вынуть из поста, затем производить действия, я так понял:) Изначально так и было, не знаю зачем изменил:)
    Всегда стараюсь "пробовать думать":) Каждый учится на своих ошибках:) Вот путем проб и ошибок наверно начну писать нормально:)

    P.S. Будем надеяться я правильно вас понял:)
     
  11. igordata

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

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    Дальше.

    Запрос в бд сам пиасал? Уверен в синтаксисе? Пробовал запускать? Всегда надо пробовать =)

    @ не надо использовать.
     
  12. M1lleniuM

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

    С нами с:
    28 сен 2012
    Сообщения:
    34
    Симпатии:
    0
    Запрос в бд писал сам, по своим знаниям и потому, что видел на разных форумах:). Насчет собаки - знаю, что не нужно использовать. В ближайшее время проверю скрипт на работоспособность и отпишусь:)
     
  13. M1lleniuM

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

    С нами с:
    28 сен 2012
    Сообщения:
    34
    Симпатии:
    0
    Все таки похоже ошибка в запросе у меня. Пришлось перейти от mysqli к mysql (Видимо не дорос еще:). Мне нужно, чтобы при запросе в базу, сравнивались данные из формы и искались в бд такие же значения. Если же их нет, то выдавалась ошибка. Я создал через phpmyadmin в таблице значения. Пытался через них зайти, все равно пишет, что нет такого пользователя. Как можно отразить в запросе сравнение данных?
    форма та же
    скрипт a.php
    Код (PHP):
    1. <?php
    2. if(!$login || !$password){
    3. echo 'Вы не заполнили поля';
    4. echo '<br><br>';
    5. echo '[url="/index.php"]Назад[/url]';
    6. } else {
    7. $login=$_POST['login'];
    8. $login=trim($login);
    9. $login=htmlspecialchars($login);
    10. $login=stripslashes($login);
    11. $password=$_POST['password'];
    12. $password=trim($password);
    13. $password=htmlspecialchars($password);
    14. $password=stripslashes($password);
    15. $dbhost="localhost";
    16. $dbname="";
    17. $dbuser="";
    18. $dbpass="";
    19. $db=mysql_connect($dbhost,$dbuser,$dbpass) or die ('Не могу подключится к БД. Попробуйте позже');
    20. $a=mysql_select_db($dbname) or die ('Не могу подключится к БД');
    21. $q="SELECT Login=`{$login}`, Password=`{$password}` FROM `Auth`";
    22. $query=mysql_query($q);
    23. if($query){
    24. echo "Вы авторизовались!";}
    25. else {
    26. echo 'Такого пользователя не существует, либо вы ввели неверные данные. Пожалуйста, попробуйте снова.';
    27. echo '<br><br>';
    28. echo '[url="/index.php"]Назад[/url]';
    29. } 
    пытался редактировать запрос до
    Код (PHP):
    1. $q="SELECT `Login`, `Password` FROM `Auth` WHERE Login=`{$login}, Password=`{$password}`"; 
    Неудача.
     
  14. igordata

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

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    Кавычку не ту не там поставил и забыл закрыть. :)
    И вернись к mysqli.
     
  15. M1lleniuM

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

    С нами с:
    28 сен 2012
    Сообщения:
    34
    Симпатии:
    0
    Конкретно где?:)
    Да я пока для работоспособности скрипта перешел на mysql. Я просто пока его больше понимаю:) А потом буду обновлять и дополнять скрипт по мере изучения нового. А mysqli в процессе:) Ну как, я дальше шагнул в изучении?:)
     
  16. igordata

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

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    если для тебя есть разница между процедурами и mysqli, и ты не видишь кавычки в запросе из 10 слов, то дело плохо =( не буду тебе врать

    НУКА НАМОРЩИЛ ЛОБ БЫСТРО! а то позорно
     
  17. Dmitriy A. Arteshuk

    Dmitriy A. Arteshuk Активный пользователь

    С нами с:
    19 янв 2012
    Сообщения:
    2.445
    Симпатии:
    66
    Адрес:
    Зеленоград
    Код (PHP):
    1. if(!$login || !$password){
    2. echo 'Вы не заполнили поля';
    3. echo '<br><br>';
    4. echo '[url="/index.php"]Назад[/url]';
    5. } else {
    6. $login=$_POST['login'];
    7. $login=trim($login);
    8. $login=htmlspecialchars($login);
    9. $login=stripslashes($login);
    10. $password=$_POST['password'];
    11. $password=trim($password);
    12. $password=htmlspecialchars($password);
    13. $password=stripslashes($password);
    14.  
    шедеврально )))

    Игорь, какие нафиг mysqli ??? код выше глянь...
     
  18. M1lleniuM

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

    С нами с:
    28 сен 2012
    Сообщения:
    34
    Симпатии:
    0
    Окей:)

    Добавлено спустя 2 минуты 30 секунд:
    А можно конкретнее по ошибкам и проблемам? Так будет проще, чем просто заходить ссылаться на нечто непонятное, при этом матерясь:) Ошибка в том что это здесь не нужно будет? Так?:) Ведь это нужно вроде при регистрации. Или ошибаюсь..
     
  19. Dmitriy A. Arteshuk

    Dmitriy A. Arteshuk Активный пользователь

    С нами с:
    19 янв 2012
    Сообщения:
    2.445
    Симпатии:
    66
    Адрес:
    Зеленоград
    По началу, очень полезно (имхо) про себя проговаривать код, который ты пишешь...давай попробуем

    Код (PHP):
    1. if(!$login || !$password){
    2. echo 'Вы не заполнили поля';
    3. echo '<br><br>';
    4. echo '[url="/index.php"]Назад[/url]';
    5. } else { 
    Если.......
    делаем то то

    иначе

    делаем другое

    Проговори про себя что ты делаешь....просто попробуй

    ЗЫ и включи вывод ошибок, пхп все за тебя скажет )
     
  20. M1lleniuM

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

    С нами с:
    28 сен 2012
    Сообщения:
    34
    Симпатии:
    0
    Вы имеете в виду заменить
    Код (PHP):
    1. if(!$login || !$password) 
    на
    Код (PHP):
    1. if(empty($login) or empty ($password){ 
    Насколько я помню, empty проверяет пуста ли переменная.. Или не прав. Только не знаю насчет оператора or. Пройдет ли так или надо через ||

    Добавлено спустя 2 минуты 43 секунды:
    Так вывод ошибок включен, и я проверял на пустое значение. В форме оставлял пустые поля - скрипт срабатывал и выводил ошибку..
     
  21. Dmitriy A. Arteshuk

    Dmitriy A. Arteshuk Активный пользователь

    С нами с:
    19 янв 2012
    Сообщения:
    2.445
    Симпатии:
    66
    Адрес:
    Зеленоград
    да забудь ты обо всем!!!!

    Код (PHP):
    1. if(!$login || !$password)  
    проговори вот эту строчку вслух....Если (...
     
  22. M1lleniuM

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

    С нами с:
    28 сен 2012
    Сообщения:
    34
    Симпатии:
    0
    если логин и пароль вернут false то выполнится то то. Вроде так. ! - логическое отрицание
     
  23. Dmitriy A. Arteshuk

    Dmitriy A. Arteshuk Активный пользователь

    С нами с:
    19 янв 2012
    Сообщения:
    2.445
    Симпатии:
    66
    Адрес:
    Зеленоград
    замечательно, теперь смотрим вот что:

    Код (Text):
    1. if(!$login || !$password)  
    что у тебя в переменной логин и пароль может быть?
     
  24. igordata

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

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    он этого не поймёт. он не знает о нестрогой типизации достаточно. Давайте для начала найдём кавычку...
     
  25. M1lleniuM

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

    С нами с:
    28 сен 2012
    Сообщения:
    34
    Симпатии:
    0
    Числа, текст, символы

    Добавлено спустя 39 секунд:
    Пусть продолжает:) Нужно понимать, что за бред ты пишешь:)