我正在尝试在PHP
中学习密码加密,但是还不太了解。
因此,我试图在登录表单中使用/实现sha1
加密。
正如您在这段代码中所看到的,我在if / else条件旁边使用了sha1
并得到了一个错误。
<?php
$accountName = "accountuser";
$accountPass = "accountpass";
session_start();
if(isset($_SESSION['accountName'])) {
echo "<h1>Welcome " .$_SESSION['accountName']."</h1>";
header("Refresh: 3; url=index.php");
include 'login.html';
echo 'Logged in successfuly! <br> Logging in...';
}
else {
if($_POST['username']==$accountName && sha1$_POST['password']==$accountPass){
$_SESSION['$accountName']=$accountName;
header("Refresh: 3; url=index.php");
echo 'Logged in successfuly! <br> Logging in...';
}
else {
include 'login.html';
echo "Wrong username!";
}
}
?>
答案 0 :(得分:1)
密码哈希? 有一个功能。
虽然您可以使用诸如sha1()
,md5()
之类的功能和其他功能来加密密码,但这并不是最佳做法,通常不建议这样做。
您应该为此使用PHP中的内置函数:
password_hash()
password_verify()
您需要像这样使用它们:
$password = $_POST['password'];
$hash = password_hash($password, PASSWORD_DEFAULT);
然后将$hash
存储在数据库中。
要验证密码是否正确,请使用password_verify()
,如下所示:
// $hash = stored hash in your database for the user
$password = $_POST['password']; // password put in by user attempting to login
password_verify($password, $hash);
password_verify()
将根据密码是否正确返回TRUE
或FALSE
。要检查,您可以执行以下操作:
if(!password_verify($password, $hash)) { //password incorrect }