即使用户未登录,所有浏览器中的URL都会打开?

时间:2013-12-01 17:19:18

标签: php

即使我正在使用会话,我的网址也会在所有浏览器中打开。 Ex 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']=="");
        ?>

2 个答案:

答案 0 :(得分:0)

因为你的

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");
   }
?>

答案 1 :(得分:0)

我不确定这是否合适。因为有几个问题。

小心这一行代码:

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

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

第二件事是你的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");
}

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