2014-04-17 87 views
2

我在php腳本中創建了session
我想在JavaScript中銷燬我的php session
當我點擊Destroy Session然後javascript函數destroy()調用並銷燬SESSION['user']使用Javascript功能摧毀PHP會話

<?php 
    ob_start(); 
session_start(); 
    SESSION['user'] = "test 123"; 
    echo "<a onClick = 'destroy()'>Destroy Session</a>"; 
?> 

    <script> 
     Function destroy(){ 
     session_destroy(); // Like `PHP` I want destroy Session in `javascript` 
     } 
    </script> 
+0

您無法直接使用javascript訪問SESSION。你必須要麼POST或使用AJAX。 – serakfalcon

+0

PHP是ServerSide--所以你的會話也是服務器端。 Javascript是客戶端。爲什麼你不會通過javascript來刷新網站的腳本,這會破壞你的會話? – Tyralcori

+1

我認爲你不能在JavaScript中銷燬php會話。因爲javascript是客戶端,php是服務器端腳本。所以如果你想達到這個目的,你可以通過在某個時候發起ajax調用,並且你的ajax指向的php文件將會破壞你的會話。 – Pramod

回答

4

我想你應該使用AJAX從Javascript中銷燬函數。像:

.js代碼:

function destroy_session(){ 
    var xmlhttp = getXmlHttp(); 
    var xmlhttp = new XMLHttpRequest(); 
    xmlhttp.open('GET','./destroy_session.php', true); 
    xmlhttp.onreadystatechange=function(){ 
     if (xmlhttp.readyState == 4){ 
      if(xmlhttp.status == 200){ 
      alert(xmlhttp.responseText); 
     } 
     } 
    }; 
    xmlhttp.send(null); 
} 

destroy_session.php代碼:

<?php 
    session_start(); 
    $_SESSION = array(); 
    if (ini_get("session.use_cookies")) { 
     $params = session_get_cookie_params(); 
     setcookie(session_name(), '', time() - 42000, 
     $params["path"], $params["domain"], 
     $params["secure"], $params["httponly"] 
     ); 
    } 
    session_destroy(); 
    echo 'Session was destroyed'; 
?> 
2

你不能直接消滅在JavaScript中的PHP會議上,因爲JavaScript是在客戶端上運行,並且PHP是在運行服務器。

但你可以在php中刪除會話cookie,當它使用!

但這隻會從會話中分離客戶端,不會破壞會話。

0

你可以做的是使用AJAX加載執行session_destroy()的PHP頁面。 jQuery有非常簡單的ajax功能,記錄在here