web-dev-qa-db-ja.com

リンクをクリックしたときにPHPセッションを破壊する

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

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

いいえ、それは有効なコードではありません。 phpページの読み込み時にセッションを破壊します。

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

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

logout.php

session_destroy();
14
Goutam Pal

Logout.phpというページを作成します

Logout.php _____

<?php
Session_start();
Session_destroy();
header('Location: ' . $_SERVER['HTTP_REFERER']);

?>

あなたのページ______

<a href="Logout.php">Logout</a>
15
user2067005

不正なコード。あなたはこのコードを使うことができます:

<?php if($_GET['logout']==1) session_destroy(); ?>
<a href="?logout=1">Logout</a>
5
Ashkan Arefi

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

HTMLページ:

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

Sessiondestroy.php:

<?=session_start(); session_destroy(); ?>
4
Vii Systems

有効ではありません... onclickはクライアント側のイベントです。代わりにこれを行うことができます。

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

logout.phpというファイルを作成し、session_destroy()を含めます。ステートメント

       <?php
           session_destroy();

           //do other things... like redirect to a deafault/login page

         ?>
3
oliverdejohnson

いいえ、クライアント側からサーバー側関数を呼び出すことは論理的ではありません。onClickはクライアント側で発生するイベントなので、サーバー側(PHP関数)であるため、session_destroy()を呼び出すことはできません。クライアント側では利用できません

2
user1646111

それを行うことは可能です。 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

1
Tim Powell