以下是我的PHP代码。
<?php
session_start();
if(isset($_SESSION['user_id'])) {
header("Location: /");
}
require 'database.php';
$message = '';
if(!empty($_POST['email']) && !empty($_POST['password'])):
//Enter the new user in the database.
$sql ="INSERT INTO users (email, password) VALUES(:email, :password)";
$stmt = $conn->prepare($sql);
$stmt->bindParam(':email', $_POST['email']);
$stmt->bindParam(':password',password_hash($_POST['password'], PASSWORD_BCRYPT));
if ($stmt->execute()):
$message = 'successfully created new user';
else:
$message = 'Sorry there must have been an issue creating your an account.';
endif;
endif;
显示错误说:
注意:在第17行的C:\ xampp \ htdocs \ auth \ register.php中只能通过引用传递变量
在第17行,以下代码如下:
$stmt->bindParam(':password',password_hash($_POST['password'], PASSWORD_BCRYPT));
知道问题是什么以及 只有变量应该通过引用传递 意味着什么?
答案 0 :(得分:7)
bind_param
通过引用获取值。它通过查看您传递的变量并直接指向内部来实现此目的。
在您的调用中,您将返回函数调用的字符串结果 - 在这种情况下为password_hash。因为没有涉及变量,所以没有内脏指向。 PHP因为无法通过引用传递数据而抱怨。
您需要将函数调用的结果粘贴到变量中,然后将该变量传递给bind。
试试这个:
$password = password_hash($_POST['password'], PASSWORD_BCRYPT);
$stmt->bindParam(':password',$password );
信用:Here
答案 1 :(得分:2)
$hashedpassword = password_hash($_POST['password'], PASSWORD_BCRYPT);
$stmt->bindParam(':password',$hashedpassword );
答案 2 :(得分:-1)
首先制作
$password = password_hash($_POST['password'], PASSWORD_BCRYPT);
然后这个
$stmt->bindParam(':password',$password );