【问题标题】:PHP Fatal error: Cannot use isset() on the result of an expression (you can use "null !== expression" instead) in /var/www/html/index.php on line 14PHP 致命错误:无法在第 14 行的 /var/www/html/index.php 中的表达式结果上使用 isset()(您可以使用“null !== expression”)
【发布时间】:2016-10-24 19:53:35
【问题描述】:

PHP 致命错误:无法在第 14 行的 /var/www/html/index.php 中的表达式结果上使用 isset()(您可以使用“null !== expression”)

<?php
    ini_set('error_reporting', E_ALL);
    ini_set('display_errors', 1);
    include 'header.php';
    include 'dbh.php';

?>

<?php
    if (isset($_SESSION['id'])) 
    {
        echo "you are logged in<br>";

        if (isset($_SESSION['active']==0))
            echo "your account is not activated<br>";
        else
            echo "you are logged in and activated<br>";
    }
    if (!isset($_SESSION['id'])) 
    {
        echo "you are not logged in<br>";
    }
?>

</body>
</html>

我对 php 比较陌生,我的代码有问题,我想确保如果我的数据库中的 active 设置为 0,那么它将回显它们没有被激活。如果您在我的代码中发现任何错误,请告诉我。

谢谢

【问题讨论】:

  • 你有isset($_SESSION['active']==0)$_SESSION['active']==0 是一个表达式,表示您正在将其与某物进行比较。这是不允许的,因为 isset 应该只检查变量是否存在。您可能想要做一些更像if(isset($_SESSION['active']) &amp;&amp; $_SESSION['active'] == 0){ 的事情,它将 if 语句分成两个表达式,这两个表达式都需要为真,变量需要设置并且需要等于 0。
  • @JonathanKuhn 感谢您的快速回复!我现在意识到我错误地使用了 isset。您的解决方案效果很好。

标签: php


【解决方案1】:
if (isset($_SESSION['active']==0))

错了,因为参数是一个表达式。

if (intval($_SESSION['active']) == 0)

解析为整数并将其与 0 进行比较:安全且短

【讨论】:

    【解决方案2】:

    您可以使用!empty() 代替!isset() 示例:

    if (!empty($_SESSION['id'])) 
        {
            echo "you are logged in<br>";
        }
    else {
    //do whatever you want
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-05-22
      • 2015-11-10
      • 1970-01-01
      • 2016-12-26
      • 2016-01-09
      • 1970-01-01
      • 1970-01-01
      • 2017-04-24
      相关资源
      最近更新 更多