带有输入和文本区域的HTML表单,使用PHP处理,然后使用键入的值重定向

时间:2012-09-12 13:30:53

标签: php html

我有一个简单的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 个答案:

答案 0 :(得分:1)

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

您需要使用PHP会话。

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

  1. 在发出任何输出之前,将session_start()放在每个页面的开头。
  2. _POST值写入_SESSION
  3. 在表单显示页面中,有:$Articles = htmlspecialchars($_SESSION['Articles']);
  4. 这是在多个页面之间传输数据的唯一可靠方式。


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

答案 1 :(得分:1)

通常的做法是将PHP放在与表单相同的页面上,并将PHP包含在其中:

<?php 

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

?>

然后,您只需将表单提交给自己,即可在同一页面上处理这些值。然后,您可以将其包含在文本框中,该文本框将使用$ _POST'd值填充它:

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

注意:这不安全。如果您不确定,请询问如何保护它。

注意:虽然这是可以接受的;更好的设计是使用MVC。

答案 2 :(得分: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>

在处理数据库时也要考虑安全问题。

答案 3 :(得分:0)

您可以使用PHP SESSION。

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