1

PHPでサインアウトボタンを作成しようとしています。私はこれを完全に間違った方法で行っているかもしれませんが、とにかくボタンをクリックして Cookie を削除しようとしています。

    <?php 
    function logOut() {
        setcookie('userDetails[username]',"", time()-1200);
    }



if(isset($_COOKIE["userDetails"])) {
    echo "<table id='rtgLoginBox'>" ;
        echo "<tr>" ;
            echo "<td> Cookie " . $_COOKIE["userDetails"]["username"] . "!";
            echo "<td></td>" ;
        echo "</tr><tr>" ;
            echo "<td><input id='rtgLoginBtn' type='submit' value='Log Out' onclick=\"logOut();\" /></td>" ;
            echo "<td>";
            echo "<td></td>" ;
            echo "<td></td>" ;
        echo "</tr><tr>" ;
            echo "<td></td>" ;
            echo "<td></td>" ;
        echo "</tr>" ;
    echo "</table>" ;
} else {
    echo "<table id='rtgLoginBox'>" ;
        echo "<tr>" ;
            echo "<td><form action='process.php' method='post'>Username:</td>" ;
            echo "<td><input name='usernamein' id='rtgUsernameTxt' type='text' size='20' class='rtgSignUpTxt'/></td>" ;
        echo "</tr><tr>" ;
            echo "<td>Password:</td>" ;
            echo "<td><input name='passwordin' id='rtgPasswordTxt' type='password' size='20' class='rtgSignUpTxt' /></td>" ;
        echo "</tr><tr>" ;
            echo "<td></td>" ;
            echo "<td><input id='rtgLoginBtn' type='submit' value='Log In' />  </form><input id='rtgLoginBtn' type='submit' value='Sign Up' onclick=\"location.href='SignUp.php'\" /></td>" ;
        echo "</tr><tr>" ;
            echo "<td></td>" ;
            echo "<td><a href='mysite.com'><p style='padding:0 !important;'>Forgot Login Details?</p></a></td>" ;
        echo "</tr>" ;
    echo "</table>" ;
    }

    ?>

私がオンラインで読んだ限り、これはうまくいくはずですか?また、関数をエコー テーブルの下に配置しようとしましたが、これも機能しませんでした。

4

3 に答える 3

1

「onclick='logOut()'」と言っているように、php ではなく JavaScript から関数 logOut() を呼び出しています。

プログラムは常にインタラクティブであり、何かが起こるといつでも何らかの関数を呼び出すことができると考えるかもしれませんが、php はそのようには機能しません...これを理解するには、ブラウザ/サーバー モデルについてもっと知っておく必要があります。

誰かが index.php などの php ページを要求すると、サーバーはその要求を取得し、指定された URL に従ってディスク上の index.php を探します。次に、php ファイル全体を html に解釈し、ブラウザへのhtmlドキュメント....画面の前にあるものはもはやphpコードではなく、静的なHTMLドキュメントを受け取ります...

ページをインタラクティブにしたい場合は、Web ページに JavaScript を挿入します。JavaScript はプレーン テキストでブラウザに転送され、サーバーではなくブラウザで動作します。

したがって、Web サイトは js と php の両方を使用し、php はデータベースへのクエリや Web サイト全体の管理などのサーバー側の作業に使用されます...そして JavaScript はページ上で動作します..

したがって、クッキーをインタラクティブに変更または削除する場合、必要なのはjavascriptです。javascriptで「logOut()」関数を宣言し、それでクッキーを制御できます....または、本当にクッキーを制御したい場合php を作成し、js を使用してコマンドを ajax 経由で php ファイルに渡し、php の Cookie を削除します。

于 2012-04-20T12:23:48.187 に答える
1

このコードにより、ユーザーがログアウト ボタンを押すとログアウトし、whatever.php という新しいページにリダイレクトされます。あなたは明らかにそれをあなたが望むものに変えることができます。

<?php 
    function logOut() {
        setcookie('userDetails[username]',"", time()-1200);
        unset($_COOKIE['userDetails']);
    }

if ('POST' === $_SERVER['REQUEST_METHOD'])
{
    logOut();
    header('Location: /whatever.php');
    exit;
}

if(isset($_COOKIE["userDetails"])) {
    echo "<form action='".htmlspecialchars($_SERVER['PHP_SELF'])."' method='post'><table id='rtgLoginBox'>" ;
        echo "<tr>" ;
            echo "<td> Cookie " . $_COOKIE["userDetails"]["username"] . "!";
            echo "<td></td>" ;
        echo "</tr><tr>" ;
            echo "<td><input id='rtgLoginBtn' type='submit' value='Log Out' /></td>" ;
            echo "<td>";
            echo "<td></td>" ;
            echo "<td></td>" ;
        echo "</tr><tr>" ;
            echo "<td></td>" ;
            echo "<td></td>" ;
        echo "</tr>" ;
    echo "</table></form>" ;
} else {
    echo "<table id='rtgLoginBox'>" ;
        echo "<tr>" ;
            echo "<td><form action='process.php' method='post'>Username:</td>" ;
            echo "<td><input name='usernamein' id='rtgUsernameTxt' type='text' size='20' class='rtgSignUpTxt'/></td>" ;
        echo "</tr><tr>" ;
            echo "<td>Password:</td>" ;
            echo "<td><input name='passwordin' id='rtgPasswordTxt' type='password' size='20' class='rtgSignUpTxt' /></td>" ;
        echo "</tr><tr>" ;
            echo "<td></td>" ;
            echo "<td><input id='rtgLoginBtn' type='submit' value='Log In' />  </form><input id='rtgLoginBtn' type='submit' value='Sign Up' onclick=\"location.href='SignUp.php'\" /></td>" ;
        echo "</tr><tr>" ;
            echo "<td></td>" ;
            echo "<td><a href='mysite.com'><p style='padding:0 !important;'>Forgot Login Details?</p></a></td>" ;
        echo "</tr>" ;
    echo "</table>" ;
    }

    ?>
于 2012-04-20T12:01:08.343 に答える