@PGdisco

Регистрация на PHP?

Помогите дураку. Битый час ковыряюсь.
При вводе любых данных вне зависимости от их корректности выдает ошибку:

Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given in C:\OpenServer\domains\site.loc\pages\login.php on line 9
Логин введен неверно

<?php
$data = mysql_connect("localhost", "rootdb", "123");
mysql_select_db("phpreg", $data);
if(isset($_POST['send'])){
	$login = $_POST['name'];
	$password = $_POST['pass'];
}
$query = mysql_query("SELECT * form userdb WHERE login='$login'");
$myrow = mysql_fetch_array($query);
if($login == $myrow['login']) {
	if($password == $myrow['password']){
		echo "Здравствуй, ".$login;
	}
	else{
		echo "Пароль введен неверно";
	}
}
else{
	echo "Логин введен неверно";
}
?>
  • Вопрос задан
  • 162 просмотра
Решения вопроса 1
zoonman
@zoonman
⋆⋆⋆⋆⋆
1. Используйте PDO.
2. Никогда не подставляйте данные так, как вы это делаете.

Вот образец того, как надо делать
<?php
// создаем соединение с базой данных
$db = new PDO('mysql:dbname=phpreg;host=localhost;port=3306', 'rootdb', '123');

// устанавливаем кодировку utf8, чтобы никогда не было крякозябр
// создавайте таблицы и базы с такой же кодировкой
$db->exec('SET NAMES utf8');

if (isset($_POST['send'])) {

    // получаем значение параметра
    $login = $_POST['name'];

    // подготавливаем наш запрос
    $sth = $db->prepare('SELECT * FROM userdb WHERE login = :login');

    // связываем подстановку :login с переменной $login
    $sth->bindParam('login', $login);

    // выполняем наш запрос
    $res = $sth->execute();

    // если запрос выполнился успешно, то выбираем все данные в массив
    if ($res) {
        $result = $sth->fetchAll();

        // мы не нашли строку с пользователем
        if (empty($result)) {
            echo 'Пользователь не найден!';

        } else {
            // мы нашли пользователя

            // проверяем пароль на правильность,
            // используйте http://php.net/manual/ru/function.password-hash.php для создания хэша пароля
            // никогда не храните пароль в открытом виде!
            if (password_verify($_POST['pass'], $result[0]['password'])) {
                // не используйте переменные из запросов для вывода
                echo "Здравствуй, ". $result[0]['login'];
            } else {
                echo 'Пароль неверный.';
            }
        }
    } else {
        // ошибка в запросе
    }
}
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@Firik67
Middle PHP Developer
Нужно в запросе поменять ' на {} и вместо form FROM
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы