Я пишу файл PHP, чтобы пользователь мог изменить свой пароль, но у меня возникла странная проблема. Мне нужен старый пароль для подтверждения учетной записи и новый пароль. Учитывая, что учетные данные верны, эта страница всегда возвращает мне, что пароль пользователя неверен, и поэтому возвращает эхо в строке 12 «Старый пароль неверен». Если я запускаю «выбрать * из utente» в инструменте запросов pgAdmin, чтобы увидеть пароль, я не вижу никаких изменений в поле пароля. Затем, если я вернусь к форме, чтобы изменить пароль, и если я введу в поле старого пароля новый пароль, который я хотел бы изменить раньше, но, похоже, он не был принят, потому что старый пароль не был распознан ранее, процедура проходит успешно. Клянусь, я не могу понять, почему. Я думал, что это ошибка в md5, но это не касается и sha1. Я знаю, что оба небезопасны, но теперь я должен использовать один из них. Как я могу это решить? заранее спасибо
<?php
$dbconn = pg_connect("host=localhost port=5432 dbname=progetto user=postgres password=password")
or die('Could not connect:' . pg_last_error());
if(!(isset($_POST['changeButton']))){
header("Location: utente.php");
}else{
$email = $_COOKIE["cookieEmail"];
$oldPassword = sha1($_POST['oldpassword']);
$q1="select * from utente where email = $1 and password = $2";
$result=pg_query_params($dbconn,$q1,array($email, $oldPassword));
if($line=pg_fetch_array($result ,null ,PGSQL_ASSOC)){
echo "<h1>Old password wrong</h1>
<a href=formCambiaPassword.php>Click here</a>";
}else{
$newPassword = sha1($_POST['newpassword']);
$q2 = "update utente set password=$1 where email=$2";
$result=pg_query_params($dbconn, $q2, array($newPassword, $email));
if($result==true){
$q3="select * from utente where email = $1 and password = $2";
$result=pg_query_params($dbconn,$q3,array($email, $newPassword));
if($line=pg_fetch_array($result ,null ,PGSQL_ASSOC)){
echo "<h1>Error</h1>
<a href=formCambiaPassword.php>Click here</a>";
}else{
header("Location: utente.php");
}
}else{
echo "<h1>Error 2</h1>
<a href=formCambiaPassword.php>Click here</a>";
}
}
}
?>