【问题标题】:Creating javascript function to destroy php session创建javascript函数来破坏php会话
【发布时间】:2012-06-19 02:49:16
【问题描述】:

我无法弄清楚如何创建一个会破坏 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();
?>
}

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

【问题讨论】:

  • 你为什么不使用ajax并调用一个会破坏会话的页面
  • +1 回来提出更好的问题! :D

标签: php javascript session destroy


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

      【解决方案3】:

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

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

      【讨论】:

      • +1 我会在 AJAX 调用中使用 session_destroy...我从没想过通过清理 cookie 来做到这一点,但我喜欢这个主意。
      • 那是我的另一个想法,但是是的,我在考虑所有客户端。此代码将使会话在服务器端挂起,直到过期
      • 我会把这行代码放在哪里?我会把它放在函数中吗?
      • 您可以将此代码放在要结束会话的位置。这是 javascript。所以也许把它放在类似的注销事件处理程序中
      • 我希望用户能够点击一个链接并让会话在停留在同一页面时立即被销毁。那么上面的代码会参考我已经拥有的东西吗?
      【解决方案4】:

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

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

      【讨论】:

      • 我很确定您的意思是 JavaScript 运行客户端,PHP 运行服务器端。
      猜你喜欢
      • 2013-11-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-10-31
      • 2010-10-05
      • 2016-04-30
      • 1970-01-01
      • 2019-05-17
      相关资源
      最近更新 更多