【发布时间】: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