0

ユーザーがフォームを投稿するページがあります。にありphpます。

ユーザーがすでにログインしている場合、フォームは表示されません。ユーザーがログインしていない場合は、フォームが表示されます。

これで、ユーザーが最初にサイトにアクセスしたときに、フォームが表示されます。次に、フォームに入力しsubmits、としてPOST。ログインに成功すると、彼は同じページにリダイレクトされます。

問題は、同じページにリダイレクトされた後も、フォームが表示されたままになることです。でも、リフレッシュすると形が消えてしまいます。

どうすれば私が望むものを達成するために変更/修正できますか。

私のコードを与えることが役立つかどうかはわかりません。ただし、SOによると、基本的なコードを添付しています。

    if(!isset($_SESSION['id'])){
    //show form
    <form action="" method="post">
        <br><button class="lfloat" type="submit" id="submit" value="register0" name="submit">Register</button><br><br>
    </form>
    <?php if(isset($_POST['submit'])&&$_POST['submit']=='register0'){
        //do all the insertion of data into database here only.
        ....
        ....
        echo "Success!!";
    }
}
if(isset($_SESSION['id'])){
    //don't show form

}
4

3 に答える 3

0

これは私がそれを行う方法です:

<?php $hideForm = isset($_SESSION['id']); ?>

<form action="" method="post" style="<?= $hideForm ? 'display:none;' : '' ?>" >
...

またはさらに簡潔に:

<form action="" method="post" style="<?= isset($_SESSION['id']) ? 'display:none;' : '' ?>" >
于 2013-02-22T17:42:23.483 に答える
0

ID をデータベースに保存するのは事実ですが、ページをリロードしたとは思えないSESSIONため、ID を保存した後は存在しません。

新しい情報を保存したら実行できます<form action="pageURL.php?action=save">が、更新時に投稿が再送信されないように、スイッチを実行してクエリ文字列でアクションを渡す必要がある場合があります。アイデアは、このパターンを使用することです: Post/Redirect/Get。次に、ページは次のようになります。

$action = filter_input(INPUT_GET, 'action', FILTER_SANITIZE_STRING);

switch ($action) {
    case 'save':
        //Do your the registration and then
        header('Location:YourPagePath.php?action=saved');
        break;
    case 'save':
        /*FALL TRHOUGH*/
    default:
        //The rest of the page code
        break;
}

また、ログインに成功した場合の解決策は、高速ではありますがそれほど良くありません。

echo '<script>
    alert("Save successful");
    location.href="YourPagePath.php"
</script>';
exit;
于 2016-10-24T10:04:19.180 に答える
0

何かのようなもの

 if(isset($_POST['submit'])&&$_POST['submit']=='register0'){
        //do all the insertion of data into database here only.
        ....
        ....
        echo "Success!!";
$_SESSION['id'] = 'some value';
header(Location: 'yourForm.php');
exit;

    }

あなたのために働くはずです...また、書くことを忘れないでください

session_start();

あなたのform.phpの上部に

于 2013-02-22T17:37:41.467 に答える