如果SESSION用户被“禁止”,PHP检查数据库是否返回true?

时间:2018-10-29 12:34:58

标签: php mysql mysqli session-state

我迷路了,请参见下面的代码。如果在db + table web_wan.blockaccount中存在记录,其中列名称“ isban”等于1,则应该PHP回显“您被禁止”。 但是,在测试时,在表中添加一行:

id - username - isban

1 myuser 1

什么也没有发生,站点正常加载。我检查了连接是否正常,并找到了列。有任何想法吗? SESSION也应该起作用,否则我将根本无法访问该页面。

<?php
$query = $con->query("select id from web_wan.blockaccount where isban='1' and username ='.$_SESSION[username].'") or die($con->error);
while($row = $query->fetch_array())
{
    if(!empty($row))
    echo "Your Account denied access to this site!";
    exit;
} 

?>

PS。我是PHP的新手。

3 个答案:

答案 0 :(得分:2)

无论何时处理PHP会话,PHP文档都必须以以下内容开头:

<?php
session_start();
//any other PHP code

在执行任何其他PHP代码之前,必须先调用session_start();

答案 1 :(得分:1)

在if语句前后使用大括号。如果您不只是将下一行作为if的一部分运行,则退出会以两种方式发生。

if(!empty($row))
    echo "Your Account denied access to this site!"; // only this if true
    exit; // this runs anyway



if(!empty($row)) {
    echo "Your Account denied access to this site!";
    exit;
} // now both only if true

是的,请确保您像Justin T在回答中所说的那样开始会议。

您还可以放弃while循环:

$row = $query->fetch_array();

答案 2 :(得分:0)

根据您的建议,我将代码更改为以下代码,效果很好。我也会像这里提到的那样,确保用户名中允许使用”或其他字符,谢谢!!

<?php
$query = $con->query("select id from web_wan.blockaccount where isban='1' and username ='$_SESSION[username]'") or die($con->error);
if( $query->num_rows!==0 ){
    echo "Your Account denied access to this site!";
    exit;
} 

?>