<p>سلام وقت بخیر</p><p>در مورد هش کردن پسورد و بررسی اون سوال داشتم</p><p>1- زمانی که پسورد رو هش میکنم به صورت هش شده داخل دیتابیس ثبت میشه اما همون رمز رو مجدد میزنم به یه کاراکترهای دیگه تبدیل شده یعنی هر بار که یک پسورد رو هش میکنم به شکلهای مختلفی تبدیل میشه</p><p>2- زمانی که میخام پسورد وارد شده توسط کاربر رو با پسورد هش شده داخل دیتابیس بررسی کنم همیشه این دوتا همخونی نداره</p><p>ممنون میشم راهنمایی کنید</p><pre class=\"ql-syntax\" spellcheck=\"false\"><span class=\"hljs-keyword\">if</span>(<span class=\"hljs-variable\">$_SERVER</span>[<span class=\"hljs-string\">\'REQUEST_METHOD\'</span>] == <span class=\"hljs-string\">\"POST\"</span> && <span class=\"hljs-keyword\">isset</span>(<span class=\"hljs-variable\">$_POST</span>[<span class=\"hljs-string\">\'login\'</span>])){
<span class=\"hljs-variable\">$data</span> = [<span class=\"hljs-string\">\'email\'</span> => <span class=\"hljs-variable\">$_POST</span>[<span class=\"hljs-string\">\'Email\'</span>], <span class=\"hljs-string\">\'password\'</span> => <span class=\"hljs-variable\">$_POST</span>[<span class=\"hljs-string\">\'Password\'</span>]];
login(<span class=\"hljs-variable\">$data</span>);
}
//////////////
function register($data)
{
global $connection;
$password = $data[\'password\'];
$uppercase = preg_match(\'@[A-Z]@\', $password);
$lowercase = preg_match(\'@[a-z]@\', $password);
$number = preg_match(\'@[0-9]@\', $password);
$specialChars = preg_match(\'@[^\\w]@\', $password);
if (!$uppercase || !$lowercase || !$number || !$specialChars || strlen($password) < 8) {
return \'Password should be at least 8 characters in length and should include at least one upper case letter, one number, and one special character.\';
} else {
$password_hash = password_hash($password,PASSWORD_DEFAULT);
$query = \"INSERT INTO users (name,family,username,password,email) VALUES (:name , :family , :username , :password , :email)\";
$stmt = $connection->prepare($query);
$stmt->execute([\'name\' => $data[\'name\'], \'family\' => $data[\'family\'], \'username\' => $data[\'username\'], \'password\' => $password_hash, \'email\' => $data[\"email\"]]);
return $stmt->rowCount();
}
}
function get_user_info($data){
global $connection ;
$query = \"SELECT * FROM users WHERE email =:email\";
$stmt = $connection->prepare($query);
$stmt->execute([\'email\' => $data[\'email\']]);
$res = $stmt->rowCount();
if($res == 1){
$user_info =$stmt->fetchObject();
return $user_info;
}
else{
return \"user not found\";
}
}
function login($info){
$user_info = get_user_info($info);
echo $info[\'password\'] . \"<br>\";
echo $user_info->password . \"<br>\";
if(password_verify($info[\'password\'],$user_info->password)){
echo \"login successfully\";
}
else{
echo \"incorroct data\";
}
}
</pre>