即使我正在使用会话,我的网址也会在所有浏览器中打开。 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']=="");
?>
答案 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");
}
所以你甚至不需要其他部分,因为只要设置了标题,他就会被重定向。