1

从前两天开始我一直在研究这个问题,但仍然无法解决。

我在根目录中有两个脚本,其中会话注册并在我再次访问页面时保持持久,但是当我要从子目录脚本访问页面时,建议没有注册会话。

详细解释如下:

问题是当我从根目录脚本 start_session() 是:http ://www.kstreethome.com/test.php它工作正常

/test.php 的代码

<?php

error_reporting(E_ALL);

echo "This is session save path : " . session_save_path() . "</br>";
//echo phpinfo();
    if(!isset($_SESSION['User']))
    {
        echo "Session not set </br>";
                    session_start();
                    $_SESSION['User'] = "Hiren";
                    $_SESSION['AccessType'] = "U";
                    $_SESSION['UserType'] = "W";
                    $_SESSION['UserID'] = "123";
                    $_SESSION['DataUser'] = "Test";
                    $_SESSION['Password'] = "Test";

        echo session_id();

        echo $_SESSION['User'];
        echo $_SESSION['AccessType'];
        echo $_SESSION['UserType'];
        echo $_SESSION['UserID'];
        echo $_SESSION['DataUser'];
        echo $_SESSION['Password'];     
    }
    else
    {
    echo "Session set </br>";

            echo $_SESSION['User'];
        echo $_SESSION['AccessType'];
        echo $_SESSION['UserType'];
        echo $_SESSION['UserID'];
        echo $_SESSION['DataUser'];
        echo $_SESSION['Password']; 



    }


?>

当我从子目录 Ajax 脚本 start_session() 是:http ://www.kstreethome.com/Ajax/test.php它不起作用但是在这个脚本中它正在存储会话并且可以在同一次运行中访问但是当我重新加载/ Ajax/test.php 会话刚刚被破坏,我必须重新开始。

/Ajax/test.php 的代码

<?php

error_reporting(E_ALL);

echo "This is session save path : " . session_save_path() . "</br>";
//echo phpinfo();
    if(!isset($_SESSION['User']))
    {
        echo "Session not set </br>";
                    session_start();
                    $_SESSION['User'] = "Hiren";
                    $_SESSION['AccessType'] = "U";
                    $_SESSION['UserType'] = "W";
                    $_SESSION['UserID'] = "123";
                    $_SESSION['DataUser'] = "Test";
                    $_SESSION['Password'] = "Test";

        echo session_id();

        echo $_SESSION['User'];
        echo $_SESSION['AccessType'];
        echo $_SESSION['UserType'];
        echo $_SESSION['UserID'];
        echo $_SESSION['DataUser'];
        echo $_SESSION['Password'];     
    }
    else
    {
    echo "Session set </br>";

            echo $_SESSION['User'];
        echo $_SESSION['AccessType'];
        echo $_SESSION['UserType'];
        echo $_SESSION['UserID'];
        echo $_SESSION['DataUser'];
        echo $_SESSION['Password']; 



    }


?>

两个文件中的代码相同,用于测试目的

另一个奇怪的事情是,在根脚本/test.php中它说会话路径''默认为null,因为我没有更改默认值inn php.ini,但在脚本/Ajax/test.php中它说会话保存路径是/ tmp 很奇怪吧?

不用说它在我的本地服务器上运行良好,但在托管服务器上运行良好,所以请在这个问题上指导我。

4

6 回答 6

3

放在session_start()每一页的顶部

<?php
 session_start();
 error_reporting(E_ALL);
于 2013-04-06T05:05:17.893 回答
2

在使用之前,您需要开始会话

 <?php 
 session_start();
 // your code
 ?>
于 2013-04-06T05:08:41.993 回答
1

您需要在访问 $_SESSION 之前调用 session_start()。将它放在每个脚本的顶部,看看是否能解决问题。

于 2013-04-06T05:07:17.453 回答
1

总是以session_start()

<?php
 session_start();
 error_reporting(E_ALL);
于 2013-04-06T05:09:50.250 回答
1

获取或设置任何会话值之前的第一行中的用户<?php session_start()

于 2013-04-06T05:16:51.973 回答
0

您需要session_start()在使用 $_SESSION 之前调用,但我真的建议您制作一个包装类来为您处理所有这些,这样您就不会遇到一堆混乱。

$session = new Session();
$session->set('key', 'val');
于 2013-04-06T05:09:28.197 回答