0

次のような単純な HTML フォームがあります (form.html):

<form id="tips-message-notes" action="notessaved.php" method="post" class="general-form">
<div class="input-wrap">
<input type="text" name="title" value="'.$Title.'"/>
</div><!-- .input-wrap -->
<div class="input-wrap">
<textarea cols="" rows="" name="article" class="myTextEditor">'.$Article.'</textarea>
</div><!-- .input-wrap -->
<div class="button-wrap">
<input type="submit" name="publish" value="Publish" class="submit-btn" />
<input type="submit" name="draft" value="Save Draft" class="draft-btn" />
</div><!-- .button-wrap -->
</form>

ユーザーが送信ボタンをクリックすると、この PHP はデータベースの挿入 (database.php) を処理します。

<?php
$Title = $_POST['title'];
$Article = $_POST['article'];

$con = mysql_connect("server","username","password");
if (!$con)
{
die('Could not connect: ' . mysql_error());
}

mysql_select_db("my_db", $con);

mysql_query("INSERT INTO Table (Title, Article)
VALUES ('$Title', '$Article')");

mysql_close($con);
?>

問題は..ユーザーが以前に送信された入力とテキスト領域の値で送信ボタンを押した後、form.htmlにリダイレクトする方法ですか?

テキスト領域には 1024 文字を超える場合があることに注意してください。なので、URLに$articleをつけてform.htmlにGETメソッドを使うのは良い考えではないと思います。私はあなたからの他のテクニックを見ることができることを願っています...ありがとう!

4

4 に答える 4

1

一般的な方法は、PHPをフォームと同じページに配置し、PHPを次のように囲むことです。

<?php 

if($_POST)
{
// your processing code here
}

?>

次に、フォームをそれ自体に送信するだけで、値が同じページで処理されます。次に、これをテキストボックスに含めて、$_POSTの値で埋めることができます。

<textarea><?php echo $_POST['textarea']; ?></textarea>

注意:これは安全ではありません。よくわからない場合は、どうすれば確保できるかお尋ねください。

注意:これは許容範囲ですが、より良い設計はMVCを使用することです。

于 2012-09-12T13:36:55.450 に答える
1

http://us2.php.net/manual/en/book.session.php

PHP セッションを使用する必要があります。

非常に基本的なチュートリアルとして:

  1. 出力を発行する前にsession_start()、すべてのページの先頭に配置します。
  2. _POSTに値を書き込む_SESSION
  3. フォーム表示ページには、次のものがあります$Articles = htmlspecialchars($_SESSION['Articles']);

これは、複数のページ間でデータを運ぶ唯一の信頼できる方法です。


クエリへの入力をサニタイズします。PDO(または)を使用して準備済みステートメントを使用するかmysqli、最低限、最初にクエリへmysql_real_escape_stringの入力に対して実行します。_POST

于 2012-09-12T13:34:54.360 に答える
1

データベース ページに追加$_POSTします。$_SESSION

session_start();
$_SESSION['post'] = $_POST;

関数を使用headerしてページにリダイレクトしform.htmlます。

header('Location: http://mydomina/form.html');

$_SESSION['post']からのデータをフォーム フィールドに書き戻します。

<texarea><?php echo $_SESSION['post']['article']; ?></textarea>

データベースで作業する場合も、セキュリティの問題を考慮してください。

于 2012-09-12T13:41:16.147 に答える
0

これには PHP SESSION を使用できます。

http://php.net/manual/en/features.sessions.php

于 2012-09-12T13:37:56.847 に答える