したがって、私の理解では、ブラウザがHTMLページを生成するためにphpが使用され、ページが生成され、このページがブラウザに渡されてphpタスクが完了します。つまり、php はここで終了します。
私は考えられる状況を分析しました。php によって生成されたページでは、これを操作するために javascript または類似したものが使用されています。でもよくわからないのでアドバイスをお願いします。
-----解決策---------基本的にはその理解で間違いありません。 PHP のクライアント Cookie の読み取りおよび書き込み機能に関しては、これは http ヘッダーを通じて実現されます。
ブラウザで Web サイトにアクセスすると、実際には http リクエストが送信されます。リクエスト ヘッダーには、クライアントのマシンからの Cookie が含まれています。これは、マシン上の Cookie がサーバーに送信される方法です。サーバーは php スクリプトとして理解できます。 PHP スクリプトはリクエストを処理して HTML に解釈した後、HTTP で応答し、その応答は解釈された HTML と Cookie をクライアント マシンに返します。このようにして、php はマシン上の Cookie を読み書きできるようになります。
http のインタラクションにはさまざまなものがあります。以下は、Baidu を開いたときの http インタラクション プロセスです。リクエストとレスポンスが何とやり取りしているのかを確認できます。
リクエストヘッダー
----------------------------------
リクエストURL:http://www.baidu.com/
リクエストメソッド:GET
ステータスコード:200 OK
リクエストヘッダーソースビュー
Accept:text/html,application/xhtml xml,application/xml;q=0.9,*/*;q=0.8
Accept-Charset:GBK,utf-8;q=0.7,*;q=0.3
Accept-Encoding:gzip、deflate、sdch
Accept-Language:zh-CN,zh;q=0.8
キャッシュ制御:max-age=0
接続:キープアライブ
クッキー:BAIDUID=9222A2A4BF6D80D713705CD25FE0390E:FG=1; bdshare_firstime=1357125911300; FBJCQAAAAAAAAAAouSSDzIfYFMW5qZWN0MTBuAAAAAAAAAAAAAAAAAAAAACAYIArMAAAALD275YqAAAA6p5DAAAAAAAxMC4zNi4xNOwU1FDsFNRQe; BDUT=4dim9222A2A4BF6D80D713705CD25FE0390E13b748d0bb81; =1358090765568;BDRCVFR[feWj1Vr5u3D]=I67x6TjHwwYf0;
応答ヘッダー
------------------------
キャッシュ制御:プライベート
接続:キープアライブ
コンテンツエンコーディング:gzip
コンテンツの長さ:8379
Content-Type:text/html;charset=utf-8
日付:Sat, 19 Jan 2013 21:55:43 GMT
有効期限:2013 年 1 月 19 日(土) 21:55:43 GMT
サーバー:BWS/1.0
セット-Cookie:H_PS_PSSID=1792_1421_1760_1788; ドメイン=.baidu.com
Vary:Accept-Encoding
-----解決策---------
LZ はそれをよく理解しています。このフォーラムで「JavaScript を php 変数に割り当てる方法」を尋ねた多くの人々に比べれば一歩前進です (BS の意図はありません。私もこれを経験しました)。少なくとも、php 操作が終了したことはわかります
、または状況はまだ終わっていない。これは比較的高度なトピックであり、さらに研究する必要がある
当時は js をやっていたのですが、サーバー上でしかできないことがあるということに気づき、ネームサーバー側の JavaScript に出会い(この時期に上記のことを考えていました)、サポートがほとんどないことがわかりました。そして私は php を発見し、php の道を歩み始めました。
前述の http ヘッダーを理解することから始めることをお勧めします。以前は助けがなく、本を読むだけで理解するのは困難でした。しかし時代は変わり、今では多くのツール (および簡単なツール) でパケットをキャプチャできます。パケットをキャプチャするのは難しいことではありません。最初の頃は、これはハッカーだけが行うことだと思っていましたが、Firefox には Firebug プラグインをインストールする必要がありました (Chrome にはもっと簡単かもしれません)。
http プロセスは次のようなものです。接続は省略されています。ソケットや Web ページのキャプチャについて学習してから、データ送信部分についてのみ説明します。
1. URL へのアクセスなどのクライアント リクエスト: このときに送信されるデータは、URL だけではなく、メソッド (GET、POST...) URL、Web サイトのホストなどのリクエスト ヘッダー情報の集まりです。ポート、アクセスするソフトウェアとバージョン、送信方法(圧縮するかどうかなど)、言語など、およびデータの取得または投稿 - 2 回目のアクセスの場合は、詳細については上記の例と http プロトコルの RFC2616 を参照してください。以降、Cookie 情報を追加することもできます (これは基本的にブラウザ自体によって行われます)
2. サーバーは処理後にデータを返します。返されるのは Web ページ (またはファイル) だけではありません。その前に大量の戻りヘッダー情報があり、最初の行はステータス (ステータスは 1 つだけです)、200 は成功を意味し、404 は見つからないことを意味し、500 はサーバーの問題を意味します。その他のステータス番号については、プロトコルのドキュメントを参照してください。また、返されたデータ タイプやテキストなどの他のデータ タイプもあります。 /html はもちろん html; 有効期限、送信方法...上記 これらは基本的に Web サーバー (Apache など) によって自動的に行われますが、PHP を通じて変更することもできます。 Cookie はこのヘッダーに読み込まれます。PHP のヘッダー機能は、プログラミングを容易にするためにセッションと Cookie を分離するだけです。リターンヘッダーが完了すると、Web ページ自体、画像自体などの「正式な」送信コンテンツが完成します。
これらを理解すると、ヘッダー関数の使用や他の処理に役立ちます。たとえば、PHP が描画後の出力前にヘッダー関数を送信する必要がある理由、セッションをプログラムの先頭に配置する必要がある理由、PHP が XML を出力する方法などを理解することができます。ブラウザにページをキャッシュさせるかキャッシュさせない方法...etc
JavaScript も Cookie を送信できますが、これは PHP が Cookie を送信することとは関係ありませんが、それらはすべて Cookie であるため、JavaScript によって送信されたものは次のリクエストで PHP によって読み取られる可能性があります。これは、PHP によって書き込まれたすべての Cookie というトピックにつながります。他のソフトウェアやプログラム、サーバー コンピューターでも読むことができます。後で他のトピックについて議論するときに検討しましょう。