我有一个带有提交按钮的表单。单击提交按钮时,它会将信息发送到mysql。这一切都正常,但是当点击提交按钮时它只是重新加载页面。我希望它将信息发送到mysql然后转到页面thankyou.html。
我的提交按钮是:
<input type="submit" name="submit" id="submit" value="Submit" />
我的表格行动是:
<form name="list"; action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post" >
答案 0 :(得分:3)
这个PHP代码会将你发送到另一个页面:
<?php
if ($_POST) { // check something is being sent by the form
// MySQL stuff here...
header("location:thankyou.html");
exit;
}
?>
// put the form here
或者您可以将插入数据的php放在thankyou.html顶部的数据库中,然后将表单提交到那里。
我个人喜欢将插页保留在与表单相同的页面上,但这只是个人选择。
重要:在调用php重定向之前,页面上没有任何输出,甚至没有空白,所以一定要把你的开放php标签放在文件的顶部,不打印或回复任何东西。
答案 1 :(得分:1)
由于您将form
提交到同一页面,服务器将(在处理该页面上的任何PHP代码之后)显示该页面。你有几个选择:
第一个选项意味着您要将action
中的form
更改为以下内容:
<form name="list" action="formhandler.php" method="post">
这意味着formhandler.php
(或者你决定调用它的任何东西)将拥有处理表单的服务器端PHP代码,然后该页面将显示你想要显示的任何内容。
第二个选项只涉及在PHP代码中使用重定向(在您已提交的页面上),以便在处理表单后将用户定向到其他页面。 PHP header()
function是执行此操作的标准方法。像这样:
header("Location: thankyou.php");
这个应该本质上是PHP代码在处理表单后所做的最后一件事。也就是说,您可能不希望服务器端代码在直观的终止案例之后继续执行。因此,您需要立即调用exit
来停止页面执行。 (请记住,实际重定向不是服务器端操作,服务器只是将Location
标头发送到浏览器并告诉浏览器 it 应该执行重定向。 )
(另外,如此处的其他答案所述,执行此类重定向时,页面应该没有输出。)
此外,我想你也可以在PHP页面上有条件输出,如果它没有处理POST或另一组内容(感谢页面),如果它正在处理一个HTML内容(表单) POST,但对我来说这感觉就像一个滑坡。分离服务器端资源比使一个命名资源(somepage.php)有条件地执行不同的事情更好。 (单一责任原则)
答案 2 :(得分:0)
我建议将操作放在thankyou.php页面上,并使用post的数据将mysql插入代码放在该页面上。
<form name="list" action="thankyou.php" method="post">
此外,如果您希望所有内容都在同一页面上,则可以使用
<form name="list" action="<?php echo $_SERVER['PHP_SELF']; ?>?submit=1" method="post" >
在页面顶部的PHP代码中,快速执行
<?php if ($_GET['submit'] == '1') header('Location: http://www.example.com/'); ?>
答案 3 :(得分:0)
总是可以使用JS
<? if(!empty($_POST['submit']){
//do mysql stuff here
?>
<script type="text/javascript">
<!--
window.location = "thankyou.html "
//-->
</script><?
}?>