这是我的登录码,不知道什么是错的(最后一个if,总是去最后一个else)。我什么都试过了,但还是不行。
<?php
error_reporting(E_ALL & ~E_NOTICE);
session_start();
if($_POST['submit']){
include_once("connection.php");
$username = strip_tags($_POST['username']);
$password = strip_tags($_POST['password']);
$sql = "SELECT id, username, password FROM user WHERE username = '$username' AND password = '$password'";
$query = mysqli_query($connection, $sql);
if($query){
$row = mysqli_fetch_row($query);
$userId = $row[0];
$dbUsername = $row[1];
$dbPassword = $row[3];
}
if ($username = $dbUsername && $password == $dbPassword) {
$_SESSION['username'] = $username;
$_SESSION['id'] = $userId;
header('Location: users.php');
}else {
header('Location: error.php');
}
}
?>
和连接代码
<?php
$connection = mysql_connect('localhost', 'root', '');
if (!$connection){
die("Database Connection Failed" . mysql_error());
}
$select_db = mysql_select_db('login');
if (!$select_db){
die("Database Selection Failed" . mysql_error());
}
?>
你会后悔的…你的if
中只有一个=
if ($username = $dbUsername && $password == $dbPassword) {
应该if ($username == $dbUsername && $password == $dbPassword) {
单个=
将其变为赋值而不是比较。
除此之外,你实际上做了两次比较;第一次在SQL中获取用户名和密码,第二次在PHP中。如果您的查询返回用户id,那么您已经知道用户名/密码起了作用。
你也混合了mysql_connect
和mysqli_query
(和mysql_fetch_row
)。正如其他人所建议的,您需要转到mysqli
类或PDO
。但是为了让您继续,您至少需要将mysqli_query
更改为mysql_query
,将mysqli_fetch_row
更改为mysql_fetch_row
。
使用mysql_query($connection, $sql)
代替mysqli_query($connection, $sql);
当你使用mysql_connect