У меня есть сайт «установить пароль», где вы можете установить пароль, только если у вас его нет. Поэтому у меня есть SQL-запрос, который выбирает имя пользователя и пароль, с которыми мы будем работать, только если адрес электронной почты совпадает с адресом в базе данных, а пароль - NULL. Если этот возвращает false, PHP-скрипт не должен делать ничего, кроме echo «Пароль или имя пользователя недействительны». Он также выполняет другие действия, такие как проверка длины пароля, и если это было подтверждено, но это тот, который запутывается. Есть предположения?SQL возвращает true, даже если должен возвращать false
Это мой PHP-код до сих пор:
<?php
session_start();
require 'connect.inc.php';
include 'core.php';
ob_start();
?>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<?php
echo "
<form action='update.php' method='post'>
Ange din E-post.<br>
E-post: <input type='text' name='mail' /><br>
Ange ditt lösenord, minst sex tecken.<br>
Lösenord: <input type='password' name='pass1' /><br>
Bekräfta: <input type='password' name='pass2' /><br>
<input type='submit' value='Godkänn'/><br>";
if(isset($_POST['pass1'])&&isset($_POST['pass2']))
{
$email = $_POST['mail'];
$query = "SELECT login_id, pass FROM users WHERE (email = '$email') AND (pass IS NULL)";
$query_run = sqlsrv_query($link, $query);
if(($_POST['pass1'] == $_POST['pass2']) && !empty($_POST['pass2']) && $query_run && (strlen($_POST['pass2'])>5))
{
$row = sqlsrv_fetch_array($query_run, SQLSRV_FETCH_ASSOC);
$id = $row['login_id'];
$_SESSION['id'] = $id;
$pass = $_POST['pass1'];
$query2 = "UPDATE users SET pass = '$pass' WHERE login_id = '$id'";
sqlsrv_query($link, $query2);
$next = "https://localhost/title_choice.php";
header('Location: '.$next);
}else
{
echo "Lösenorden matchar ej, eller E-post ogiltig! Var god ange dem igen!";
}
}
ob_end_flush();
?>
Просто потому, что SQL-запрос не возвращает ни одной строки, не означает, что она не смогла, так что '$ query_run' еще будет правда ... Вы должны проверить количество строки возвращены –
Спасибо! Исправлено с помощью sqlsrv_has_rows! – pimmen