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 个字符。所以我不认为将 $article 放在 URL 上并在 form.html 上使用 GET 方法是个好主意。我希望我能从你那里看到其他技术......谢谢!

4

4 回答 4

1

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

您需要使用 PHP 会话。

作为一个非常非常基础的教程:

  1. 在发出任何输出之前放在session_start()每一页的开头。
  2. _POST值写入_SESSION
  3. 在您的表单显示页面中,有:$Articles = htmlspecialchars($_SESSION['Articles']);等。

这是在多个页面之间传输数据的唯一可靠方式。


清理您对查询的输入。要么使用带有PDO(or mysqli) 的准备好的语句,要么至少在查询mysql_real_escape_string_POST输入上运行。

于 2012-09-12T13:34:54.360 回答
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

$_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 回答