我有一个从上一页启动的文本区域页面:
$message = $_POST['editPost'];
header("location:editPost.php?msg=$message");
editPost.php检索此内容并填充文本区域,如下所示:
echo "<form action='index.php' method='post'>
Your Post:<br/>
<textarea name='comments' cols='100' rows='100'>".$_GET["msg"]."</textarea>
<br/>
<input type=submit value='submit'>
</FORM>";
我得到的问题并非所有'msg'的数据似乎都被传递过来,或者消息在达到引号时被切断,例如“
我希望它用文本填充textarea的文本:
所以这是我这篇作业的第二篇博客文章,自从我上一篇文章
以来,我已经取得了一些进展
然而,它只将此添加到文本区域:
所以这是我的第二篇博客文章,我
正如我所说,在达到引号后似乎不再包含任何字符串。反正有这个,所以我可以传递整个信息吗?
修改
我可能会补充一点,我知道一个更简单的解决方案是从MySQL数据库中再次检索消息,因为我正在使用它,但我只是对它的工作方式感兴趣。
if(isset($_POST['edit'])) {
//$_SESSION['postToEdit'] = $_POST['editPost'];
$message = htmlentities($_POST['editPost'], ENT_QUOTES);
header("location:editPost.php?msg=$message");
这是我从这个表单发布后对数据的处理方式:
foreach($posts as $postid=>$post)
{
echo '<div class="blogPosts">'.$post;
if(isset($_SESSION['username'])) {
if($_SESSION['isAdmin'] == "true") {
echo "<br/><br/><form name='adminTools' action='index.php' method='post'>
<input type='hidden' name='editPost' value='$post'>
<input type='submit' value='Edit' name='edit'/>
<input type='hidden' name='deletePost' value='$postid'>
<input type='submit' value='Delete' name='delete' /></form>
</div>";
答案 0 :(得分:1)
echo "<form action='index.php' method='post'>
Your Post:<br/>
<textarea name='comments' cols='100' rows='100'>".htmlspecialchars($_GET["msg"])."</textarea>
<br/>
<input type=submit value='submit'>
</FORM>";
textarea似乎是一个奇怪的容器,但这是你的电话
答案 1 :(得分:0)
我想我明白了。
header("location:editPost.php?msg=$message");
闻起来不太好。
如果您只是想解决问题,请使用http://php.net/manual/en/function.urlencode.php并在获取值http://www.php.net/manual/en/function.urldecode.php
时您收到了一个帖子请求,然后使用标头位置转发它。这绝对是一种糟糕的方式。将参数作为?msg=$message
由于MVC和类似的应用程序(n层应用程序)现在已成为标准。您不应该使用意大利面条代码,混合使用html和php以及使用标头作为FrontController调度程序。
我建议您使用SLIM框架。如果你不想学习这个。您至少应遵循here所述的标准。
E.g:
<?php
// index.php
// load and initialize any global libraries
require_once 'model.php';
require_once 'controllers.php';
// route the request internally
$uri = $_SERVER['REQUEST_URI'];
if ($uri == '/index.php') {
list_action();
} elseif ($uri == '/index.php/show' && isset($_GET['id'])) {
show_action($_GET['id']);
} else {
header('Status: 404 Not Found');
echo '<html><body><h1>Page Not Found</h1></body></html>';
}
简而言之,创建一个FrontController文件,该文件将根据请求映射到所需的操作(控制器),而不使用header()
来执行特定的操作(例外情况是,实际上只需要实际的头文件)
答案 2 :(得分:-1)
在显示之前使用addslashes($ message)将其传递给querystring和stripslashe($ _ GET ['msg'])函数。 点击addslashes()和stripslashes()以获取更多参考资料。