0

これは、単純なユーザー名/パスワードのログイン フォームです。正しいデータで送信すると、 test.php に移動し、 'hi' がエコーされます。しかし、test.php を更新すると、No Permission と表示されます。送信後にtest.phpを更新した後、test.phpに「hi」を表示するにはどうすればよいですか?

login.php:

<?php
    session_start();
    session_unset();
?>

<html>
    <body>
        <?php include 'header.php'; ?> 
        <form action = "test.php" method = "post">
            <br/>
            Enter username
            <input type = "text" name = "user"/>
            <br/>
            Enter passowrd
            <input type = "password" name = "pass"/>
            </br>
            <input type = "submit" value = "submit" name = "submit"/>
        </form>
    </body>
</html>

test.php:

<?php
    session_cache_limiter('private_no_expire');
    session_start();
    $_SESSION['authuser'] = 0;

    if(isset($_POST['user']) && isset($_POST['pass']))
    {
        $_SESSION['username'] = $_POST['user'];
        $_SESSION['userpass'] = $_POST['pass'];
    }
    else
    {
        $_SESSION['username'] = NULL;
        $_SESSION['userpass'] = NULL;
    }

    if($_SESSION['username']=="joe" && $_SESSION['userpass'] == 123456)
    {
        $_SESSION['authuser']=1;
        echo 'hi';
    }
    else
    {
        echo "No permission";
        exit();
    }
?>
4

1 に答える 1

1

更新すると、ブラウザーに値を再投稿するオプションが表示されます。[はい] をクリックすると、機能するはずです。

または、コードの else 部分を削除することもできます。

else
{
    $_SESSION['username'] = NULL;
    $_SESSION['userpass'] = NULL;
}

それを削除すると、セッション変数が記憶され、残りのコードでそれらのセッション値が使用されます。

編集

そのページを最初にロードすると (上記で提案した変更を加えた場合)、以前にログインしていない場合、未定義のインデックス エラーが発生します。これを解決するには、次の行を変更します。

if($_SESSION['username']=="joe" && $_SESSION['userpass'] == 123456)

if(isset($_SESSION['username']) && $_SESSION['username']=="joe" && isset($_SESSION['userpass']) && $_SESSION['userpass'] == 123456)

これにより、値を確認する前に、ユーザー名とユーザーパスが設定されていることが確認されます。

于 2012-09-02T13:14:54.630 に答える