Ребят не судите строго я только начал изучать PHP В БД создана таблица userlist состаящяя из |name|pass| Как сделать так что бы Имя и Пароль введеные в форму сверялись с данными которые в БД и если такое Имя и Пароль есть в БД шла пересылка на страницу ресурса, а иначе ошибка
PHP: ... $sql = mysql_query("Select id from users where name = '$name' and password = md5('$pass')"); if (mysql_num_rows($sql) > 0) { //авторизован, пересылай юзера куда надо } else { print "Ошибка авторизации"; } ... Если шифрование md5 пасса, иначе md5('$pass') замени на '$pass' .
Выдает ошибку : 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 Ошибка авторизации
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, либо траблы с данными в самой базе
С базой соединяется нормально, а привыполнении 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');
Eser, Вы забыли зашифровать пароль. В запросе для этого испльзуется функция md5(). Вы же вставили незашифрованное значение.
Перепробовал все но все равно ругается:"аргумент не является корректной ссылкой на результат запроса к MySQL". $sql = mysql_query("Select id from userlist where name = '$name' and pass ='$pass'"); if (mysql_num_rows($sql) > 0) <------ругается на эту строку { //авторизован, пересылай юзера куда надо } else { print "Ошибка авторизации"; }
Все нормально большое спасибо вот код: <?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 "Ошибка авторизации"; } ?>