Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/295.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 此if语句不是';t工作-我做错了什么?_Php_If Statement - Fatal编程技术网

Php 此if语句不是';t工作-我做错了什么?

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, $

我正在尝试检索当前登录用户的访问级别(admin/member/guest),并根据这一点,在我的页面上向他们显示特定的内容。我现在正试着用echos测试,但仍然无法打印出任何内容。有人能给点建议吗

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查询从来都不是一个好的做法。谢谢,这很好,只是我遗漏了什么。这很好,只是我遗漏了什么