php登录系统-登录不工作
我刚刚编写了登录系统代码,而checkLogin代码似乎有问题。寄存器工作正常,但当用户尝试登录时,它在数据库中找不到他(即使它出现在数据库中) 守则:php登录系统-登录不工作,php,mysql,sql,Php,Mysql,Sql,我刚刚编写了登录系统代码,而checkLogin代码似乎有问题。寄存器工作正常,但当用户尝试登录时,它在数据库中找不到他(即使它出现在数据库中) 守则: <?php session_start(); include('dbc.php'); $username=$_POST['name']; $mypassword=$_POST['pwd']; $sql="SELECT pwd FROM users WHERE name=?"; $stmt
<?php
session_start();
include('dbc.php');
$username=$_POST['name'];
$mypassword=$_POST['pwd'];
$sql="SELECT pwd FROM users WHERE
name=?";
$stmt = $conn->prepare($sql);
$stmt->bind_param("s",$username);
$stmt->execute();
mysqli_stmt_bind_result($stmt, $password);
mysqli_stmt_fetch($stmt);
$savedpassword = $password;
if(password_verify($mypassword, $savedpassword)){
$_SESSION['name']=$username;
// isset($_SESSION['url']) ? $location = $_SESSION['url'] :
$location = 'main.php';
header("location:$location");
}
else {
header("location:login.php?fail=yes");
}
?>
您能重新整理任何代码问题吗?很遗憾,我无法发表评论。但我的建议是避免使用mysqli,除非您必须使用它,而是使用PDO。试试这个 您可以为语句的执行分配一个变量,而不是使用mysqli绑定
$stmt = $conn->prepare("SELECT pwd
FROM users
WHERE name=?");
$stmt->bindValue(1, $username);
$stmt->execute();
$result = $stmt->fetch();
$savedpassword = $result['pwd'];
通过这种方式,可以将$result指定为一个数组,其中包含查询的所有结果。然后,您可以按名称调用每一列。警告:编写自己的访问控制层并不容易,而且有很多可能会出现严重错误。请不要在任何类似的现代软件都带有健壮的内置软件时编写自己的身份验证系统。为什么你要混合使用适当的面向对象风格的
mysqli
,然后混合一些过程代码,而没有明显的原因?一致性很重要。寻求调试帮助的问题(“为什么此代码不起作用?”)必须包括所需的行为、特定的问题或错误以及在问题本身中重现这些问题所需的最短代码。没有明确问题陈述的问题对其他读者没有帮助。在mysqli连接创建代码之前,您应该能够使用以下代码自己找到错误:error\u reporting(E\u ALL);ini_集('display_errors',1);/*在实时服务器上将其设置为0*/代码>。后跟:$mysqliDriver=newmysqli_驱动程序()$mysqliDriver->report_mode=(MYSQLI_report_ERROR | MYSQLI_report_STRICT)代码>。将帮助您更好地理解错误报告。