Massive acemi hata PHP header () fonksiyonu kullanırken

4 Cevap php

Ben $ validForm değişkeni DOĞRU ise bir. Php sayfasına yönlendirmek için çalışıyorum.

İşte benim kod:

<?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>

Ben bu hatayı alıyorum:

Uyarı: başlık bilgileri değiştirilemiyor - zaten tarafından gönderilen başlıklar (çıkışında C başladı: XAMPP \ \ xampp \ htdocs registerFormOne.php \: 18) C: XAMPP \ \ xampp \ htdocs \ registerFormOne.php hattında 84

4 Cevap

HTTP başlıkları any içerik önce gönderilmesi gerekir.

header() fonksiyonu için çağrı anlamına gelir have to be done before you do any output (quoting):

Remember that header() must be called before any actual output is sent, either by normal HTML tags, blank lines in a file, or from PHP.


A pretty standard way to achive that is to :

  • put all validation code at the beginning of your script, önce herhangi bir HTML çıktı
  • that validation code will :
    • herşey yolunda ise header kullanılarak, yönlendirme ya
    • veya hata takip etmek, değişkenleri ayarlayın
  • gerekli ise ve ancak bundan sonra, size formu yeniden görüntülemek için, önce ayarlanmış değişkenleri kullanacağız.

Herhangi bir bilgi sayfası yazdırılır önce Başlıkları gönderilmesi gerekir. Sen header() HTML yankılanan önce aramak gerekir.

Form doğrulama ve HTML nesil parçaları ayırın. , Ilk formu doğrulamak isteğe yönlendirmek, aksi HTML üretir.

Eğer sayfada içeriğini koymak header() sonra kullanamazsınız - sen önce bunu yapmak zorunda (istemci outputted herhangi bir karakter çalışmaz neden olur sayfa tamamen boş olmalıdır.).

Diğer bir deyişle ...

<html>

Zaten çok fazla.

Ne yapmalıyım form giriş herhangi bir HTML yankılanan önce geçerli olup olmadığını kontrol edin, ve o, aksi takdirde HTML echo, header() yönlendirmek için kullanın.