【问题标题】:Only variables should be passed by reference php只有变量应该通过引用传递 php
【发布时间】:2017-04-03 19:32:18
【问题描述】:

我在这里检查了类似的问题,但它无法解决我的问题。我正在创建一个 php 用户注册表单,当我尝试注册时出现此错误:严格标准:只有变量应该在第 14 行的 F:\wamp64\www\login\register.php 中通过引用传递

我在 PHP 5.6 和 7.0 版本上试过,但错误是一样的。

第 14 行是这样的:

$stmt->bindParam(':password', password_hash($_POST['password'],  PASSWORD_BCRYPT));

这是我的完整代码:

<?php
$server = 'localhost';
$username = 'root';
$password = 'root';
$database = 'auth';

try{
  $conn = new PDO("mysql:host=$server;dbname=$database;", $username, $password);
} catch(PDOException $e) {
  die( "Connection failed: " . $e->getMessage());
}

$message = '';

if(!empty($_POST['email']) && !empty($_POST['password'])):

  $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 account';
  endif;

endif;

?>

感谢您的帮助。

【问题讨论】:

    标签: php


    【解决方案1】:

    试试

    $pass = ':password';
    $phash = password_hash($_POST['password'],  PASSWORD_BCRYPT);
    
    $stmt->bindParam($pass, $phash);
    

    【讨论】:

    • 感谢您的回复,但它给了我 2 个错误:注意:未定义索引:第 5 行的 F:\wamp64\www\login\register.php 中的密码和警告:password_hash() 预计在至少 2 个参数,1 个在第 5 行的 F:\wamp64\www\login\register.php 中给出
    • 谢谢。我仍然收到通知:未定义索引:$phash 的第 5 行消息中的 F:\wamp64\www\login\register.php 中的密码
    • 打印 $_POST['password'] 并查看结果
    • 相同。注意:未定义索引:第 27 行 F:\wamp64\www\login\register.php 中的密码
    • 尝试将条件更改为 if(isset($_POST['email']) && !empty($_POST['email']) && isset($_POST['password']) && !空($_POST['密码'])):
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-07-11
    • 2011-10-16
    • 1970-01-01
    相关资源
    最近更新 更多