日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > php >内容正文

php

php不用密码登录,使用散列密码登录PHP

發布時間:2025/3/19 php 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 php不用密码登录,使用散列密码登录PHP 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

正如標題所示,在注冊表單中對密碼進行哈希處理后,我無法登錄用戶.我已經使用了PHP內置的password_hash()和password_verify()函數,但它在signin.php上,其中使用了password_verify(),我遇到了麻煩.我知道password_verify()的參數是一個哈希,但是我如何使用在signup.php中生成和存儲的相同哈希才能在這個函數中使用?

注意:是的,這兩組代碼都有更多!數據庫連接有效,所有未在這些位中定義的變量都被定義為某些行. signup.php工作正常,表單數據(包括散列密碼)成功存儲在我的數據庫中.

這是signup.php中實現哈希的部分:

$hash = password_hash($password, PASSWORD_DEFAULT);

$sql = "INSERT INTO users (id, full_name, email, password, username, sign_up_date, activated) VALUES ('', '$full_name', '$email', '$hash', '$username', '$date', '1')";

這是signin.php的一部分,其中需要(大概相同)哈希:

$password = mysqli_real_escape_string($_ POST [‘password’]);

if (!password_verify($password, $hash)) {

echo 'Invalid password.';

exit;

}

$sql = "SELECT id, email, password FROM users WHERE email = '$email' AND password = '$password' AND activated = '1' LIMIT 1";

$query = mysqli_query($conn, $sql);

編輯:我在一天后想出了這個問題,不得不使用“SELECT * FROM …”從數據庫中檢索存儲的哈希值,然后將其與輸入的密碼與password_verify()進行比較.謝謝你的幫助!

解決方法:

我要注意確切問題在哪里.您聲明已將散列密碼(使用password_hash())存儲在數據庫中.所以基本的工作流程是:

a)保存數據庫中注冊時給出的密碼的哈希值(不是明文密碼):

$hash = password_hash($_POST['password'], PASSWORD_DEFAULT);

$sql = "INSERT INTO users (id, full_name, email, password, username, sign_up_date, activated) VALUES ('', '$full_name', '$email', '$hash', '$username', '$date', '1')";

b)如果用戶嘗試登錄,只需從數據庫WHERE email ='{$_POST [’email’]}獲取哈希值,然后使用password_verify函數:

if (!password_verify($_POST['login_password'], $hash_from_database)) { exit; }

這有幫助嗎?

標簽:php,mysql,hash

來源: https://codeday.me/bug/20190609/1203487.html

總結

以上是生活随笔為你收集整理的php不用密码登录,使用散列密码登录PHP的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。