我正在从数据库中登录用户的数据,但是每次我尝试登录时都无法访问,并且我不知道php代码有什么问题,有人可以在这方面帮助我吗 我认为连接没有问题,但是我得到的错误是“密码错误”
php代码
if (isset($_POST['submit'])){
$dbServName = "localhost";
$dbuser = "root";
$dbPassword = "";
$dbname = "formlab2";
$conn=mysqli_connect($dbServName,$dbuser,$dbPassword,$dbname);
$email = $_POST['email'];
$password=$_POST['Password'];
$sql = "SELECT * FROM users WHERE email=? AND password=?;";
$stmt = mysqli_stmt_init($conn);
if (!mysqli_stmt_prepare($stmt,$sql)) {
echo "error";
}
else{
mysqli_stmt_bind_param($stmt,"ss",$email,$password);
mysqli_stmt_execute($stmt);
$result= mysqli_stmt_get_result($stmt);
if ($row = mysqli_fetch_assoc($result)) {
$pswcheck = password_verify($password, $row['password']);
if ($pswcheck == false) {
echo "WRONG PASSWORD";
}
else if ($pswcheck == true) {
session_start();
$_SESSION['userID']= $row ['user_id'];
header("location: ../wel.php");
}
}
}
}
答案 0 :(得分:0)
用于连接数据库,我使用以下方法:
<?php
$DB_HOST = 'localhost';
$DB_USER = 'root';
$DB_PASS = 'root';
$DB_NAME = 'name-of-db';
// $DB_PORT = '8889';
$link = new mysqli($DB_HOST, $DB_USER, $DB_PASS, $DB_NAME);
//$link = new mysqli($DB_HOST, $DB_USER, $DB_PASS, $DB_NAME, $DB_PORT);
if ($link->connect_error) {
die('Connect Error ('.$link->connect_errno.') '.$link->connect_error);
}
$link->set_charset('utf8');
我注意到您隐藏了数据库密码,但是如果您在localhost中工作,那么它应该只是root用户,以防万一。为了使您自己更轻松,您可以将此代码保存在一个单独的文件中,然后用户“包含”或“需要”将代码插入页面。那么您可以轻松地将文件包含在多个页面上。
然后进行登录过程: 所以它不是数据库连接,而是登录过程? 请尝试在文档顶部添加session_start。 这是我之前登录过的方式,也许可以帮助您:
$sql = 'SELECT id, pwhash FROM tablename WHERE username=?';
$stmt = $link->prepare( $sql );
$stmt->bind_param( 's', $un );
$stmt->execute();
$stmt->bind_result( $id, $pwhash);
while ( $stmt->fetch() ) {
if ( password_verify( $pw, $pwhash ) ) {
$_SESSION[ 'uid' ] = $id;
$_SESSION[ 'uname' ] = $un;
}
一些小差异。我的password_verify上有一个if语句。试试吧。