在 Javascript 函数中销毁 PHP SESSION
Posted
技术标签:
【中文标题】在 Javascript 函数中销毁 PHP SESSION【英文标题】:Destroy PHP SESSION in Javascript Function 【发布时间】:2014-06-01 08:06:16 【问题描述】:我在我的 php
脚本中创建了一个 session
。
我想在 javascript 中销毁我的 php session
。
当我点击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>
【问题讨论】:
您不能直接使用 javascript 访问 SESSION。你必须要么 POST 要么使用 AJAX。 PHP 是服务器端 - 所以你的会话也是服务器端的。 Javascript是客户端。为什么您不会通过 javascript 将站点刷新为脚本,从而破坏您的会话? 我认为你不能在 javascript 中破坏 php 会话。因为 javascript 是客户端,而 php 是服务器端脚本。因此,如果您想实现这一点,您可以通过在某个时候进行 ajax 调用来实现,并且您的 ajax 指向的 php 文件将破坏您的会话。 【参考方案1】:我认为你应该使用 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 中从 php 中删除会话 cookie - 当它使用时!
但这只会将客户端与会话分离,不会破坏会话。
【讨论】:
【参考方案3】:您可以做的是使用 AJAX 加载执行 session_destroy()
的 PHP 页面。 jQuery 有非常简单的 ajax 函数,记录在 here。
【讨论】:
虽然此链接可能会回答问题,但最好在此处包含答案的基本部分并提供链接以供参考。如果链接页面发生更改,仅链接答案可能会失效。 - From Review ... 某处或某处是否存在类似 3 年历史的“需要审查的答案”队列?除此之外,我不同意这“本质上是一个仅链接的答案”的说法。我不明白审查(1)不是最佳答案和(2)不是公认答案的 3 岁答案的目的。这听起来就像是声誉养殖。 是的 - 有一个队列。然而,没有代表农业 - 这只是为了帮助保持网站清洁。如果您想了解有关此过程的更多信息,this post is helpful. 并非所有人都同意我的评估 - 您提供的链接很有帮助。如果接受的答案也包含 jQuery 链接,我认为您的答案将被删除。 不试图分裂 - 如果您在接受的答案被接受后添加了一个代码示例,我认为您的帖子不会被标记(因为该链接很有帮助。) ...好吧。这实际上解释了这一点。非常感谢!我很感激你向我解释。我一定会记住这一点,以便将来得到答案!以上是关于在 Javascript 函数中销毁 PHP SESSION的主要内容,如果未能解决你的问题,请参考以下文章