如何在重定向到同一页面时在php中聚焦页面的特定部分

时间:2018-10-07 05:59:00

标签: php

我要在提交表单后使用$_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>

1 个答案:

答案 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">