【发布时间】:2013-07-07 04:23:14
【问题描述】:
所以我在这里要做的是让我的用户登录。 这是我用来执行此操作的脚本。
我刚刚使用在这里找到的转换器:https://wikis.oracle.com/display/mysql/Converting+to+MySQLi 将我的 Mysql 转换为 mysqli,因为我是初学者并且不知道如何去做。
现在,当用户输入正确的密码和用户名时。 它完全符合我的要求,用户被重定向到“dashboard.php” 但是,当用户输入不正确的数据时,用户最终会看到黑色的“login.php”(这是我在这里展示的代码),而不是我想要的“loginerror.php”。
我希望这里的一些人可以帮助我,因为我很迷茫。
PS:是的,我知道密码现在是纯文本的,但不用担心,因为我稍后会修复它。
<?php
session_start();
if(!$_SERVER['REQUEST_METHOD'] == 'POST') {
echo "Please leave.<br /><br />";
echo "<a href='index'>Click to go back</a>";
exit();
}
if(($GLOBALS["___mysqli_ston"] = mysqli_connect('localhost', 'root', ''))) {
if(((bool)mysqli_query($GLOBALS["___mysqli_ston"], "USE users"))) {
$username = $_POST['username'];
$password = $_POST['password'];
$query = "SELECT * FROM users WHERE username = '$username' AND password = '$password'";
$zoekresultaat = mysqli_query($GLOBALS["___mysqli_ston"], $query);
if($zoekresultaat = mysqli_affected_rows($GLOBALS["___mysqli_ston"]) > 0) {
$record = mysqli_fetch_assoc($zoekresultaat);
$zoekresultaat = mysqli_query($GLOBALS["___mysqli_ston"], $query);
if($zoekresultaat = mysqli_affected_rows($GLOBALS["___mysqli_ston"]) > 0) {
$record = mysqli_fetch_assoc($zoekresultaat);
$_SESSION['login'] = true;
$_SESSION['username'] = $record['username'];
header('location: dashboard.php');
} else {
header('location: loginerror.php');
}
exit();
} else {
echo "<br /><br />Could not find Database";
}
} else {
echo "<br /><br />Could not connect to Database";
}
}
?>
【问题讨论】:
-
调试并检查它是否真的进入 else 条件。
-
在编写更多 SQL 代码之前,必须阅读proper SQL escaping 以避免SQL injection bugs。对于
mysqli,您需要使用bind_param方法提供查询使用的值,并且永远不应该将来自$_POST的用户提供的数据直接放入您的查询中。
标签: php mysql database login mysqli