4

ここや他のフォーラム/ブログを6時間以上検索した後でも、これを行うための操作方法はすべて同じページで見つかりませんでした。フォームにデータを入力し、送信し、結果を表示します。ユーザーが [更新] をクリックすると、元の空白のフォームが表示され、「あなたは」に関するブラウザ メッセージは表示されません。データなどを再送信しています。」これがベースコードです。期待どおりに機能します。ブラウザの「更新」をクリックした後に空白のフォームを表示したいだけです。PRG と Sessions の両方の方法を試みましたが、成功しませんでした。

<!DOCTYPE html >
<head>
<title>Refresher test</title>
</head>
<body>
<br/><br/><h2>What Me Refresh</h2>

<?php
//If form not submitted, display form.
if (!isset($_POST['submit'])||(($_POST['text']) == "")){
?>  

<p><h3>Enter text in the box then select "Go":</h3></p>

<form method="post" action="RfrshTst.php" >
<textarea rows="5" cols="50" name="text" >
</textarea>
<input type="submit" name="submit" value="Go" />
</form>

<?php 
//If form submitted, process input.
} else {
//Retrieve show string from form submission.
$txt = $_POST['text'];
echo "The text you entered was : $txt";

} ?> 
</body>
</html>
4

4 に答える 4

2

このソリューションでは、セッションを使用します。post フィールドが存在する場合は最初にセッションに保存し、次に同じページにリダイレクトします。セッションでフィールドが見つかった場合は、それを取得してセッションから削除し、ページに表示します。

<?php

$txt = "";
session_start();

if (isset($_POST['submit']) && (($_POST['text']) != "")) {
    $_SESSION['text'] = $_POST['text'];
    header("Location: ". $_SERVER['REQUEST_URI']);
    exit;
} else {
    if(isset($_SESSION['text'])) {
        //Retrieve show string from form submission.
        $txt = $_SESSION['text'];
        unset($_SESSION['text']);
    }
}

?>

<!DOCTYPE html >
<head>
<title>Refresher test</title>
</head>
<body>
<br/><br/><h2>What Me Refresh</h2>

<?php
if($txt != "") {
    echo "The text you entered was : $txt";
} else {
?>


<p><h3>Enter text in the box then select "Go":</h3></p>

<form method="post">
<textarea rows="5" cols="50" name="text" >
</textarea>
<input type="submit" name="submit" value="Go" />
</form>

<?php } ?>

</body>
</html>
于 2013-09-07T19:25:16.913 に答える
0

$_POSTサーバーからデータを削除することはできません。ブラウザによって保存されるため、ブラウザはそれを警告します。データを再送信すると、サーバーに送り返されて再入力されます$_POST

cookie / sessionこれは、フォームがすでに処理されたことを示す変数を設定することで実現できます。

<?php session_start(); ?>
<!DOCTYPE html >
<head>
<title>Refresher test</title>
</head>
<body>
<br/><br/><h2>What Me Refresh</h2>

<?php
//If form not submitted, display form.
if (isset($_POST['submit']) && !isset($_SESSION['user'])){

//Retrieve show string from form submission.
$txt = $_POST['text'];
echo "The text you entered was : $txt";

$_SESSION['user'] = true;
//If form submitted, process input.
} else {
?>
<p><h3>Enter text in the box then select "Go":</h3></p>

<form method="post" action="" >
<textarea rows="5" cols="50" name="text" >
</textarea>
<input type="submit" name="submit" value="Go" />
</form>

<?php
} ?> 
</body>
</html>

質問で述べたように、アクションを空にすることを忘れないでください(太字)すべて同じページにあります

<form method="post" action="RfrshTst.php" >
                              ^--Here^
于 2013-09-07T19:29:47.357 に答える