我迷路了,请参见下面的代码。如果在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的新手。
答案 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;
}
?>