【问题标题】:Check if row has any value if it has redirect检查行是否有任何值,如果它有重定向
【发布时间】: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 queriesbind_param 将用户数据添加到您的查询中。 请勿使用字符串插值或连接来完成此操作,因为您创建了严重的SQL injection bug切勿$_POST$_GET任何用户数据直接放入查询中,如果有人试图利用您的错误,这可能会非常有害。
  • 注意:mysqli 的面向对象接口明显不那么冗长,使代码更易于阅读和审核,并且不容易与过时的mysql_query 接口混淆。在您对程序风格投入过多之前,值得转换一下。示例:$db = new mysqli(…)$db->prepare("…") 程序接口是 PHP 4 时代引入的 mysqli API 的产物,不应在新代码中使用。

标签: php mysql redirect


【解决方案1】:

mysqli_num_rows 只返回结果集中的行数,我假设您要检查pathoption 是否为空,这是一个示例:

if(mysqli_num_rows($result) > 0) {

    $row = mysqli_fetch_assoc($result);

    if ( !empty($row['pathoption']) ) {
        header('location:../../index.php?page=home');
    }

}

注意:您的代码易受 SQL 注入攻击,您必须使用prepared statements

【讨论】:

  • 如果我错了,请纠正我,将其重定向到主页,值为空?您能否修改代码,以便如果该行有一个值,它会重定向到主页?
  • 更新了,我的想法正好相反
猜你喜欢
  • 2011-03-30
  • 2010-10-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-04-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多