2016-04-19 35 views
0

我想通過$SESSION變量在頁面之間共享變量。在file1.php我php頁面之間的不同會話ID

<?php session_start(); 
    require_once('connect.php'); 
    global $gb; 
    $_SESSION['myvar'] = "somestring"; 
    // Some other code 
?> 

而在我的第二fille2.php我有

<?php session_start(); 
    require_once('connect.php'); 
    $myvar = $_SESSION['myvar']; 
?> 

$myvar是空的。我首先調用一個ajax調用file1.php,然後調用file2.php。我試過呼應session_id(),這是不同的。這裏有什麼問題?

編輯:我從本地主機叫我的服務器端的PHP腳本,並使用Chrome啓用了CORS插件,如果該事項

+0

這兩個文件都在同一個服務器上有完全相同的域嗎? –

+0

@CharlotteDunois是的,他們是。 – novalain

+0

我不認爲你需要''session_start();'在'file2.php'中 – andre3wap

回答

2

我不知道你的意思,但如果我有正確的理解,無論是文件正在使用AJAX由js腳本調用。如果您可以在調用完成時包含js代碼,那將非常有用。無論如何,我很確定第二個文件是在第一個文件之前下載的。您可以做的解決方法是將session_start()$_SESSION['myvar']變量聲明同時抽象到另一個文件或當前文件的頂部,例如在名爲'session_init.php'的文件中。 session_init.php:

<?php 

//init session and session variable 
session_start(); 
/* $_SESSION['myvar'] = 'value'; */ 

當前的文件(你正在AJAX請求的文件):

<?php 

//include this folder on the top of the page where the ajax petition is made 
require_once('session_init.php'); 
$_SESSION['myvar'] = 'Some Value'; 
?> 

<script type="text/javascript"> 

    //js code to make ajax petitio to file 1 

    $.ajax({ 

    //parameters and other stuff 

    success : function(resp){ 

      //js code to make ajax petition to file 2 
      $.ajax({ 

      //parameters and other stuff 
      }); 
     } 
    }) 
</script> 

現在$_SESSION['myvar']應該在這兩個文件訪問,只要你去clare session_start()位於每個文件的頂部。請記住,嵌套AJAX請求不是一個好習慣。你也可以採用不同的方法通過文件發送數據,例如,發送'myvar'的值作爲AJAX請求的參數。

+0

我不認爲OP會靜態設置$ _SESSION ['myvar']爲每個文件開頭的'值'。這種打敗了他正在做的事情的目的。操作和提取會話的內容應該在每個文件的基礎上完成;會話開始很好,但在該文件中。我已經對你的帖子提出了一個建議編輯(希望能被接受),這可以解決這個問題。 – hsanders

+0

是的你是對的。我沒有注意到他在file1上設置了$ _SESSION ['myvar']的值,所以感謝您的編輯。無論如何,您可以在'session_init.php'上設置默認值,然後在需要時進行更改。 –

+0

問題出現在第二頁上,原始值將被默認值覆蓋。 – hsanders

1

聽起來好像你並沒有打電話給session_start()做AJAX調用,這會導致兩個不同的會話。那麼,或者您正在重新生成會話編號connect.php

如果這樣不能幫助您解決問題,請提供所有相關代碼,以便我可以嘗試重現該問題。

+0

嘿!你是說我需要從創建AJAX調用的文件中調用session_start()。我需要從我的JS文件中調用它嗎? – novalain

+0

@novalain來自執行AJAX的PHP文件,而不是JS文件。 –