ホームページ  >  記事  >  バックエンド開発  >  javascript - PHP が Cookie をどのように受け入れるか、またどのような機能が関与しているのかを誰が教えてくれますか?

javascript - PHP が Cookie をどのように受け入れるか、またどのような機能が関与しているのかを誰が教えてくれますか?

WBOY
WBOYオリジナル
2016-12-01 00:56:39854ブラウズ

私はビジネス愛好家で、何をすべきか、何を学ぶべきかについて常に興味を持っています。

このクッキーはどうなったのか聞いてみました
サーバーから相手のユーザー名とパスワードを確認した後、暗号化された文字列が返され、その文字列がサーバーのデータベースに保存されるということでしょうか。

今後ユーザーがログインするときは、IDとパスワードを確認する必要はなく、文字列とデータベースが正しいかどうかを確認するだけで済みます。しばらくすると、データベース内の文字列が削除されます。

これが原則であるべきです。しかし、私が理解できないのは、前のセクションでこの Cookie がどのように送信されたのかということです。アクションを使用して投稿を送信したり取得したりできます。また、ajax を使用して数値を渡すこともできます。 URL は値を渡すためにも使用されます。

前のセクションで Cookie を送信した jQuery または HTML コードの関連関数を教えてください。

PHP サーバーから Cookie を収集するための関連関数は何ですか? キーワードを入力してください。検索するか、いくつかの注意事項を教えてください。

返信内容:

私はビジネス愛好家で、何をすべきか、何を学ぶべきかについて常に興味を持っています。

このクッキーはどうなったのか聞いてみました
サーバーから相手のユーザー名とパスワードを確認した後、暗号化された文字列が返され、その文字列がサーバーのデータベースに保存されるということでしょうか。

今後ユーザーがログインするときは、IDとパスワードを確認する必要はなく、文字列とデータベースが正しいかどうかを確認するだけで済みます。しばらくすると、データベース内の文字列が削除されます。

これが原則であるべきです。しかし、私が理解できないのは、前のセクションでこの Cookie がどのように送信されたのかということです。アクションを使用して投稿を送信したり取得したりできます。また、ajax を使用して数値を渡すこともできます。 URL は値を渡すためにも使用されます。

前のセクションで Cookie を送信した jQuery または HTML コードの関連関数を教えてください。

PHP サーバーから Cookie を収集するための関連関数は何ですか? キーワードを入力してください。検索するか、いくつかの注意事項を教えてください。

サーバーは HTTP 応答ヘッダーSet-Cookie を使用して、ユーザー エージェント (通常はブラウザー) が Cookie を保存した後、バックエンドからデータをリクエストするときに、Cookie の名前、値、対応するパス、有効期間などをユーザー エージェントに伝えます。対応する Cookie はリクエスト ヘッダーでサーバーに送信されます。

フロントエンドは JS を通じて Cookie を設定することもできます。

したがって、Cookie が設定されている限り、ブラウザは自動的に Cookie をリクエストに添付するため、積極的に送信する必要はありません。

PHPでCookieを設定する

PHP で Cookie を設定する関数は setcookie(还有个setrawcookie一般的には使用されません)。

リーリー

これにより、そのようなパスの下で hello值为world,有效期为当前时间加上3600秒(也就是1个小时),域名为example.com,路径为/test/(代表只能在诸如http://example.com/test/a.php という名前の Cookie が有効になります)。

特定のパラメータについては、ドキュメント http://php.net/manual/zh/func... を参照してください。

サーバーはCookieを送信します

サーバーは、応答HTTPヘッダーにSet-Cookieヘッダーを含めます:

リーリー

有効期限 (Expires) は GMT で表されます。ここでは北京時間の 2016 年 11 月 13 日の 18:30:00 (つまり、グリニッジ標準時 2016 年 11 月 13 日の 10:30:00) に設定したとします。 、有効期間は1時間です。

Cookie が複数ある場合、複数の Set-Cookie ヘッダーが存在します。

詳しくは http://www.cnblogs.com/hdtian... をご覧ください。

ブラウザはCookieを送信します

ブラウザはこの Cookie を保存します。次回、Cookie の条件を満たすアドレスをリクエストすると、ブラウザはリクエスト ヘッダーに Cookie ヘッダーを含めます:

リーリー

複数の Cookie がある場合、または Cookie头,各个cookie的名值对使用分号和空格; ヘッダーが 1 つだけの場合は、セミコロンとスペース ; を使用して各 Cookie の名前と値のペアを区切ります。

AJAX リクエストを行う場合でも、通常の POST および GET を行う場合でも、Cookie が有効である限り、ブラウザはそれをサーバーに送信します。

PHP は Cookie を受信して​​処理します

PHP はヘッダー情報を解析し、Cookie を $_COOKIE数组中。我们就可以这样访问名为hello Cookie 値に解析します:

リーリー

JS で Cookie を操作する

Cookie を読み取って設定するための便利なインターフェイスがないため、JS で Cookie にアクセスするのは少し面倒です。 document.cookie を通じてのみ Cookie を操作できます。詳細については、https://developer.mozilla.org... を参照してください。

JS中读取cookie直接用document.cookie,但是得到的确实和上面浏览器发送cookie中的格式类似的字符串,就是用分号和空格隔开的名值对。

比如hello=world; PHPSESSID=web5~toqn2au0krlholat9c2c4aast3这样的。我们需要自己解析。

JS中设置cookie则是和上面服务器发送cookie类似,都要设置各个参数。比如:

<code class="javascript">document.cookie="hello=kitty; expires=Sun, 13 Nov 2016 12:00:00 GMT"</code>

这样就把hello的值改成了kitty,并且把过期时间延长了半个小时。

虽然看起来好像修改了document.cookie整个值,但实际上并不会影响到其他cookie。我们再次访问document.cookie将得到hello=kitty; PHPSESSID=web5~toqn2au0krlholat9c2c4aast3这样的结果。

要删除一个cookie,只要把过期时间设置在当前时间之前就行了。

因为HTTP设计是无状态的,所以就有了cookie来充当HTTP的状态。有了cookie,服务端就知道,你是谁了。phpsetcookie函数,还有$_COOKIE来获取cookiecookie是通过头部字段CookiesSet-Cookie来传递的。所以php也可以使用设置返回头和读取返回头来设置cookie和读取cookie

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。