URL在所有浏览器中打开,即使用户未登录


URL opening in all browsers even when user not logged in?

即使在使用会话时,我的url也会在所有浏览器中打开。例如abc.com/123.php,没有用户登录。这会在所有浏览器中打开。我正在使用此代码所有代码都在<php打开/关闭标签我使用的ok代码是

         <?php
       session_start();
         if (isset($_SESSION['LAST_REQUEST_TIME'])) {
     if (time() - $_SESSION['LAST_REQUEST_TIME'] > 600) {
    // session timed out, last request is longer than 10 minutes ago
    unset($_SESSION);
    session_destroy();
    header("location:userlogin.php");
}
  } else {
$_SESSION['LAST_REQUEST_TIME'] = time();
   }
        if($_SESSION['username']=="");
        ?>

我不确定这是否编译良好。因为有几个问题。

小心这行代码:

if($_SESSION['username']=="");

这意味着这个if语句的true部分以分号结束。

第二件事是,您的else部分从不执行,而是打印为常规HTML。

我会这样写:

<?php
session_start();
if (isset($_SESSION['LAST_REQUEST_TIME'])) {
  if (time() - $_SESSION['LAST_REQUEST_TIME'] > 600) {
    // session timed out, last request is longer than 10 minutes ago
    unset($_SESSION);
    session_destroy();
    header("location:userlogin.php");
  }
} else {
  $_SESSION['LAST_REQUEST_TIME'] = time();
}
if(isset($_SESSION['username'])) {
?>
 ///////SOME HTML CODE/////
<?php
} else {
  header("location:to_some_login_page.php");
}
?>

我相信这就是你关闭<?php标签的意图。

为了可读性,我建议你这样做:

if ($_SESSION['username']!="") {
  header("location:to_some_login_page.php");
}

所以你们甚至不需要其他部分,因为只要设置了头,他就会被重定向。

因为您的

else {
header("location:to_some_login_page.php");
   }

<?php ?> 之外

试试这个:

<?php
session_start();
if (isset($_SESSION['LAST_REQUEST_TIME'])) {
if (time() - $_SESSION['LAST_REQUEST_TIME'] > 600) {
    // session timed out, last request is longer than 10 minutes ago
    unset($_SESSION);
    session_destroy();
    header("location:userlogin.php");
}
else {
$_SESSION['LAST_REQUEST_TIME'] = time();
 }
 if($_SESSION['username']=="");
 ///////your code/////
}
else {
header("location:to_some_login_page.php");
   }
?>