За последние 24 часа нас посетили 17344 программиста и 1197 роботов. Сейчас ищут 1275 программистов ...

Проверка Логина и Пароля

Тема в разделе "Вопросы от блондинок", создана пользователем Eser, 16 янв 2007.

  1. Eser

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

    С нами с:
    16 янв 2007
    Сообщения:
    141
    Симпатии:
    0
    Ребят не судите строго я только начал изучать PHP
    В БД создана таблица userlist состаящяя из |name|pass|
    Как сделать так что бы Имя и Пароль введеные в форму сверялись с данными которые в БД и если такое Имя и Пароль есть в БД шла пересылка на страницу ресурса, а иначе ошибка
     
  2. phpall

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

    С нами с:
    10 окт 2006
    Сообщения:
    45
    Симпатии:
    0
    Адрес:
    Тирасполь
    PHP:
    1.  
    2. ...
    3. $sql = mysql_query("Select id from users where name = '$name' and password = md5('$pass')");
    4. if (mysql_num_rows($sql) > 0) {
    5.     //авторизован, пересылай юзера куда надо
    6. } else {
    7.    print "Ошибка авторизации";
    8. }
    9. ...
    10.  
    Если шифрование md5 пасса, иначе md5('$pass') замени на '$pass' .
     
  3. Eser

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

    С нами с:
    16 янв 2007
    Сообщения:
    141
    Симпатии:
    0
    Спасибо друг!
     
  4. Eser

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

    С нами с:
    16 янв 2007
    Сообщения:
    141
    Симпатии:
    0
    Выдает ошибку :

    Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in C:\Program Files\Apache Group\Apache2\htdocs\Site\script\avtoriz.php on line 17
    Ошибка авторизации
     
  5. kvv

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

    С нами с:
    24 ноя 2006
    Сообщения:
    146
    Симпатии:
    0
    Адрес:
    Луцьк- УКРАЇНА
    В предварительном примере прописано поле password тебе надо pass
     
  6. Eser

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

    С нами с:
    16 янв 2007
    Сообщения:
    141
    Симпатии:
    0
    Не помогает
     
  7. DarkElf

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

    С нами с:
    22 окт 2006
    Сообщения:
    1.632
    Симпатии:
    0
    Eser

    проверить наличие соединения с mysql.
    например, так:
    $dbh = mysql_connect("localhost","root","");
    if(!$dbh){
    echo "Ошибка соединения с БД: ".mysql_errno().", ".mysql_error();
    exit();
    }

    а также после осуществления запроса, перед обработкой результатов, проверить, чтобы mysql_errno() == "0" или mysql_error() == "".

    так как тебе в ошибке пишется, что "аргумент не является корректной ссылкой на результат запроса к MySQL".


    P.S. а при проверке авторизованности лучше проверять, чтобы количество результатов было равно 1 - пользователь авторизован, 0 - пользователь неавторизован, в другом случае - либо ошибка mysql, либо траблы с данными в самой базе
     
  8. kvv

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

    С нами с:
    24 ноя 2006
    Сообщения:
    146
    Симпатии:
    0
    Адрес:
    Луцьк- УКРАЇНА
    Напиши свой запрос
     
  9. Eser

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

    С нами с:
    16 янв 2007
    Сообщения:
    141
    Симпатии:
    0
    С базой соединяется нормально, а привыполнении mysql_errno() == "0" или mysql_error() == "" выдает 1
    БД делал так:
    CREATE TABLE userlist (
    id_user int(11) NOT NULL auto_increment,
    name tinytext NOT NULL,
    pass tinytext NOT NULL,
    PRIMARY KEY (id_user)
    ) TYPE=MyISAM;
    INSERT INTO userlist VALUES (1, 'admin', '123');
     
  10. Петр

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

    С нами с:
    20 мар 2006
    Сообщения:
    1.253
    Симпатии:
    0
    Адрес:
    Центр Вселенной
    Eser, Вы забыли зашифровать пароль.
    В запросе для этого испльзуется функция md5().
    Вы же вставили незашифрованное значение.
     
  11. Eser

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

    С нами с:
    16 янв 2007
    Сообщения:
    141
    Симпатии:
    0
    Перепробовал все но все равно ругается:"аргумент не является корректной ссылкой на результат запроса к MySQL".

    $sql = mysql_query("Select id from userlist where name = '$name' and pass ='$pass'");
    if (mysql_num_rows($sql) > 0) <------ругается на эту строку
    {
    //авторизован, пересылай юзера куда надо
    } else {
    print "Ошибка авторизации";
    }
     
  12. DarkElf

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

    С нами с:
    22 окт 2006
    Сообщения:
    1.632
    Симпатии:
    0
    перед ней вставь:
    echo mysql_error();
    и отобразится ошибка при работе с БД
     
  13. Eser

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

    С нами с:
    16 янв 2007
    Сообщения:
    141
    Симпатии:
    0
    Все нормально большое спасибо вот код:
    <?php
    // Устанавливаем соединение с базой данных
    require_once("config_mysql_connect.php");

    // Проверяем переданы ли имя пользователя и пароль
    if(empty($_POST['name'])) exit("Не указано имя пользователя");
    if(empty($_POST['pass'])) exit("Не указан пароль пользователя");

    //Проверяем наличие пробелов и удаляем если есть
    $name=$_POST['name']; //Возвращаем переменую со значением "name"
    $pass=$_POST['pass']; //Возвращаем переменную со значением "pass"

    $trim_str_name= trim($name); //Удаление пробелов в Имени
    $trim_str_pass= trim($pass); //Удаление пробелов в Пароле

    $sql = mysql_query("Select * from userlist where name = '$name'and pass='$pass';" );

    if (mysql_num_rows($sql) > 0)
    {
    echo ("Все Ok");
    }
    else {
    print "Ошибка авторизации";
    }

    ?>