0

- ファイル<?php session_start(); ?>の最初の行の前にコマンドを追加しようとしました 。index.htmlそれとは別に、ファイルにはhtmlステートメントのみが含まれています。php-code が解釈されていないことに気付いたとき、ファイルの末尾を に変更してindex.php、その問題を解決しました。

今、私がやったことは醜いハックなのか、それとも実際に受け入れられている慣行なのか疑問に思っています. それ以外の場合は html であるファイルに php-prefix を追加しても問題ありませんか?

また、悲しいことに、まだ次のエラーが発生しています: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent. 上記の練習が問題ない場合、このエラーの原因は何ですか?

4

2 に答える 2

1

.php ファイルは PHP タグと HTML タグの両方を解析する必要があることに注意してください。ドキュメントの先頭にタグを配置するのが一般的です。

また、@markus-tharkunが言及したように、PHPコードで何をしようとしているかに大きく依存します。HTML ドキュメントのヘッダーにタイムスタンプを入れたいだけの場合は、次のように簡単にできます。

<h2>
  <?php echo date('l jS \of F Y h:i:s A'); //Prints Date inside the H2 Tag ?> 
</h2>

繰り返しますが、このコードをタグ内の任意の場所に配置すると、PHP を使用して現在の日付が出力されます。 PHP はスコープを使用して興味深いトリックを実行できるため、常に細心の注意を払う必要があります。

于 2012-10-11T00:03:52.157 に答える
1

あなたがしたことは、あなたがしなければならないことです。

Apache や IIS (ほとんどの場合) などのファイルシステムベースの Web サーバーは、ファイル拡張子に基づいて要求されたファイルを解釈し、それに応じて処理します。ユーザーが.htmlファイルを要求すると、サーバーはファイルの未加工のバイトを返しますが、ユーザーがファイルを要求する.phpと、必要な出力を生成する PHP モジュールまたは CGI プログラムを介してファイルを実行します。

常に PHP でファイルを処理するように Web サーバー (共有ホスティング サービスを使用していない場合) を構成できますが、.html実装の詳細を URI で非表示にして、代わりに URL 書き換えを使用することをお勧めします (Apache と IIS7+ が完全にサポートしているもの)。

session_start()取得しているエラーに関してsession_startは、クライアントに何かが出力される前に呼び出す必要があるためです。つまり、その<?php session_start() ?>部分はドキュメントの最初にあり、その前にプレーンテキストや空白行がない必要があります。呼び出しの前にいくつかの PHP コードを含めることができますが、PHP コードが応答やヘッダーを送信していないことを確認してください。

于 2012-10-10T23:54:19.940 に答える