使用PHP header()函数时出现大量新手错误

时间:2010-02-24 19:33:19

标签: php header

如果$ validForm变量为TRUE,我正在尝试重定向到.php页面。

这是我的代码:

<?php session_start();
require("validationLibrary.php");
$validForm = true;
?>

<html>
    <head>
        <title>Registration Form - 1 of 2</title>
    </head>

    <body>
        <h1>Registration - Part 1 of 2</h1>
        <p>Please fill in all the required information before submitting the information.</p>        
        <form action="registerFormOne.php" method="post">
            <dt>First Name:</dt>
                <dd><input type="text" name="firstName" /></dd><br />
                <dd>
                    <?php
                        if(isset($_POST['firstName'])){
                            if(!validateRequired($_POST['firstName'])){
                                $validForm = false;
                            }
                        }
                    ?>
                </dd><br />

            <dt>Last Name:</dt>
                <dd><input type="text" name="lastName" /></dd><br />
                <dd>
                    <?php
                        if(isset($_POST['lastName'])){
                            if(!validateRequired($_POST['lastName'])){
                                $validForm = false;
                            }
                        }
                    ?>
                </dd><br />

            <dt>EMail:</dt>
                <dd><input type="text" name="email" /></dd><br />
                <dd>
                    <?php
                        if(isset($_POST['email'])){
                            if(!validateEmail($_POST['email'])){
                                $validForm = false;        
                            }
                        }                        
                    ?>
                </dd><br />

            <dt>Age:</dt>
                <dd><input type="text" name="age" /></dd><br />
                <dd>
                    <?php
                        if(isset($_POST['age'])){
                            if(!validateNumber($_POST['age'])){
                                $validForm = false;        
                            }
                        }                        
                    ?>
                </dd><br />

            <dt>Date of Birth:</dt>
                <dd><input type="text" name="dateOfBirth" /></dd><br />
                <dd>
                    <?php
                        if(isset($_POST['dateOfBirth'])){
                            if(!validateRequired($_POST['dateOfBirth'])){
                                $validForm = false;        
                            }
                        }                        
                    ?>
                </dd><br />

            <dt>Gender:</dt>
                <dd>Masculino <input type="radio" value="M" name="gender" checked/> &nbsp;&nbsp;
                Femenino <input type="radio" value="F" name="gender" />
                </dd>            

            <dt><input type="submit" /></dt>

            <?php
                if($validForm = true){                    
                    header("Location: registerFormTwo.php");                    
                    exit;
                }
            ?>
        </form>
    </body>
</html>

我收到了这个错误:

  

警告:无法修改标头信息 - 已在第84行的C:\ XAMPP \ xampp \ htdocs \ registerFormOne.php中发送的标头(输出从C:\ XAMPP \ xampp \ htdocs \ registerFormOne.php:18开始)< / p>

4 个答案:

答案 0 :(得分:3)

必须在任何内容之前发送HTTP标头。

这意味着您必须在执行任何输出之前完成对header() function的调用(引用)

  

请记住,必须调用header()   在发送任何实际输出之前,   通过普通的HTML标签,空白   文件中的行,或PHP中的行。


一个非常标准的方法来实现:

  • 在所有HTML输出
  • 之前,将所有验证代码放在脚本的开头
  • 验证码将:
    • 重定向,如果一切正常则使用header
    • 或设置变量,以跟踪错误
  • 并且,只有在那之后,您才会使用之前设置的变量来重新显示您的表单(如果有必要)。

答案 1 :(得分:2)

在将任何信息打印到页面之前必须发送标题。在回显HTML之前,不得致电header()

答案 2 :(得分:0)

分隔表单验证和HTML生成部分。首先验证表单,可选择重定向,否则生成HTML。

答案 3 :(得分:0)

在页面上放置内容后不能使用header() - 之前必须这样做(输出到客户端的任何字符都会导致它不起作用。页面必须完全空白)

换句话说......

<html>

已经太多了。

在回显任何HTML之前,您应该检查表单输入是否有效,如果是,请使用header()重定向,否则回显HTML。