Php 超时$\u会话的正确方式是什么

Php 超时$\u会话的正确方式是什么,php,Php,我目前正忙于我的会话以及如何将它们包含在超时代码的if语句中 哪一个是正确的 if (isset($_SESSION['time']) && $_SESSION['time'] < (time() - 3600)) { session_unset(); session_destroy(); include(__DIR__ . '/home.php'); exit; } if(isset($\u SESSION['time'])&&&$\u SESSION[

我目前正忙于我的会话以及如何将它们包含在超时代码的if语句中

哪一个是正确的

if (isset($_SESSION['time']) && $_SESSION['time'] < (time() - 3600)) {
  session_unset();
  session_destroy();
  include(__DIR__ . '/home.php');
  exit;
}
if(isset($\u SESSION['time'])&&&$\u SESSION['time']<(time()-3600)){
session_unset();
会话_destroy();
包括(_DIR__.'/home.php');
出口
}

if(isset($\u SESSION['time'])<(time()-3600)){
session_unset();
会话_destroy();
包括(_DIR__.'/home.php');
出口
}

第一个是正确的。在第二种情况下,执行
isset($\u SESSION['time'])
返回布尔值
true/false
,如果您尝试将其直接与
<(time()-3600)
一起使用,则会将其转换为一个数字
1
,因此计算结果为
1<(time()-3600)
这将是
真的
是1还是0。@Michael Berkowski好的,谢谢you@MichaelBerkowski第二个错误是正确的,但是
true
将始终计算为false,而不是true。如果将
isset($\u SESSION['time'])
强制转换为int,则对于大于1的任何数字,该条件都为true,但没有强制转换。@mtinsley确实如此-我没有找到明确的示例,但因此它们不是强制转换的。
if (isset($_SESSION['time']) < (time() - 3600)) {
  session_unset();
  session_destroy();
  include(__DIR__ . '/home.php'); 
  exit;
}