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 関数を呼び出すことはできません。次の 2 つのオプションがあります。

  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に出会ったとき、AJAX はかなり紛らわしいと感じました。したがって、私が提案するのは、jQuery のAJAX機能を見て、おそらく使用することです。1 つの関数だけに 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 に答える