我使用的是基于PHP 5的Web应用程序,没有任何框架,我的所有管理页面和用户页面都有以下代码来处理会话。这是处理会话的正确方法吗?或者注销后阻止用户进入主页的最佳方法?请建议我们。
<?php
if(isset($_SESSION))
{
?>
<html>...</html>
<?php
}
else {
echo 'Session expired';
}
?>
提前致谢。
答案 0 :(得分:0)
在这种情况下,这样做会更短:
<?php
session_start();
if(!isset($_SESSION['whatever']))
die("Session Expired");
?>
<html>..etc.
您不需要使用if/else
包装一大堆脚本。
然而,这个问题不是主题,因为它是基于意见的,而不是关于你所面临的技术问题。
答案 1 :(得分:0)
问题是您始终必须以session_start()
开头,因此可能会设置变量$_SESSION
。
我建议存储一个令牌来实际显示用户是否经过身份验证,以便会话被销毁。
代码段
<?php
session_start();
if ($_POST["username"] == "admin" && $_POST["password"] == sha1("password")):
$_SESSION["authorized"] = true;
$_SESSION["id"] = session_regenerate_id();
endif;
?>
在这种情况下,您可以检查会话是否存在,然后如果用户已通过身份验证,则最好还是重新生成会话ID。
<?php
if(isset($_SESSION) && $_SESSION["authorized"] == true):
/* What you plan to do here */
endif;
?>
答案 2 :(得分:-1)
你走在正确的轨道上
<?php
if(isset($_SESSION))
{
?>
<html>...</html>
<?php
}
else {
echo 'Session expired';
我会整理你的行,以便更友好一些
<?php
if(isset($_SESSION)) {
?>
<html>...</html>
<?php
} else {
echo 'Session expired';
}
您也无需在<?php;
文件中指定php.ini
你可以设置它,这样你就可以在做出改变后使用<?;
你需要重启apache(服务或/etc/init.d/httpd
restat或windows
例如找到xampp并重新启动apache。