質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Cookie

HTTPにおけるCookieとは、クライアントのウェブブラウザ上に保存された一時的なデータを指します。クライアント側のJavaScriptでも、サーバー側のHTTPヘッダーでもクッキーの読み書き・修正・削除が可能です。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Q&A

解決済

1回答

5477閲覧

クッキーのパスの指定方法がわからない - php

keys

総合スコア215

Cookie

HTTPにおけるCookieとは、クライアントのウェブブラウザ上に保存された一時的なデータを指します。クライアント側のJavaScriptでも、サーバー側のHTTPヘッダーでもクッキーの読み書き・修正・削除が可能です。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

0グッド

2クリップ

投稿2018/01/28 07:56

編集2018/01/28 07:58

やりたいこと

下記のようなディレクトリ構成でmain.phpで定義したクッキーをsub.phpで使いたい

ディレクトリ構成

$ pwd /Users/User_Name/Desktop/cookie_test $ tree . ├── cookie_main │   └── main.php └── cookie_sub └── sub.php

main.php

上記のようなディレクトリにおいてmain.phpで下記(setcookie("cookie[three]", "cookiethree", time()+3600, "/../cookie_test");)のようにクッキーを作りました

<?php echo "this page is main.php"; echo nl2br("\n"); // クッキーを設定します setcookie("cookie[three]", "cookiethree", time()+3600, "/../cookie_test"); setcookie("cookie[two]", "cookietwo", time()+3600, "/../cookie_test"); setcookie("cookie[one]", "cookieone", time()+3600, "/../cookie_test"); // ページを再読み込みした後に、表示します if (isset($_COOKIE['cookie'])) { foreach ($_COOKIE['cookie'] as $name => $value) { $name = htmlspecialchars($name); $value = htmlspecialchars($value); echo "$name : $value <br />\n"; } } //three : cookiethree //two : cookietwo //one : cookieone ?>

sub.phpでクッキーが動かない

上記のように設定すればcookie_testディレクトリ全体でクッキーが使えるようになると思ったのですが、sub.phpではクッキーが読み込まれません。

<?php echo "this page is sub.php"; echo nl2br("\n"); if (isset($_COOKIE['cookie'])) { foreach ($_COOKIE['cookie'] as $name => $value) { $name = htmlspecialchars($name); $value = htmlspecialchars($value); echo "$name : $value <br />\n"; } }else{ echo "クッキーは存在しない"; } ?>

試したこと

上記のようにパスを工夫したのと、ドメイン全体でクッキーを使え右葉に試しもしました。自分は現在awsのlightsailを使っており、httpsもドメインも取得しておらず、そのためか、ドメイン全体での制御も出来ませんでした。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

/../cookie_test というパス指定は、期待されたような設定にはなりません。Firefoxで調べたところ、文字通り /../cookie_test というパスが設定されるようですが、実際にはそのようなパス指定はできないので、絶対に送信されないクッキーになります。
まず、 "/" というパス指定を確認してみてください。それでうまくいきませんか?

投稿2018/01/28 13:06

ockeghem

総合スコア11701

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

keys

2018/01/29 10:02 編集

./ と指定するとドメイン全体で使えるようになるようですが。ipアドレスだとこれが効かないらしいです。大人しく、自分のvpsにドメインを導入し、./でドメイン全体でクッキーを動かそうと思います。
ockeghem

2018/01/29 12:49

./ ではなく、単に / ですよ
BABACODE

2019/03/10 02:32

同じ症状のようで確かに”.”を付けるとうまくいきます.環境はXAMPP. サーバでは"/"でうまくいってたりもします. パスではなくドメインのほうですが == 古いブラウザの中には、非推奨になった » RFC 2109 を実装しているものが未だに残っているかもしれません。 そのようなブラウザでは、すべてのサブドメインにマッチさせるためには先頭に . が必要となります。 == との記述がありますね. どうも細かい部分がわかりませんが.
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問