即使在使用会话时,我的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");
}
?>