PHP - 我试图仅在用户排名为1时授予对页面的访问权限

时间:2015-12-12 17:51:48

标签: php

感谢所有愿意帮助我的人。

这是我的代码:

< other
    year = other year ifFalse: [^year < other year].
    month = other month ifFalse: [^month < other month].
    day = other day ifFalse: [^day < other day].
    hour = other hour ifFalse: [^hour < other hour].
    ^minute < other minute

我经常尝试过......我的朋友对我有所帮助。但他无法让它发挥作用。所以基本上 <?php require("inc/connection.php"); require("inc/common.php"); if(empty($_SESSION['user'])) { //header("Location: login.php"); exit('No Session'); } $query = "SELECT rank FROM users WHERE `username` = ? and `rank` = 1"; $result = mysqli_prepare($link, $query); echo "SELECT rank FROM users WHERE `username` = '" . $_SESSION['user']['username'] . "' and `rank` = 1"; mysqli_stmt_bind_param($result, 's', $_SESSION['user']['username']); mysqli_stmt_execute($result); if(mysqli_num_rows($result) < 1) { //header("Location: login.php"); exit('User Doesnt have one rank'); } ?> 变量就是连接。 $Link是登录用户的会话。

我的第一个错误是:

  

警告:mysqli_query():无法在第5行的C:\ wamp \ www \ RoLuck \ adminpanel.php中获取mysqli

我不知道为什么会发生这种情况,因为某种原因而没有获得排名(我认为)。

我的第二个错误是因为我的语法,因为我是相当新的PHP我尝试谷歌搜索我继续teh php指南并添加$_SESSION_[user],因为它需要2个参数,但tehre只有1但没有解决它但这是错误:

  

警告: mysqli_fetch_array()要求参数1为mysqli_result,在第6行的C:\ wamp \ www \ RoLuck \ adminpanel.php中给出null

3 个答案:

答案 0 :(得分:1)

也许,这是您正在寻找的解决方案

if((isset($_SESSION['user'])) && ($row['rank'] == 1)) { 
    header("Location: login.php");
    die("Redirecting to login.php");
}

答案 1 :(得分:1)

尝试一下:

require("inc/connection.php"); 
require("inc/common.php"); 
if(empty($_SESSION['user']['username'])) { 
    header("Location: login.php");
    exit();
}
$result = mysqli_prepare($link, "SELECT rank FROM users WHERE `username` = ? and `rank` = 1");
$result->bind_param('s', $_SESSION['user']['username']);
mysqli_stmt_execute($result);
$result->store_result();
if($result->num_rows() < 1) {
    header("Location: login.php");
    exit();
}

请注意准备好的语句用法,用于将用户输入与查询分开。有关预准备语句的更多信息,请参阅http://php.net/manual/en/mysqli.quickstart.prepared-statements.php

以前您的查询无效,因为$_SESSION[user]是一个字符串,需要引用。准备好的陈述将由您处理。

让SQL检查排名也更有效。

答案 2 :(得分:0)

$_SESSION[user]不是有效的语法。它应该是$_SESSION['user']

请尝试更新此代码。

<?php 
    require("inc/connection.php"); 
    require("inc/common.php"); 

    if((empty($_SESSION['user'])) || (!isset($_SESSION)))
    {
        echo "Nothing inside session variable";
    }
    else
    {
        $result = mysqli_query($link, 'SELECT rank FROM users WHERE `username` =   "' . $_SESSION['user'] . '"');
    while($row = mysqli_fetch_array($result, MYSQLI_BOTH)) {
        if(empty($_SESSION['user']) || $row['rank'] == 1) { 
            header("Location: login.php");
            die("Redirecting to login.php");
        } 
    }
    }

?>