2013-04-06 62 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()在第一行中的任何會議前值獲取或設置啓動代碼。