
PHPのマニュアルによると
setcookie() は、その他のヘッダ情報と共に 送信するクッキーを定義します。 ほかのヘッダ情報と同様に、 クッキーは、スクリプトによる他のあらゆる出力よりも前に 送信される必要があります(これはHTTPプロトコルの制約です)。 <html> や <head> タグはもちろん 空白も含め、あらゆる出力よりも前にこの関数をコールするようにしなければなりません。
Javascriptで下記のコードを書いてみました。ヘッダー、bodyを出力後にcookieの操作が可能に思えます。
javascript
1<!DOCTYPE html> 2<html lang="ja"> 3<head> 4<meta charset="UTF-8"> 5<title>cookie test</title> 6</head> 7<body> 8cookie test! 9<script> 10let number = Math.floor( Math.random() * 99999999999 ) ; 11console.log('number_'+number); 12document.cookie = 'number_'+number+'=saved'; 13console.log(document.cookie); 14</script> 15</body> 16</html>
リロードを何回しても、ちゃんと保存されるし、呼び出せます。
他の言語についてもなにか制限があるのかと思ったのですが、詳しくないためか(あるいは制限がないのか)、同じような「あらゆる出力よりも前にこの関数をコールする」というものを見つけられませんでした。
phpの(これはHTTPプロトコルの制約です)
とあるのですが、あらゆる出力よりも前にこの関数をコールする
はphp言語ならではの仕様ということなのでしょうか?
回答3件
あなたの回答
tips
プレビュー
下記のような回答は推奨されていません。
このような回答には修正を依頼しましょう。
また依頼した内容が修正された場合は、修正依頼を取り消すようにしましょう。
退会済みユーザー
2022/06/07 07:24