【问题标题】:isset in Session Won't Work会话中的 isset 不起作用
【发布时间】:2014-05-23 05:17:04
【问题描述】:

我创建了一个登录系统,用于确定用户是否使用$_SESSION['logged_in]=true; 会话代码登录。但是不知何故,当用户关闭他/她的浏览器并返回页面时,它会给他们一个关于会话故障的错误。所以我使用了if(isset($_SESSION['logged_in']==true)){,但是当我打开我的网站时,它给了我一个错误提示

致命错误:无法对表达式的结果使用 isset()(您可以改用“null !== expression”)

我该如何解决这个问题?

【问题讨论】:

  • isset($_SESSION['logged_in']==true) --- 这是什么意思?
  • if (isset($_SESSION['logged_in']) && $_SESSION['logged_in'] == true)) 或简称if (!empty($_SESSION['logged_in']))

标签: php html session


【解决方案1】:

我认为你有一个错字。而不是

if(isset($_SESSION['logged_in']==true)){ 

使用

if(isset($_SESSION['logged_in'])==true){ 

您需要检查会话是否最初设置,而不是会话的值。

[编辑]: 当您将会话的值分配给true 时,最好添加对会话值的更多检查,因此它变为:

if(isset($_SESSION['logged_in'])==true && $_SESSION['logged_in'] == true){ 

【讨论】:

  • 所以如果我想将会话设置为logged_in = true;我会使用 'isset($_SESSION['logged_in'])=true;'或者只是 '$_SESSION['logged_in']=true; ?
  • 如果要将值分配给$_SESSION['logged_in'],请使用$_SESSION['logged_in'] = true;。函数isset只是检查你之前是否设置过会话。
  • 这会改变整个检查。即使将logged_in 设置为false,它也会报告true。因为已经设置好了。
  • 这取决于人们如何编码,例如他们可能未设置未登录或设置为true(如果已登录)。无论如何,我已经编辑了我的答案以适应这种可能性。谢谢。
【解决方案2】:

这样改,

if(isset($_SESSION['logged_in']) && $_SESSION['logged_in']==true ){ 
 //do your stuff.
} 

【讨论】:

    猜你喜欢
    • 2018-09-24
    • 1970-01-01
    • 1970-01-01
    • 2016-10-29
    • 2012-11-12
    • 2018-10-30
    • 1970-01-01
    相关资源
    最近更新 更多