0

コードを実行すると、まだそのエラーが発生します。これが私のコードです。すべての空白も削除しました.htmlのフォームは、php(action = "lib/login.php")ファイルに移動して、ユーザーが存在するかどうかを確認します。存在する場合は、リダイレクトします。dbconnect.php はデータベースに接続するだけです。誰でも助けることができますか?

フォルダーのレイアウト:
lib
-dbconnect.php
-login.php (コードは以下にあります)
index.html

<?php
 require_once("dbconnect.php"); 

 $loginuser = $_POST['username'];
 $loginpw = $_POST['password']; 
 $usertable = "Users";
 $users="Username";
 $pw="Password";
 $query = "SELECT $users, $pw FROM $usertable WHERE $users='$loginuser' AND $pw='$loginpw'";           
 $result = mysql_query($query);
 $num_rows = mysql_num_rows($result);                                  
 if (!$result) {
    die('Invalid query: ' . mysql_error());
}

 if ($num_rows>0) {
    header("Location:../index.html");
    exit();       
}                                      

?>

4

1 に答える 1

0

このメッセージは、すでに出力を行った後でHTTPヘッダーを送信しようとした場合に表示されます。これは、HTTPでは最初にヘッダーがあり、次に本文があるためです。出力が本文に送られるため、出力後にヘッダーを送信することはできなくなります。

echoprintまたはコードで使用される出力関数がないため、出力は次のように生成できます。

  1. PHPエラーメッセージ
  2. オープニング前の内容<?php

1に:

関数のob_*セットは、これがエラーメッセージであるか通常の出力であるかに関係なく、スクリプトのすべての出力をキャッチするための優れた方法です。したがって、次の行を追加できます。

ob_start();

オープニング<?phpタグの直後。

次に、header()追加の呼び出しの前に:

if(ob_get_size() > 0) {
    // there was an error, display it and exit
    ob_end_flush();
    die();
}

実稼働環境では、機密情報が含まれている可能性があるため、エラーメッセージの表示を完全に無効にする必要があることに注意してください。php.iniのdisplay_errorsを0に設定するか、スクリプトごとに次の方法で実行できます。

ini_set('display_errors', 0);

2へ:

投稿したコードがphpファイルの完全なコンテンツ(前にスペースや空の行がない)であると仮定する<?phpと、UTF-8BOM文字に問題がある可能性があります。BOMはバイト順マークを意味し、utf-8エンコーディングによって内部的に使用されます。また、テキストエディタには表示されません。:)

それを削除するには、そこにいくつかの解決策があります..あなたのために1つをグーグルします..... http://www.w3.org/International/questions/qa-byte-order-mark.en.php

于 2013-03-06T21:33:49.900 に答える