【问题标题】:Getting an Fatal error: Call to a member function prepare() on a non-object出现致命错误:在非对象上调用成员函数 prepare()
【发布时间】:2019-05-21 23:17:21
【问题描述】:

我使用 mysql 数据库和 php 创建了一个简单的登录身份验证,我收到一个错误“致命错误: 调用非对象中的成员函数 prepare()”。

<?php

$mysqli = new mysqli('localhost','root','','secure_login')

if (isset($_POST['user'],$_POST['pass'])){
    $username = $_POST['user'];
    $password = $_POST['pass'];
     if (login($username,$password,$mysqli == true)){
         //login sucess
         header('Location: ../stu_pages/welcome.html');
     }else{
         //login failed
         header('Location: ../index.html');
     }
}


function login($username,$password,$mysqli){
   if ($stmt = $mysqli->prepare("SELECT `id`, `username`, `password` FROM `member` WHERE `username` = ?")){
       $stmt->bind_param("s", $username);
       $stmt->execute();
       $stmt->store_result();
        if ($stmt->num_rows === 0){
            $stmt->bind_result($user_id,$user_name,$db_password);
            $stmt->fetch();
             if ($password == $db_password){
                  return true;
             }else{
                  return false;
             }
        }else{
           echo 'no record found';
        }
   }
}
?>

【问题讨论】:

  • 您不应该存储纯文本密码,您被黑客入侵。您应该使用password_hash()password_verify()
  • 这里javascript标签有什么用?

标签: php function mysqli passwords


【解决方案1】:
if (login($username,$password,$mysqli == true))

替换为

if (login($username,$password,$mysqli) == true)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-12-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多