1

私はphpを初めて使用し、htmlとphpコードをインターリーブするためのルールについて何が欠けているのだろうか.

php タグがファイルの先頭にある場合にのみ php ファイルが機能するという状況に遭遇したのは、これが 2 回目です。これは、すべてのファイルに当てはまるわけではありません。なぜだろうと思います。

以下に例を示します。

次のように構成された私のファイルは問題なく動作します。

<?php

... my php code

?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html>
<head>
<title>Authentication</title>
<link rel="stylesheet" type="text/css" href="style.css" />
</head>
<body>
<div id="container">
</div>
</body>
</html>

しかし、その html ブロッ​​クを上部に移動すると (php コードでいくつかの echo ステートメントを使用するため、最終的にはこれが必要です)、下部に次のものだけを残します。

</div>
</body>
</html>

次に、php コードの一部が機能しません。たとえば、setcookie 関数は Cookie を設定しなくなりましたが (エラーは発生しません)、SQL クエリを実行したりステートメントをエコーし​​たりすることはできます。チュートリアル サイトから直接取得した完全に異なるコードで同様の問題に遭遇しました。この例は、コードがで始まる場合にのみ機能します。

4

4 に答える 4

4

一部の操作 (Cookie の書き込みなど) は、出力をブラウザーに送信する前に PHP で実行する必要があります。これらの操作には、応答ヘッダー (常に他のコンテンツの前に送信される) の設定が含まれるためです。ここが問題のようです。

于 2012-09-13T18:51:44.660 に答える
1

ドキュメントごと:

setcookie()は、残りの HTTP ヘッダーと一緒に送信される Cookie を定義します。他のヘッダーと同様に、Cookie はスクリプトからの出力のに送信する必要があります (これはプロトコルの制限です)。これには、タグ<html>や空白を含め、出力の前にこの関数を呼び出す必要があります。<head>

于 2012-09-13T18:52:59.593 に答える
0

それらのリンクを見てください。彼らは何かを説明します。そして、stackOverflow でここに質問することを忘れないでください。

http://www.w3schools.com/php/php_cookies.asp

http://php.net/manual/en/features.cookies.php

http://www.w3schools.com/php/php_sessions.asp

http://it.php.net/manual/en/session.examples.basic.php

于 2012-09-13T18:55:53.483 に答える
0

あなたの質問に答えると、正しく構造化されている限り、タグは実質的に HTML コードのどこにでも配置できます。

ただし、php には、setcookie、setsession、header などのように、実行前に出力を作成しないことが必要な関数がいくつかあります。

ここでの出力は次のいずれかです。を。PHP コードの echo ステートメント。b. 関数が含まれるタグの前の html コード。

それに関しては、phpの一部のコードが機能しません。通常、コードに問題がある場合、その php コードは機能しません。そのため、その前に構文が正しいかどうかを確認することをお勧めします。

于 2012-09-13T18:56:36.497 に答える