2

ホームページで会員制サービスを行っています。現在、誰かがログアウトすると、次のコードを含む logout.php にリダイレクトされます。

<?php

        //check if the login session does no exist
        if(strcmp($_SESSION['uid'],”) == 0){
            //if it doesn't display an error message
            echo "<center>You need to be logged in to log out!</center>";
        }else{
            //if it does continue checking

            //update to set this users online field to the current time
            mysql_query("UPDATE `users` SET `online` = '".date('U')."' WHERE `id` = '".$_SESSION['uid']."'");

            //destroy all sessions canceling the login session
            session_destroy();

            //display success message
            echo "<center>You have successfully logged out!<br><a href = '/review-pratt/index.php' class='icon-button star'>Return Home</button></center>";
        }

        ?>

ユーザーを「logout.php」に連れて行って、ログアウトしたという退屈なページを表示する代わりに。それらをindex.phpにリダイレクトしたい。その部分は簡単です、私は知っています。

上部に通知バーを表示して、ログアウトに成功したことを通知したいと考えています。私は以前にこれをやろうとしましたが、何もうまくいきませんでした。ヘルプや提案をいただければ幸いです。

アップデート

logout.php コードを次のように変更しました。

<?php

        //check if the login session does no exist
        if(strcmp($_SESSION['uid'],”) == 0){
            //if it doesn't display an error message
            echo "<center>You need to be logged in to log out!</center>";
        }else{
            //if it does continue checking

            //update to set this users online field to the current time
            mysql_query("UPDATE `users` SET `online` = '".date('U')."' WHERE `id` = '".$_SESSION['uid']."'");

            //destroy all sessions canceling the login session
            session_destroy();

            //Redirect with success message
            header('Location: /index.php?msg=' . urlencode("You have been successfully logged out!"));
        }

        ?>

私のindex.phpに次のコードを追加しました:

    <?php

    if ($_GET['msg'])
{
       echo '<div class="success_message">' . base64_decode(urldecode($_GET['msg'])) . '</div>';
}

?>

ログアウトすると、次のエラーが表示されます。

Warning: Cannot modify header information - headers already sent by (output started at /home/content/38/10473938/html/review-pratt/business_profiles/logout.php:19) in /home/content/38/10473938/html/review-pratt/business_profiles/logout.php on line 35
4

4 に答える 4

5

あなたはこのようなことをすることができます:

header('location: index.php?status=loggedout');

index.phpファイルで、ステータスが空でないかどうかを確認し、次のようなステータスのdivを表示します。

<?php 
   if(!empty($_GET['status'])){
          echo '<div>You have been logged out!</div>';
   }
?>

また、そのifステートメント内で、ユーザーセッションもクリアできます。

于 2013-03-24T03:27:09.040 に答える
3

これには多くの解決策がありますが、ほとんどすべての解決策では、メッセージを渡すためにlogout.phpが必要であり、メッセージを表示するためのコードがindex.phpに必要です。

私の好みの方法は、メッセージをURLパラメーターとして渡すことです。リダイレクトに使用し、 base64_encodeheaderを使用してURL内のテキストを短縮し、url_encodeを使用してURLがジャンクされないようにします。

//Redirect with success message
header('Location: /index.php?msg=' . urlencode(base64_encode("You have been successfully logged out!")));

次に、index.phpページで

if ($_GET['msg'])
{
       echo '<div class="success_message">' . base64_decode(urldecode($_GET['msg'])) . '</div>';
}

編集:ヘッダーがすでに送信されている場合(echoこれらの上の行にテキストを送信しましたか?)、Javascriptを使用してリダイレクトを行うことができます。

これに置き換えheader('Location: ')ます:echo '<meta http-equiv="Refresh" content="0;url=http://example.com/index.php?msg=' . urlencode(base64_encode('You have been successfully logged out!')) . '">';

于 2013-03-24T03:26:26.403 に答える
1

「Noty」プラグインを使用して、Webアプリで通知を有効にすることができます。ここを参照してください:http://needim.github.com/noty/

実装は次のようになります。

  1. ユーザーをindex.php?logout=1にリダイレクトします
  2. クエリ文字列パラメータを使用して、非表示フィールドにデータを入力します。
  3. ページの読み込み時に非表示フィールドの値を表示するには、notyを使用します。

コード例は次のとおりです。

<?php 
   if(!empty($_GET['logout'])){
          echo '<input id="logoutMsg" value="You have been logged out!"  />';
   }
?>

<script>
   var logoutMsg = $('#logoutMsg').val();
   var noty = noty({text: logoutMsg });
</script>
于 2013-03-24T03:27:56.970 に答える
0

成功メッセージの直後にリダイレクトする場合は、次のコードを使用します:-

    <?php

        //check if the login session does no exist
        if(strcmp($_SESSION['uid'],”) == 0){
            //if it doesn't display an error message
            echo "<center>You need to be logged in to log out!</center>";
        }else{
            //if it does continue checking

            //update to set this users online field to the current time
            mysql_query("UPDATE `users` SET `online` = '".date('U')."' WHERE `id` = '".$_SESSION['uid']."'");

            //destroy all sessions canceling the login session
            session_destroy();

            //display success message
            echo "<center>You have successfully logged out!
            echo '<meta http-equiv="Refresh" content="0;url=http://url.which.you.want.to.be.redirected.to">';
}
         }
?>
于 2013-03-24T03:30:39.827 に答える