このコードは有効ですか?
<a href="#" onclick="<?php session_destroy();?>">Logout</a>
いいえ、それは有効なコードではありません。 phpページの読み込み時にセッションを破壊します。
クリックでセッションを破棄するには、次のように書く必要があります
<a href="logout.php" >Logout</a>
logout.php
session_destroy();
Logout.phpというページを作成します
Logout.php _____
<?php
Session_start();
Session_destroy();
header('Location: ' . $_SERVER['HTTP_REFERER']);
?>
あなたのページ______
<a href="Logout.php">Logout</a>
不正なコード。あなたはこのコードを使うことができます:
<?php if($_GET['logout']==1) session_destroy(); ?>
<a href="?logout=1">Logout</a>
そのコードはリンクをクリックする前にすでにセッションを破棄します。次のようにする必要があります。
HTMLページ:
<a href="sessiondestroy.php">Logout</a>
Sessiondestroy.php:
<?=session_start(); session_destroy(); ?>
有効ではありません... onclickはクライアント側のイベントです。代わりにこれを行うことができます。
<a href="logout.php">logout</a>
logout.phpというファイルを作成し、session_destroy()を含めます。ステートメント
<?php
session_destroy();
//do other things... like redirect to a deafault/login page
?>
いいえ、クライアント側からサーバー側関数を呼び出すことは論理的ではありません。onClick
はクライアント側で発生するイベントなので、サーバー側(PHP関数)であるため、session_destroy()
を呼び出すことはできません。クライアント側では利用できません
それを行うことは可能です。 onClickアクションの使用に集中している場合は、AJAXを使用するだけで済みます。まず、次のようなajax.phpを作成する必要があります。
<?php
//AJAX dynamic callback
if(isset($_GET['action'])){
if($_GET['action'] == 'logout'){
//destroy the session
session_destroy();
echo 'Logout success!';
//redirect the user to a default web page using header
header("location:http://example.com/");
}
}
?>
次に、ログアウトしたいことをajax.phpに伝えるJavaScriptファイルを作成します。
<script>
function logout()
{
var xmlhttp;
if (window.XMLHttpRequest)
{// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp=new XMLHttpRequest();
}
else
{// code for IE6, IE5
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange=function()
{
if (xmlhttp.readyState==4 && xmlhttp.status==200)
{
document.getElementById("Logoutbutton").innerHTML=xmlhttp.responseText;
}
}
xmlhttp.open("GET","ajax.php?action=logout",true);
xmlhttp.send();
}
</script>
とにかく、StackOverfloxをご利用いただきありがとうございます。それがどうなっているか、またはさらにサポートが必要な場合は報告してください:)
TP