首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PHP -只有当用户的排名为1时,我才会授予对页面的访问权限

问PHP -只有当用户的排名为1时,我才会授予对页面的访问权限
EN

Stack Overflow用户
提问于 2015-12-12 17:51:47
回答 3查看 119关注 0票数 1

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

这是我的代码:

代码语言:javascript
复制
    <?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变量是连接。$_SESSION_[user]是登录用户的会话。

我的第一个错误是:

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

我不知道为什么会这样,只是因为某种原因(我想)没有得到排名。

我的第二个错误是因为我的语法,因为我在php上很新,我尝试在googling上搜索它,我在tehre指南上添加了MYSQLI_BOTH,因为它需要两个参数,但是tehre只是一个,但是没有修复它,但是这里有错误:

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

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2015-12-12 18:15:28

试试看:

代码语言:javascript
复制
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检查排名也更有效。

票数 1
EN

Stack Overflow用户

发布于 2015-12-12 18:11:25

也许,这就是你正在寻找的解决方案。

代码语言:javascript
复制
if((isset($_SESSION['user'])) && ($row['rank'] == 1)) { 
    header("Location: login.php");
    die("Redirecting to login.php");
}
票数 1
EN

Stack Overflow用户

发布于 2015-12-12 18:03:31

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

请试用此更新代码。

代码语言:javascript
复制
<?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");
        } 
    }
    }

?>
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34243065

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档