クッキーを連想配列で使ってみようと思い、下記のようなコードを書きましたがうまく動作しません。
当該クッキーがセットされているときは、★の方の処理が実行されるようにしたいのですが・・・。
修正方法のアドバイスをお願いできませんでしょうか。
if (isset($_COOKIE["mycookie['pg4']"])) { //この記述が問題でしょうか?
$order = "desc"; // ★
} else {
$order = "asc";
$expiry = time() + 365 * 24 * 3600;
setcookie("mycookie['pg4']",1,$expiry);
}
これを実行した後に、ブラウザ(Firefox 5)のクッキーを見ると、
名前: mycookie['pg4']
内容: 1
とあり、一応クッキーの送信はされているようです。
また(連想)配列をやめて、"mycookie['pg4']"の部分を全て"mycookie"に変更すれば希望の動作をしてくれます。
ただ、レンタル共有サーバーでの運用ということもありなるべく配列でクッキーをセットしたいのと、
このページ用のクッキーの値の有無(過去の訪問の有無)のみを判定したので、
連想配列でできればいいなぁ、と考えました。
ちなみにHTMLのbody中で、
<?=($_COOKIE["mycookie['pg4']"]);?>と書いてもやはり結果が出力されないので、
恐らくは$_COOKIE["mycookie['pg4']"] なんて書き方が悪いような気がするのですが、
確信はなく、修正方法もわかりません・・・。
お手数ですがご指導どうぞよろしくお願いいたします。
No.1ベストアンサー
- 回答日時:
他の言語は分かりませんがPHPでの連想配列は
$a["0"]["1"] という形になります
なので
$_COOKIE["mycookie"]["pg4"]
でいけるかと。
ありがとうございました。お礼が遅くなってしまい、大変失礼いたしました。
教えていただいようにやったつもりなのですが、
どこかが間違っているのか、やはり希望の動きにはなりませんでした。
if (isset($_COOKIE["mycookie"]["pg4"])) { //修正箇所
$order = "desc"; // ★
$mycookie = $_COOKIE["mycookie"]["pg4"]; //追加箇所
} else {
$order = "asc";
$mycookie = "指定のCOOKIEは存在しないか読み出せません。"; //追加箇所
$expiry = time() + 365 * 24 * 3600;
setcookie("mycookie['pg4']",1,$expiry);
}
↑では、何度ページを再読み込み直しても、やはりelseの方に行ってしまいます。
ブラウザのメニューのクッキー一覧にはちゃんとmycookie['pg4']というものが存在し、
意図通りの値、1が入っているのですが・・・。
もしかしてsetcookieの方の書き方が悪くて配列として認識されていないということなのでしょうか?
http://php.net/manual/ja/function.setcookie.php
の例3など、配列全体の存在をチェックしてループで一つ一つを取り出す方法なら色々なところで見かけるのですが、
連想配列をキーで直接指定している例がなかなか見つかりません。
お返事をいただきまして、ありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- PHP PHPで訪問回数を表示するカウンタを作成したい 3 2023/05/27 07:09
- Excel(エクセル) Googleスプレッドシートで、あるセルの値に応じて行を自動挿入したい 急いでいます! くわしい方、 3 2023/03/06 19:05
- Visual Basic(VBA) vba 等間隔の列に対しての計算 6 2022/05/17 20:15
- Chrome(クローム) Cookieを削除 他サイトでの自動ログインなどの設定も削除されますか パソコン クロームです 1 2022/09/10 21:47
- PHP PHPでCookieを使った訪問回数について 1 2023/05/28 14:10
- PHP 配列の値の更新方法について 1 2022/08/05 09:49
- サーバー クッキーをサーバー側で管理することで攻撃に備える 1 2022/08/11 03:49
- その他(料理・グルメ) お客さんからもらった手作り菓子を他の客に配ること 2 2022/12/03 00:36
- その他(メールソフト・メールサービス) メールアプリ spark にauメールが入れられない!!! 1 2022/08/19 23:51
- お菓子・スイーツ <至急> ブラウニーの上にクッキーを載せるクッキーブラウニーを作ろうと考えています。 ですが、材料を 1 2023/02/27 15:58
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
PHPのCookieが有るか無いかで、...
-
cookieにカンマ区切りでつめこ...
-
ゲームノベルのような分岐のあ...
-
ブラウザ間でCookieを共有する...
-
なんでブラウザでPHPを動かすた...
-
ログインに関するフラグについて
-
ポインター引数の関数でコンパ...
-
char str[256]の256の意味は?
-
UTF-8で5~6バイトになる文字コ...
-
10Mバイトて文字数に すると何...
-
Excel VBA メール作成について ...
-
バイナリとBCDコード
-
ワイド文字のバイト数が取得で...
-
stable diffusionのエラー
-
DataGridViewの特定列に入力さ...
-
「1TB」のHDDに日本語は何字入...
-
POSTメソッドの最大容量について
-
エクセルシート名の制限を変更...
-
デバイスコンテキストに書いた...
-
Line Inputにて改行があっても...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
なんでブラウザでPHPを動かすた...
-
異なるドメインのサイトでcooki...
-
PHPのCookieが有るか無いかで、...
-
cURLでcookieを送受信する方法...
-
COleDateTime とtime_t
-
javascriptでcookieを削除するには
-
初回アクセス時のみ、注意を表...
-
【PHP】アクセスカウンターが空...
-
JavaScriptで保存したクッキー...
-
Javascriptのmodalを一度だけ表示
-
ログインに関するフラグについて
-
ゲームノベルのような分岐のあ...
-
インクルードファイルからのリ...
-
クッキーを連想配列で扱う方法...
-
cookieにカンマ区切りでつめこ...
-
クッキーがセットされない
-
Cookieを設定しているかどうか...
-
UTF-8で5~6バイトになる文字コ...
-
10Mバイトて文字数に すると何...
-
Excel VBA メール作成について ...
おすすめ情報