0

このエラーが発生した理由がわかりました。コードに問題はなかったので、投稿から削除しました。

私の PHP ページは UTF-8 としてエンコードされていましたが、BOM (バイト オーダー マーク) なしで UTF-8 としてエンコードする必要がありました。

私が理解しているように、BOM は出力として解釈されるか、少なくとも出力を作成します。

すべての回答に感謝します。私の質問は重複していました。申し訳ありません。他の投稿を見ましたが、十分ではありませんでした。ありがとう !

4

2 に答える 2

0

setcookie を使用する前にすでに HTML 出力を行っている場合は、HTML 出力が開始された場所を見つける必要があります。その行の上に、出力バッファリングを開始するob_start Docs関数を配置します。

出力バッファリングを有効にしても、プログラムは HTML を「出力」できますが、すぐには送信されません。その後、問題なく setcookie を呼び出すことができるはずです。

  <?php
  function login($username,$pwd)
    {   
        $mysqli=dbconnect(); //no output
        $query = "SELECT * FROM `users` WHERE `name`='$username' AND `password`='$pwd'";
        $result = $mysqli->query($query) or die($mysqli->error.__LINE__);
        if($result->num_rows == 1) {
            while($row = $result->fetch_assoc()) {
                ob_start(); //set output buffering before setting cookies..
                setcookie("ID", $row['userid'], time()+3600*24*365);
                ob_end_flush(); // flush data
                if (isset($_COOKIE['UNIQUE_ID']))
                    {echo 'Connected';}
                else{echo 'No cookie today :(';}
            }
        }
        dbclose($mysqli); //no output
    }
    ?>

スクリプトが終了すると、出力バッファが自動的にブラウザに送信されるため、それ以上気にする必要はなく、残りは自動的に機能します。

于 2013-03-15T02:01:39.123 に答える
0

タグを開く前に空白をすべて削除してみてください。

終了タグはオプションであり、空白を出力として誤って解釈するのに役立つ場合があります

于 2013-03-15T02:26:08.353 に答える