9

このコードは有効ですか?

<a href="#" onclick="<?php session_destroy();?>">Logout</a>
4

7 に答える 7

16

いいえ、有効なコードではありません。PHPページのロード時にセッションが破棄されます。

クリック時にセッションを破棄するには、次のように書く必要があります

<a href="logout.php" >Logout</a>

logout.php で

session_destroy();
于 2013-07-10T07:32:59.970 に答える
7

不正なコード。このコードを使用できます:

<?php if($_GET['logout']==1) session_destroy(); ?>
<a href="?logout=1">Logout</a>
于 2013-07-10T07:32:54.267 に答える
4

そのコードは、リンクをクリックする前にセッションを破棄します。次のようにする必要があります。

HTML ページ:

<a href="sessiondestroy.php">Logout</a>

Sessiondestroy.php :

<?=session_start(); session_destroy(); ?>
于 2013-07-10T07:33:58.670 に答える
2

それは可能です。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

于 2013-07-10T07:48:54.843 に答える