-1

私はPHPの初心者です。私のコードでは、送信ボタンがクリックされた(設定された)ときにのみphpスクリプトが実行されるようにします。そのため、ページが更新されると、 isset() 関数は false を返す必要があります。これがtest.phpのコードです

<html>
<head>
<title>A BASIC HTML FORM</title>
<?PHP
if (isset($_POST['Submit1'])) {
    $username = $_POST['username'];

    if ($username == "letmein") {
        print ("Welcome back, friend!");
    }
    else {
        print ("You're not a member of this site");
    }
}

else{
$username = "";
}
?>
</head>
<body>
<Form name ="form1" Method ="POST" Action ="test.php">
    <Input Type = "text" Value ="<?php print $username?>" Name ="username">
    <Input Type = "Submit" Name = "Submit1" Value = "Login">
</form>
</body>
</html>

ログインボタンをクリックすると、スクリプトが実行され、「あなたはメンバーではありません」という出力が表示されますが、ページを更新すると、スクリプトからのメッセージが画面に残ります。ボタンをもう一度クリックするまで isset() は false を返すはずですか? コードの何が問題なのですか。ありがとう。

4

3 に答える 3

2

私のコメントが本当に答えであることに気づきました...

「更新」すると、POST データを含むページが更新されます (それが最後に行われた「要求」であるため)。クリアするには、ページのアドレスを再入力する必要があります。「本当にこのフォームをもう一度送信しますか?」というメッセージが表示されることがあります。更新時にプロンプ​​トが表示されます-これが理由です...

于 2013-04-16T23:41:18.873 に答える
1

Isset() は、変数の例: $variable が実際に「設定」されており、null でないかどうかを確認するために使用されます。また、更新を行うと、コミットしたアクションと渡したフォーム データも更新されます。次のように考えることができます。

ショッピング Web サイトにアクセスして、注文の処理中に更新しないように指示された場合、投稿データを更新すると、電子レンジを 1 つではなく 2 つ購入することを意味します :)

したがって、コーディングでは次のようになります。

if (isset('$_POST['username']')) {
    $username = $_POST['username'];

    if($username == 'letmein') {
         echo ("welcome back, friend!");
    }
}

うまくいけば、これは少し役立ちます。幸運を!また、「John」を使用したことがあり、資料が必要な場合は、php のマニュアル ページを参照してください。

于 2013-04-16T23:43:36.453 に答える
0

ページを更新すると、すでに投稿されたフォーム変数が再度投稿されるため、ページを更新するたびにフォームを再送信することになり、これにより常にisset条件が真になります:)

もっと説明が必要な場合は教えてください:)

于 2013-04-16T23:41:24.197 に答える