在Javascript函数中销毁PHP会话

在Javascript函数中销毁PHP会话,javascript,php,ajax,session,destroy,Javascript,Php,Ajax,Session,Destroy,我在我的php脚本中创建了一个会话。 我想用javascript销毁我的php会话。 当我点击Destroy Session时,javascript函数Destroy()调用并销毁Session['user'] <?php ob_start(); session_start(); SESSION['user'] = "test 123"; echo "<a onClick = 'destroy()'>Destroy Session</a>"

我在我的
php
脚本中创建了一个
会话。
我想用javascript销毁我的
php会话

当我点击
Destroy Session
时,javascript函数
Destroy()
调用并销毁
Session['user']

 <?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>

我认为应该使用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
code:

<?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';
?>

您不能在javascript中直接破坏php会话,因为javascript在客户端上运行,php在服务器上运行

但是您可以在php中删除会话cookie,只要它被使用


但这只会将客户端与会话分离,而不会破坏会话。

您可以使用AJAX加载执行
会话的PHP页面。jQuery有非常简单的ajax函数,有文档记录。

您不能直接使用javascript访问会话。您必须发布或使用AJAX.PHP是服务器端的,因此您的会话也是服务器端的。Javascript是客户端。为什么不用javascript将站点刷新为脚本,这样会破坏会话?我认为不能用javascript破坏php会话。因为javascript是客户端,php是服务器端脚本。因此,如果您想实现这一点,您可以在某个时间点进行ajax调用,ajax指向的php文件将破坏您的会话。虽然此链接可能会回答问题,但最好在此处包含答案的基本部分,并提供链接供参考。如果链接页面发生更改,仅链接的答案可能无效。-。。。有没有像3年前排队等待“需要审查的答案”之类的东西?除此之外,我不同意“这基本上是一个仅链接的答案”的说法。我不理解回顾一个三年前的答案的目的,这个答案(1)不是最重要的答案,(2)不是公认的答案。这听起来像是声誉农业。是的,有一个队列。然而,没有代表性耕作——这只是为了帮助保持场地清洁。如果你想了解更多关于这个过程的信息,并不是每个人都同意我的评估——你提供的链接很有帮助。如果被接受的答案也包含jQuery链接,我想你的答案会被删除。不要试图挑拨离间-如果你在被接受的答案被接受后添加了一个代码示例,我不认为你的帖子会被标记(因为链接很有帮助)。。。好。这实际上解释了这一点。非常感谢你!谢谢你给我解释。我一定会记住这一点,以便将来回答!