-1

フォームを送信するたびに、phpでエラーレポートをオンにすることでこのエラーが発生します。

警告:ヘッダー情報を変更することはできません-/Applications/MAMP/htdocs/cranium/includes/register.incの(/Applications/MAMP/htdocs/cranium/includes/header.inc.php:14で開始された出力)によって既に送信されたヘッダー。 65行目のphp

私のheader.inc.phpには、次のコードがあります。

<!doctype html>
<!--[if lt IE 7]> <html class="no-js lt-ie9 lt-ie8 lt-ie7" lang="en"> <![endif]-->
<!--[if IE 7]>    <html class="no-js lt-ie9 lt-ie8" lang="en"> <![endif]-->
<!--[if IE 8]>    <html class="no-js lt-ie9" lang="en"> <![endif]-->
<!--[if gt IE 8]><!--> <html class="no-js" lang="en"> <!--<![endif]-->
<head>
  <meta charset="utf-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
  <title>Cranium eSolutions</title>
  <meta name="viewport" content="width=device-width">
  <link rel="stylesheet" href="/cranium/css/style.css">
  <script src="/cranium/js/libs/modernizr-2.5.3.min.js"></script>
</head>
<body>

include_onceを使用して、このコードをページに含めます。(14行目はbodyタグを指しており、その後は空白などはありません)。

私のregister.inc.phpで:

<?php
error_reporting(E_ALL); ini_set('display_errors', 'On');
$username = mysql_real_escape_string(stripcslashes($_POST['txtUser']));

//generate password
$password = generatePassword(10,5);


$email = mysql_real_escape_string(stripcslashes($_POST['txtEmail']));

//random code
$com_code = sha1(uniqid(rand()));


$fName = mysql_real_escape_string(stripcslashes($_POST['txtFname']));
$lName = mysql_real_escape_string(stripcslashes($_POST['txtLname']));
$address = mysql_real_escape_string(stripcslashes($_POST['txtAddress']));
$city = mysql_real_escape_string(stripcslashes($_POST['txtCity']));
$zip = (int)$_POST['txtZip'];
$country = $_POST['txtCountry'];
$mobile = mysql_real_escape_string(stripcslashes($_POST['txtMobileNo']));
$office = mysql_real_escape_string(stripcslashes($_POST['txtOfficeNo']));
$specialty = $_POST['txtFOS'];
$prof = $_POST['txtProf'];



//checkbox
$practiceFetch = $_POST['chkSOP'];
$n = count($practiceFetch);
$practice = '';
for ($i = 0; $i < $n; ++$i) {
    $practice .= $practiceFetch[$i].', ';
}
$practice = substr($practice,0,-2);



$coordinator = mysql_real_escape_string(stripcslashes($_POST['txtPrimaryCoord']));
$relationship = mysql_real_escape_string(stripcslashes($_POST['txtRelationship']));
$relEmail = mysql_real_escape_string(stripcslashes($_POST['txtRelEmail']));
$feedback = mysql_real_escape_string(stripcslashes($_POST['txtHow']));

//service concat
//if ($_POST['txtSubService']) $subService = mysql_real_escape_string(stripcslashes(' - '.$_POST['txtSubService']));
//$service = mysql_real_escape_string(stripcslashes($_POST['txtService'])).$subService;
$service = 'tae';


//start Query
require_once('../includes/db.config.php');
$checkQuery = "SELECT username FROM tblAccounts WHERE username='$username'";
$checkResult = mysqli_query($cxn,$checkQuery);
if (mysqli_num_rows($checkResult) <= 0) {
    $query = "INSERT INTO tblAccounts VALUES('','$username','$password','$fName','$lName','$address','$email','$com_code','$city',$zip,'$country',$mobile,$office,'$specialty','$prof','$practice','$coordinator','$relationship','$relEmail','$feedback','$service')";
    $result = mysqli_query($cxn,$query);
    //email confirmation
    $to = $email;
    $subject = "Confirmation from Cranium eSolutions Inc., to $username";
    $header = "Cranium eSolutions Inc.: Confirmation from craniumesolutions.com";
    $message = "Please click the link below to verify and activate your account. <br />";
    $message .= "http://imageworkz.asia/Cranium-Trial/confirm.php?passkey=$com_code";
    $sentmail = mail($to, $subject, $message, $header);
    if($sentmail) {
        header('Location: http://www.google.com');
    } else {
        header('Location: http://localhost/cranium/verificationfail.html');
    }
} else {

    echo '<span style="color:red;">Username already exists</span>';

}
?>

65行目はheader('Location:www.google.com。');を指しています。

何か案は?ありがとう!

4

3 に答える 3

8

header()呼び出す前に何も出力することはできません。何かがエコーされているか、またはエラーが表示されているかどうか、コードを確認してください。

14行目を見てくださいheader.inc.php。何かが出力されているところです。

于 2012-05-31T07:18:10.777 に答える
0

これは、出力バッファーを使用して回避できます。

http://php.net/manual/de/function.ob-start.php

これにより、フラッシュするか、スクリプトが終了するまで、出力がバッファリングされます。前に出力なし => 問題ありません!

于 2012-05-31T07:23:32.543 に答える
0

header.ing.php IS 出力です。

"include('header.inc.php') を実行すると、すぐに出力が得られます。

解決策: 後で実行します。


また、header(location) コマンドの後に「exit」を追加して、残りのスクリプトの実行を停止します。PHP は引き続き実行されます。

于 2012-05-31T07:26:21.453 に答える