0

コードがリダイレクトに失敗する理由がわかりません..私が犯した間違い... (((警告: ヘッダー情報を変更できません - ヘッダーは既に送信されました))) という警告が表示されます ...どなたかお願いします正常にリダイレクトするために何を変更する必要があるかを教えてください...私のコードは::

<?php
include_once $_SERVER['DOCUMENT_ROOT'].'/include/db.inc.php' ;
$email = $_POST['email'];
$password1 = $_POST['password1'];
$password2 = $_POST['password2'];
$firstname = $_POST['firstname'];
$lastname = $_POST['lastname'];
if($password1 != $password2)
{
    header('Location: http://localhost/home/');
    echo "<script language=javascript> alert(\"RE-ENTERED PASSWORD DOESN'T MATCH           WITH THE ORIGINAL ONE\");</script>"; 
    exit();
}
if($firstname == "" or $firstname == "First Name")
{
    header('Location: http://localhost/home/');
    echo "<script language=javascript> alert(\"INVALID FIRST NAME\");</script>"; 
    exit();
}
if($lastname == "" or $lastname == "Last Name")
{
    header('Location: http://localhost/home/');
    echo "<script language=javascript> alert(\"INVALID LAST NAME\");</script>"; 
    exit();
 }
//INSERTION INTO THE DATABASE STARTS FROM HERE.........
$email = mysqli_real_escape_string($link,$_POST['email']);
$password1= mysqli_real_escape_string($link,$_POST['password1']); 
$firstname= mysqli_real_escape_string($link,$_POST['firstname']);
$lastname= mysqli_real_escape_string($link,$_POST['lastname']);
$password=md5($password1);
$sql = "INSERT INTO users SET 
    email = '$email',
    password = '$password',
    firstname = '$firstname',
    lastname = '$lastname'";
if (!mysqli_query($link, $sql))
{
    header('Location: http://localhost/home/');
    echo "<script language=javascript> alert(\"THIS E-MAIL ID HAS ALREADY USED BEFORE !!!\");</script>"; 
    exit();
}
else
{
    header('Location: http://localhost/home/');
    echo "<script language=javascript> alert(\"REGISTRATION SUCCESSFULLY COMPLETED !!!             \");</script>"; 
    exit();
}        
?>
4

2 に答える 2

2

の出力 (エコー) または空白を確認しますdb.inc.php

呼び出す前に何も出力してはいけませんheader()

また、ファイルをUTF-8 without BOM.

于 2013-02-20T12:18:45.283 に答える
0

空白またはスクリプトが出力を実行している場所が見つからない場合は、次の行をスクリプトの先頭に配置します。

ob_start()

次に、exit()の前にもこの関数が必要です。

ob_end_flush();
于 2013-02-20T12:21:26.067 に答える