php
1//setCookie 2 $cookie = filter_input(INPUT_GET,"cookie"); 3 if($cookie){ 4 if(!isset($_COOKIE['cookie'])){ 5 $host_name = $_SERVER['SERVER_NAME']; 6 setcookie('cookie', $cookie, time()+60*60*24*60,"/",$host_name,0); 7 } else { 8 setcookie('cookie', '', time() - 1800); 9 setcookie('cookie', $cookie, time()+60*60*24*60); 10 } 11 $cookie = 'cookie='. $_COOKIE['cookie']; 12 } else { 13 $cookie = ''; 14 }
上記のコードでURLに?cookie=[値]というものが付いていたらそれをcookieに保存
再度アクセス時別の値だった場合はcookieの書き換え。
また、パラメータがない場合は$cookieは空。(初回のみ、一度cookieが保存されてしまった場合はそのままで大丈夫です。本当は消したいのですが、私だと時間がかかりそうなので…)
というものを実装したいのですが、
書き換え時に同じcookie名の値が取れてしまいます。
Chromeのデベローッパーツールで確認したところ、
domainの部分に違いがあり、
1つが「www.example.com」というドメインでcookieに保存されていて
2つ目が「.www.example.com」というドメインでcookieに保存されていました。
また一つ目のドメインの方ではちゃんと書き換えがされていますが、
2つ目のドメインの値が残ってしまっているため、
$_COOKIE['cookie'];で中身が変わらない状態です。
どのように対処したらよいのでしょうか?
ご教示お願いします。
追記
コードを下記にした場合はローカル環境(MAMP)では正常に書き換えができましたが
FTPソフトであげた先のサイトで見ると同じ1回目の値が残ってしまいます
php
1//setCookie 2 $cookie = filter_input(INPUT_GET,"cookie"); 3 if($cookie){ 4 if(!isset($_COOKIE['cookie'])){ 5 $host_name = $_SERVER['SERVER_NAME']; 6 setcookie('cookie', $cookie, time()+60*60*24*60,"/",$host_name,0); 7 } else { 8 setcookie('cookie', '', time() - 1800); 9 setcookie('cookie', $cookie, time()+60*60*24*60,"/",$host_name,0); 10 } 11 $cookie = 'cookie='. $_COOKIE['cookie']; 12 } else { 13 $cookie = ''; 14 }
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/04/19 05:56
退会済みユーザー
2018/04/19 06:02
退会済みユーザー
2018/04/19 06:03
2018/04/19 06:03
2018/04/19 06:04
退会済みユーザー
2018/04/19 06:06
2018/04/19 06:07
退会済みユーザー
2018/04/19 06:08
2018/04/19 06:09
2018/04/19 06:12 編集
退会済みユーザー
2018/04/19 06:12 編集
2018/04/19 06:14
2018/04/19 06:16
退会済みユーザー
2018/04/19 06:20
2018/04/19 06:44