我有一个简单的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方法是个好主意。我希望我能看到你的其他技术......谢谢!
答案 0 :(得分:1)
http://us2.php.net/manual/en/book.session.php
您需要使用PHP会话。
作为一个非常非常基础的教程:
session_start()
放在每个页面的开头。_POST
值写入_SESSION
$Articles = htmlspecialchars($_SESSION['Articles']);
等这是在多个页面之间传输数据的唯一可靠方式。
清理您对查询的输入。要么使用带有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。