与php中的session_start()相关

时间:2015-01-19 08:17:41

标签: mysql php-5.5

我是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页面。

2 个答案:

答案 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