想知道是否可以使用jquery或javascript进程清除PHP会话?因为我想要做的是使用对话框清除PHP会话。如果用户点击“确定”。按钮它将处理未设置的功能。在我的页面中有一个结帐流程,在用户点击按钮后,就可以了解问题'它会提示一个对话框,如果用户点击“确定”。按钮它将取消设置PHP会话,它将被重定向到另一个页面。
这是我的简单代码:
<i class="fa fa-check"></i> <span id="save_registry" class="cursor: pointer">OK</span>
<div id="save_alert" style="display: none">
<?php unset($this->session->data['cart']);
</div>
....
$('#save_registry').click(function(){
$('#save_alert').dialog({
modal: true,
buttons: {
Ok: function() {
$( this ).dialog( "close" );
location = 'index.php?route=common/home';
}
}
});
});
答案 0 :(得分:10)
简单地说:你不能,直接。
PHP是服务器端语言,而javascript是客户端语言,这意味着除了您收到的文档和交互之外,它们之间没有其他连接和你。会话由服务器存储和管理。
但是,正如War10ck建议的那样,您可以调用清除会话的服务器端脚本。像这样:
PHP:
<?php
/*
* session_start();
* Starting a new session before clearing it
* assures you all $_SESSION vars are cleared
* correctly, but it's not strictly necessary.
*/
session_destroy();
session_unset();
header('Location: continue.php');
/* Or whatever document you want to show afterwards */
?>
HTML / JavaScript的:
<script type="text/javascript">
function logout() {
document.location = 'logout.php';
}
LogoutButton.addEventListener('click', logout, false);
</script>
<button id="LogoutButton">Log out</button>
甚至执行异步调用:
function logout() {
var xhr = new XMLHttpRequest();
xhr.onload = function() {
document.location = 'continue.php';
}
xhr.open('GET', 'logout.php', true);
xhr.send();
}
答案 1 :(得分:4)
有一种方法可以直接从javascript中完成...首先你需要声明一个按键清除cookie的函数
function removeCookie(cookieName)
{
cookieValue = "";
cookieLifetime = -1;
var date = new Date();
date.setTime(date.getTime()+(cookieLifetime*24*60*60*1000));
var expires = "; expires="+date.toGMTString();
document.cookie = cookieName+"="+JSON.stringify(cookieValue)+expires+"; path=/";
}
现在,您所要做的就是使用密钥&#34; PHPSESSID
&#34;删除Cookie。像这样
removeCookie("PHPSESSID");
现在当你var_dump($_SESSION)
发现它是空数组时
答案 2 :(得分:3)
您无法直接使用Javascript清除php会话。
PHP是服务器端语言,而Javascript是客户端...
但是,您可以将ajax请求抛出到处理销毁的指定页面。
像这样:
// Client-side
$.post("logout.php", {"can_logout" : true}, function(data){
if(data.can_logout)
// redirect the user somewhere
}, "json");
<?php
// Server-side
$can_logout = $_POST["can_logout"];
if($can_logout)
session_destroy();
echo json_encode(array("can_logout" => true));
?>
或者只是将用户指向处理会话销毁的某个页面;即logout.php