<?php
if ($_POST['submit']) {
mysql_connect ("localhost", "root", "swt") or die ('Error: ' . mysql_error());
mysql_select_db("db") or die ('Data error:' . mysql_error());
$text = mysql_real_escape_string($_POST['comments']);
$query="INSERT INTO greetings (msg) VALUES ('$text')";
mysql_query($query) or die ('Error updating database' . mysql_error());
$id= mysql_insert_id();
$url = "preview.php?id=".$id;
}
?>
<form method="post" action="<? echo $url ?>" enctype="multipart/form-data" >
<textarea name="comments" placeholder="please input your message"></textarea>
<input name="submit" type="submit" value="submit" />
</form>
你好,对不起,我是PHP的新手。我想问一下,为什么当我提交时必须按 2 次才能进入预览.php
谢谢。
第一次$url
为空时,浏览器正在请求相同的页面,然后更改$url,然后注入表单,以便下一篇文章将重定向到您的预览.php文件。
刚刚发送了重定向的标头。
header("Location: /preview.php?id=".$id);
所以它将是:
<?php
if ($_POST['submit']) {
mysql_connect ("localhost", "root", "swt") or die ('Error: ' . mysql_error());
mysql_select_db("db") or die ('Data error:' . mysql_error());
$text = mysql_real_escape_string($_POST['comments']);
$query="INSERT INTO greetings (msg) VALUES ('$text')";
mysql_query($query) or die ('Error updating database' . mysql_error());
$id= mysql_insert_id();
$url = "preview.php?id=".$id;
header("Location: $url");
}
?>
<form method="post" enctype="multipart/form-data" >
<textarea name="comments" placeholder="please input your message"></textarea>
<input name="submit" type="submit" value="submit" />
</form>
当您想要将请求发送到同一页面时,不要使用操作。
(我假设您的代码段中的 php 部分是同一个文件)
此外,要发送重定向,您需要在发送标头之前没有 html 输出
第一次将<?
更改为<?php
喜欢。
<form method="post" action="<?php echo $url ?>" enctype="multipart/form-data" >
<textarea name="comments" placeholder="please input your message"></textarea>
<input name="submit" type="submit" value="submit" />
我喜欢这样..
其次打开火虫,单击按钮,看看您遇到的错误是什么。您可能会在页面中出现一些错误,或者在第一次点击时检查您的请求是否正在启动。还要在第一次单击时检查$url
是否不为空。
更改<?= $url?> to <?php echo $ url;?>.
您的服务器未启用short_open_tags。
您的表单操作值 ($url) 是在提交第一个帖子后生成的,这意味着它在第一次提交点击时为空。更好的解决方案是将操作值保留为空,而在后逻辑中,仅构建可以将用户转发到$url$url值:
...
$id= mysql_insert_id();
$url = "preview.php?id=".$id;
header('Location: '.$url);
}