正如标题所暗示的那样,在对注册表单中的密码进行哈希处理后,我无法登录用户。我使用了 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')";
Run Code Online (Sandbox Code Playgroud)
这是 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"; …Run Code Online (Sandbox Code Playgroud) 我无法通过php将我的html表单输入数据存储在mysql数据库中.当我填写表单并提交时,我的register.php页面是空白的,成功或错误消息都没有回显到页面上.
注意:是的我有root密码和数据库名称.两个都在我的代码中正确填写我刚删除它们的帖子.
编辑:分号固定,仍然出现未知错误.
HTML格式:
<form action="register.php" method="POST">
<input type="text" name="first_name" placeholder="first name" /><br /><br />
<input type="text" name="last_name" placeholder="last name" /><br /><br />
<input type="text" name="email" placeholder="email address" /><br /><br />
<input type="text" name="password" placeholder="password" /><br /><br />
<input type="submit" name="register" value="Sign Up" />
</form>
Run Code Online (Sandbox Code Playgroud)
register.php
<?php
if (isset($_POST['register'])) {
$host = "localhost";
$username = "root";
$password = "";
$database = "";
$conn = mysqli_connect($host, $username, $password, $database);
if (mysqli_connect_errno($conn)) {
echo "Failed to connect to MySQL: " . mysqli_connect_error(); …Run Code Online (Sandbox Code Playgroud)