PHP在提交表单后重新定向

PHP在提交表单后重新定向,php,redirect,Php,Redirect,我试图在人们正确提交表单后将其重定向到PDF,在此之前,我对表单字段进行了一些检查,以确保它们已正确填写,现在我尝试使用header()进行重定向,但因为在出现错误之前,我已多次回显。下面是我的代码,我能做什么 <?php if(isset($_POST['submit'])) { if($valid_fname == "Y") { if($valid_sname == "Y") { if($valid_com

我试图在人们正确提交表单后将其重定向到PDF,在此之前,我对表单字段进行了一些检查,以确保它们已正确填写,现在我尝试使用header()进行重定向,但因为在出现错误之前,我已多次回显。下面是我的代码,我能做什么

<?php
    if(isset($_POST['submit'])) {
        if($valid_fname == "Y") {
            if($valid_sname == "Y") {
                if($valid_company == "Y") {
                    if($valid_email == "Y") {                   
                    }
                    else {
                        echo "<p class=\"secText\">Please enter a valid email address</p>\n";
                    }
                }
                else{
                    echo "<p class=\"secText\">Please enter the company you work for</p>\n";
                }
            }
            else {
                echo "<p class=\"secText\">Please enter your surname</p>\n";
            }
        }
        else {
            echo "<p class=\"secText\">Please enter your first name</p>\n";
        }
        if(($valid_fname == "Y")&&($valid_sname == "Y")&&($valid_company == "Y")&&($valid_email == "Y")) {
            echo "<p class=\"secText\">Thank you for confirming your details, you will be re-directed to \"The Personal Touch\" Whitepaper shortly.</p>\n";         
            header('Location:  http://www.sefasinnovation.co.uk/personal_touch.pdf');
            exit();
        }
    }
?>

编辑好的,最后我使用了一点javascript

    if(($valid_fname == "Y")&&($valid_sname == "Y")&&($valid_company == "Y")&&($valid_email == "Y")) {
        echo "<p class=\"secText\">Thank you for confirming your details, you will be re-directed to \"The Personal Touch\" Whitepaper shortly.</p>\n";
        echo "<script type=\"text/javascript\">\n";
        echo    "   <!--\n";
        echo    "       setTimeout(\"window.location = 'http://www.sefasinnovation.co.uk/personal_touch.pdf';\",5000);\n";
        echo    "//-->\n";
        echo    "</script>\n";
    }
if($valid\u fname==“Y”)&&($valid\u sname==“Y”)&($valid\u company==“Y”)&&($valid\u email==“Y”)){
echo“

感谢您确认您的详细信息,您很快就会转到“个人触控”白皮书。

\n”; 回音“\n”; 回音“\n”; 回音“\n”; }
尝试创建一个链接,将用户重定向到pdf页面,以便该链接包含pdf页面url

<a href="http://www.sefasinnovation.co.uk/personal_touch.pdf">Thank you for confirming your details </a> 

或者,您可以使用meta标记在2秒钟后重定向用户

<meta http-equiv="refresh" content="2; url=http://www.sefasinnovation.co.uk/personal_touch.pdf" />

您的问题在于:

 if(($valid_fname == "Y")&&($valid_sname == "Y")&&($valid_company == "Y")&&($valid_email == "Y")) {
            echo "<p class=\"secText\">Thank you for confirming your details, you will be re-directed to \"The Personal Touch\" Whitepaper shortly.</p>\n";         
            header('Location:  http://www.sefasinnovation.co.uk/personal_touch.pdf');
            exit();
        }
if($valid\u fname==“Y”)&&($valid\u sname==“Y”)&($valid\u company==“Y”)&&($valid\u email==“Y”)){
echo“

感谢您确认您的详细信息,您很快就会转到“个人触控”白皮书。

\n”; 标题('位置:http://www.sefasinnovation.co.uk/personal_touch.pdf'); 退出(); }
如果要发送重定向标头,则无法向页面输出任何内容。请删除该
echo
语句,然后重试该页

或者,您可以编写一个带有重定向标记的HTML页面(您可以使其延迟5秒,然后重定向。然后您的消息就可以工作了)

在谷歌上查找教程。

只有在发送了标题之后,您才可以使用它发送内容

if(($valid_fname == "Y")&&($valid_sname == "Y")&&($valid_company == "Y")&&($valid_email == "Y")) {
    ob_start();
    echo "<p class=\"secText\">Thank you for confirming your details, you will be re-directed to \"The Personal Touch\" Whitepaper shortly.</p>\n";         
    header('Location:  http://www.sefasinnovation.co.uk/personal_touch.pdf');
    ob_end_flush();
    exit();
}
if($valid\u fname==“Y”)&&($valid\u sname==“Y”)&($valid\u company==“Y”)&&($valid\u email==“Y”)){
ob_start();
echo“

感谢您确认您的详细信息,您很快就会转到“个人触控”白皮书。

\n”; 标题('位置:http://www.sefasinnovation.co.uk/personal_touch.pdf'); ob_end_flush(); 退出(); }
然而,由于在重定向完成之前几乎没有时间显示消息,这种方法将是无用的

在这里,您最好的方法可能是将页面重定向到一个小的HTML页面,该页面将在经过一定时间后触发JavaScript重定向。这里是总体思路。你应该把细节搞清楚

PHP

if(($valid_fname == "Y")&&($valid_sname == "Y")&&($valid_company == "Y")&&($valid_email == "Y")) {
    header('Location:  http://www.sefasinnovation.co.uk/notification.html');
    exit();

    // You could also avoid redirection to an HTML file and output the code directly
    echo <<<HTML
    <html>
        <head>
        <title>Enter desired title</title>
        <script type="text/javascript">
            setTimeout(function(){
                window.location = "http://www.sefasinnovation.co.uk/personal_touch.pdf";
            }, 5000);
        </script>
        </head>
        <body>
            <p class="secText">Thank you for confirming your details, you will be re-directed to "The Personal Touch" Whitepaper shortly.</p>
            <p>If this page isn't redirected in 5 seconds please click <a href="http://www.sefasinnovation.co.uk/personal_touch.pdf">here</a>.</p>
        </body>
    </html>
HTML;
}
if($valid\u fname==“Y”)&&($valid\u sname==“Y”)&($valid\u company==“Y”)&&($valid\u email==“Y”)){
标题('位置:http://www.sefasinnovation.co.uk/notification.html');
退出();
//您还可以避免重定向到HTML文件并直接输出代码

echo Please,Please,Please学习如何使用布尔值,Please,Please,Please学习如何进行负比较。
如果(!$valid\u compay)echo“Please enter…”
更简短,更容易阅读!
<html>
    <head>
    <title>Enter desired title</title>
    <script type="text/javascript">
        setTimeout(function(){
            window.location = "http://www.sefasinnovation.co.uk/personal_touch.pdf";
        }, 5000);
    </script>
    </head>
    <body>
        <p class="secText">Thank you for confirming your details, you will be re-directed to "The Personal Touch" Whitepaper shortly.</p>
        <p>If this page isn't redirected in 5 seconds please click <a href="http://www.sefasinnovation.co.uk/personal_touch.pdf">here</a>.</p>
    </body>
</html>