我要在提交表单后使用$_SERVER['PHP_SELF']
将表单发布到同一页面上,我需要集中(滚动到)表单所在页面的页脚;尝试在条件块外部进行标题调用,提示错误“ ERR_TOO_MANY_REDIRECTS”,如果我将标题调用置于条件块内部。重定向有效,并且也可以集中在所需的部分,但是其余的php代码不起作用
<?php
$popupMessage = '';
if(isset($_POST['submit'])){
$name = htmlspecialchars($_POST['name']);
$email = htmlspecialchars($_POST['email']);
$message = htmlspecialchars($_POST['message']);
if(!empty($name) && !empty($email) && !empty($message)){
//code for sending mail
$popupMessage = 'Email Sent Successfully';
}
else{
$popupMessage = 'Please fill in all the fields';
}
// header('Location: test.php#footer');
}
?>
<html>
<center>
<div style="width:100%; height:1200px;"><h1>please scroll down</h1></div>
<div id="footer" style="border:1px solid grey">
<span><?php echo $popupMessage ?></span>
<form id="form-location" action="<?php echo $_SERVER['PHP_SELF'] ?>" method="post">
<p><input type="text" name="name" placeholder="Your Name"></p>
<p><input type="text" name="email" placeholder="Your email"></p>
<p><textarea name="message" placeholder="Your message"></textarea></p>
<button type="submit" name="submit">Send</button>
</form>
</div>
</center>
</html>
答案 0 :(得分:0)
好像您的重定向是无条件执行的。将其放在处理表单的条件下(如果提交的是:
if (isset($_POST['submitted'])) {
// Process the form normally.
header('Location: ' . $_SERVER['PHP_SELF'] . '#myElt');
exit;
}
Location
标头将创建一个新请求,因此如果您要保留帖子数据,此解决方案将无法使用。相反,您可以做的是更改您的form action
:
<form action="<?php echo $_SERVER['PHP_SELF'] ?>#footer" method="post">