Php 此if语句不是';t工作-我做错了什么?
我正在尝试检索当前登录用户的访问级别(admin/member/guest),并根据这一点,在我的页面上向他们显示特定的内容。我现在正试着用echos测试,但仍然无法打印出任何内容。有人能给点建议吗Php 此if语句不是';t工作-我做错了什么?,php,if-statement,Php,If Statement,我正在尝试检索当前登录用户的访问级别(admin/member/guest),并根据这一点,在我的页面上向他们显示特定的内容。我现在正试着用echos测试,但仍然无法打印出任何内容。有人能给点建议吗 if(isset($_SESSION['username'])){ global $con; $q = "SELECT access FROM users WHERE username = '$username' "; $result = mysql_query($q, $
if(isset($_SESSION['username'])){
global $con;
$q = "SELECT access FROM users WHERE username = '$username' ";
$result = mysql_query($q, $con);
if($result == 'guest')
{
echo "You are a guest";// SHOW GUEST CONTENT
}
elseif($result == 'member')
{
echo "You are a member"; // SHOW OTHER CONTENT
}
elseif($result == 'admin')
{
echo "You are an admin";// SHOW ADMIN CONTENT
}
}
返回的
$result
不是可以比较的字符串;这是一个好主意。您需要从$result
获取行:
$row = mysql_fetch_assoc($result)
$access = $row['access'];
if($access == 'guest') {
...
}
...
其他一些问题:
- 查询中可能存在SQL注入问题。在没有正确转义变量值之前,决不能直接将变量值插入SQL查询。您可能想使用
- 这本书正在被弃用。您应该尝试使用(MySQL改进版)或(PHP数据对象)
返回的$result
不是可以比较的字符串;这是一个好主意。您需要从$result
获取行:
$row = mysql_fetch_assoc($result)
$access = $row['access'];
if($access == 'guest') {
...
}
...
其他一些问题:
- 查询中可能存在SQL注入问题。在没有正确转义变量值之前,决不能直接将变量值插入SQL查询。您可能想使用
- 这本书正在被弃用。您应该尝试使用(MySQL改进版)或(PHP数据对象)
$result
是一个mysql资源。你需要
if(isset($_SESSION['username'])){
global $con;
$q = "SELECT access FROM users WHERE username = '$username' LIMIT 1";
$result = mysql_query($q, $con);
$row = mysql_fetch_assoc($result);
$access = $row['access'];
if($access == 'guest')
{
echo "You are a guest";// SHOW GUEST CONTENT
}
elseif($access == 'member')
{
echo "You are a member"; // SHOW OTHER CONTENT
}
elseif($access == 'admin')
{
echo "You are an admin";// SHOW ADMIN CONTENT
}
}
$result
是一个mysql资源。你需要
if(isset($_SESSION['username'])){
global $con;
$q = "SELECT access FROM users WHERE username = '$username' LIMIT 1";
$result = mysql_query($q, $con);
$row = mysql_fetch_assoc($result);
$access = $row['access'];
if($access == 'guest')
{
echo "You are a guest";// SHOW GUEST CONTENT
}
elseif($access == 'member')
{
echo "You are a member"; // SHOW OTHER CONTENT
}
elseif($access == 'admin')
{
echo "You are an admin";// SHOW ADMIN CONTENT
}
}
我看到两个问题:
1.您需要使用session_start();一开始。否则,将不会执行if语句。
2.mysql_查询($q,$con)不返回字符串。它返回一个记录集。您需要使用mysql\u fetch\u assoc($result);返回关联数组。从数组中检索所需的值:$assoc\u arr=mysql\u fetch\u assoc($result); $access=$assoc_arr['access'] 现在您可以比较$access。我看到两个问题: 1.您需要使用session_start();一开始。否则,将不会执行if语句。 2.mysql_查询($q,$con)不返回字符串。它返回一个记录集。您需要使用mysql\u fetch\u assoc($result);返回关联数组。从数组中检索所需的值:
$assoc\u arr=mysql\u fetch\u assoc($result); $access=$assoc_arr['access']
现在,您可以比较$access。您遇到了一些严重的SQL注入问题。提示:
$result
不是字符串。您是否已将会话_start()放入其中;在你脚本的最顶端?如果不起作用呢?此外,我还将ifelse交换为开关块并将guest设置为默认操作。$result
将不包含访问级别,而是包含资源值。您必须执行$row=mysql\u fetch\u assoc($result,$con)$access=$row['access'];如果($access=='guest'){…}
以验证它。另外,如前所述,SQL注入漏洞。您有一些严重的SQL注入问题。提示:$result
不是字符串。您是否已将会话_start()放入其中;在你脚本的最顶端?如果不起作用呢?此外,我还将ifelse交换为开关块并将guest设置为默认操作。$result
将不包含访问级别,而是包含资源值。您必须执行$row=mysql\u fetch\u assoc($result,$con)$access=$row['access'];如果($access=='guest'){…}
以验证它。另外,如前所述,SQL注入漏洞。如果您要投否决票,请解释原因。但至少,感谢您将我的代表设置为5的倍数。@alex may是一个关键词:D在我看来,在不首先转义的情况下直接将值插入SQL查询从来都不是一个好做法。如果您要进行向下投票,请解释原因。但至少,感谢您将我的rep设置为5的倍数。@alex may是一个关键词:D在我看来,不先转义就直接将值插入SQL查询从来都不是一个好的做法。谢谢,这很好,只是我遗漏了什么。这很好,只是我遗漏了什么