2013-04-06 79 views
0

自从最近两天以来,我一直在处理这个问题,但仍无法解决。会话不在不同目录的页面之间工作

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

下面

详细的解释:

问题是,当我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']; 



    } 


?> 

当我start_session()从子目录Ajax脚本 那是: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它说会话路径'',这是默认为空,因为我没有改变默认的客栈php.ini,但在脚本/Ajax/test.php它说会话保存路径是/ tmp奇怪的权利?

这是不用说,它工作正常我的本地服务器,但没有托管服务器 所以请指导我在这个问题。

回答

1

session_start()在顶部的每一页

<?php 
session_start(); 
error_reporting(E_ALL); 
1

您需要到$ _SESSION任何访问调用session_start()的。将它放在每个脚本的顶部,看看是否可以解决问题。

2

要使用你需要开始seassion

<?php 
session_start(); 
// your code 
?> 
1

你需要使用$ _SESSION之前调用session_start(),但我真的建议做一个包装类来处理这一切给你,让你不前有一堆混乱。

$session = new Session(); 
$session->set('key', 'val'); 
1

总是session_start()

<?php 
session_start(); 
error_reporting(E_ALL); 
1

用户<?php session_start()在第一行中的任何会议前值获取或设置启动代码。