我是PHP的新用户。我正在开发一些php项目。想要关于php中的会话的一些帮助。我有login.html页面,其形成了对login.js的动作执行。当登录执行时,用户名和密码已经请求url到login.php页面以检查用户名和密码。在mysql db table中输入密码并启动session_start()并将$ _SESSION设置为用户名和密码。如果为true,则在home.php页面上重新定位会话。但我的home.php页面内容html代码与这个PHP代码
<?php
if(!isset($_SESSION["USER"])) {
include ('../content/logout.php');
exit();
}
?>
我在login.php上启动了sessio_start()。我已经检查了print_r($ _ SESSION);会议一直没有开始。但它的开始。当我搬到home.php它不起作用。我在home.php上检查print_r但是没有显示。我已经附上了在home.php中编写的php代码。 它显示了我的错误 [client 127.0.0.1:53005] PHP警告:session_destroy():试图在logout.php中销毁未初始化的会话........
我的注销页面包含带有此php代码的HTML代码
<?php
session_destroy();
session_unset();
?>
并重新定位到login.html页面。
答案 0 :(得分:0)
您必须再次开始会话。必须在每一页上。
<?php
session_start();
if(!isset($_SESSION["USER"])) {
include ('../content/logout.php');
exit();
}
?>
要使用会话变量,你总是必须在你拥有的每个php上启动会话。它有点像POST而不发送^^它必须是任何输出!但你必须告诉你的php有一个会话,你想使用它。
修改强>
请参阅this quote
session_start()根据通过GET或POST请求传递的会话标识符创建会话或恢复CURRENT ONE,或通过cookie传递。
答案 1 :(得分:0)
当服务器收到HTTP请求时,它会收到GET / POST / COOKIE数据,并且不知道客户端与哪个服务器端会话相关。
当您致电session_start()
服务器时根据通过GET或POST请求传递的会话标识符创建会话或恢复当前[会话],或通过cookie传递。
因此,每当您需要在php中进行会话时(例如:读取/写入$ _SESSION),必须首先使用session_start()
调用会话,服务器将创建或加载会话基于GET / POST / COOKIE数据。
如果每次调用session_start()
都很痛苦,请使用session.auto_start
param。或者您可以将session_start()
放在auto_prepend_file
。