【发布时间】:2017-11-26 00:47:45
【问题描述】:
我正在尝试在您选择要播放的“类”的页面上设置一个 if 语句。我要检查的是行路径选项是否设置了任何值,是否已重定向到主页,如果没有设置任何值,则不重定向。目前我在注册时的用户和“统计”表中设置了一个用户名。我遇到的问题是它重定向到我在 if 语句中设置的任何内容。
这是我的代码:
//CREATE CONNECTION
$conn = new mysqli($dbserver, $dbusername, $dbpassword, $db);
$username = $_SESSION['loggedin'];
// CHECK CONNECTION
if ($conn->connect_error)
{
die("Connection Failed: ".$conn->connect_error);
}
$query = "SELECT pathoption from stats where username='$username'";
$result = mysqli_query($conn, $query);
if(mysqli_num_rows($result) > 0)
{
header('location:../../index.php?page=home');
}
【问题讨论】:
-
你不检查 pathoption 字段是否有值,你只检查用户是否在 stats 表中有任何关联的记录。
-
@Shadow 好吧.. 我将如何检查登录用户的字段路径选项是否具有正确的值?
-
警告:当使用
mysqli时,您应该使用parameterized queries 和bind_param将用户数据添加到您的查询中。 请勿使用字符串插值或连接来完成此操作,因为您创建了严重的SQL injection bug。 切勿将$_POST、$_GET或任何用户数据直接放入查询中,如果有人试图利用您的错误,这可能会非常有害。 -
注意:
mysqli的面向对象接口明显不那么冗长,使代码更易于阅读和审核,并且不容易与过时的mysql_query接口混淆。在您对程序风格投入过多之前,值得转换一下。示例:$db = new mysqli(…)和$db->prepare("…")程序接口是 PHP 4 时代引入的mysqliAPI 的产物,不应在新代码中使用。