2013-01-22 77 views
0

我有多個子域像domain1.example.com,domain2.example.com。我有這些子域的中央數據庫;我登錄時通過ajax創建每個子域的會話。捲曲註銷(session_destroy)不工作

現在我想,當我從任何的子域註銷,然後我從哪裏會話已經創建的所有子域(session_destroy)註銷。 (我有保持會話的子域列表)。 Plz幫助如何使用cURL從多個子域註銷。

我使用下面捲曲代碼迴路子域。

$url = 'http://' . $a_domain . ".localhost/panels/login?task=logout"; 
$ch = curl_init(); 
curl_setopt($ch, CURLOPT_URL, $url); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);     
$output = curl_exec($ch); 
curl_close($ch); 

而且當我直接在瀏覽器中運行的$ URL,它的工作原理,並從該子域註銷,但我想在循環通過量捲曲上班吧。 ??

遠程子域$ URL註銷代碼

public function logout(){ 
echo '<br>before destroy <br>'; 
print_r($_SESSION); 
session_destroy(); 
echo'<br>after destroy <br>'; 
print_r($_SESSION); 
} 
+0

所以,如果你把所有的子域列表,那麼爲什麼不就叫所有網址一一像你這樣的循環已經提到過? –

+0

是啊,我這樣做iecalling URL通過量捲曲註銷,但其沒有工作(不工作裝置,當我轉到下一個或前一個頁面,該會話仍然存在,它必須被摧毀) –

+0

你知道名單您可以設置會話/ Cookie,以便在單個主域下的子域中工作? http://stackoverflow.com/questions/644920/allow-php-sessions-to-carry-over-to-subdomains。我會擔心你如何通過AJAX設置這些會話。 – Prisoner

回答

1

喜歡的東西

<?php 

$domains=array(); 
$domains[]="a"; 
$domains[]="b"; 
$domains[]="c"; 
$domains[]="d"; 

foreach($domains as $d) 
{ 
    $url = "http://".$d.".localhost/panels/login?task=logout"; 
    logout($url); 
} 

function logout($url) 
{ 
    $ch = curl_init(); 
    curl_setopt($ch, CURLOPT_URL, $url); 
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);     
    $output = curl_exec($ch); 
    curl_close($ch); 
} 

?> 
+0

感謝您的回覆...在cURL發送請求的遠程子域函數中,我在session_destroy命令之前和之後打印了$ _session,但結果相同..是否存在我在該函數中未命中的內容.. ..? –

+0

@ user1999258你可以發佈該代碼嗎? –

+0

公共函數註銷(){ \t \t回聲 '
之前破壞
'; print_r($ _ SESSION); \t \t session_destroy(); \t print_r($ _ SESSION); \t \t \t echo'
破壞後
'; \t \t \t print_r($ _ SESSION); \t \t } –