2

我无法弄清楚如何创建一个会破坏 php 会话的 javascript 函数。我有一个可点击的链接,它将调用一个名为 destroyphpsess 的函数。我认为到目前为止一切都很好。现在我需要定义 javascript 函数。这是我到目前为止的代码......

if ($_SESSION['color'] == "") {
    $var = "<a href='JavaScript:newPopup(\"http://www.yourfantasyfootballreality.com/register.php\");' class='two'>Register</a> | <a href='JavaScript:newPopup(\"http://www.yourfantasyfootballreality.com/signin.php\");' class='two'>Sign In</a>";
} else {
    $var = "Hello, ".$_SESSION['color'] ."! | " . "<a href=\"http://www.yourfantasyfootballreality.com/index.php\" onclick=\"destroyphpsess()\" class='two'>Log Out</a>";
}
echo $var;

现在我需要定义 javascript 函数。这是我遇到麻烦的地方。这是我到目前为止的基本轮廓......

function destroyphpsess()
{
<?php
session_destroy();
?>
}

如果有人可以帮助我使用该功能,我将不胜感激!谢谢。

4

4 回答 4

11

您的 JavaScript 在客户端运行,而您的 PHP 在服务器端运行。您不能以这种方式从 JavaScript 调用 PHP 函数。你有两个选择:

  1. 对清除会话数据的服务器端脚本执行 AJAX 调用(推荐,以保持服务器端内容的一致性和正确清除)
  2. 使用 JavaScript 清除 PHPSESSID cookie (如果您重新配置处理会话的方式,或者如果会话由 URL 参数处理,则不起作用)
于 2012-06-16T04:16:20.270 回答
6

PHP 会话通常使用存储在客户端的 cookie。以下代码将清除该 cookie,从而取消链接会话。

document.cookie = 'PHPSESSID=; expires=Thu, 01-Jan-70 00:00:01 GMT;';

于 2012-06-16T04:18:11.830 回答
0

每个人都在说 AJAX。如果您也想在服务器端清理 cookie,这将是一个好主意,但我认为如果您知道 AJAX 是什么,您可能已经使用它了......

当我第一次接触AJAX时,我发现它非常令人困惑。所以我建议看看并可能使用 jQuery 的AJAX功能。只为一个函数包含 jQuery 可能有点矫枉过正,但它可能会更容易一些。

于 2012-06-16T04:39:05.317 回答
0

Your JavaScript runs client-side, and your PHP runs server-side. You can't call PHP functions from JavaScript this way. You have two options:

Do an AJAX call to a server-side script that clears the session data (recommended, for consistency and proper clearing of that stuff server-side) Clear the PHPSESSID cookie with JavaScript (won't work if you reconfigure how you handle sessions, or if sessions are handled by URL parameters)

于 2012-07-14T01:17:54.157 回答