ゴリラ向け動画サイト「ウホウホ動画」にありがちなこと

phpの初心者なのですが、Cookieでうまく情報の引き渡しができないので、アドバイス頂けないでしょうか?

test1でCookieを初期設定した後に、Cookieを使ってtest2を呼び出し、
test2上で設定し直した値でCookieを書き変えてtest2を再呼び出ししています。

再呼び出しした時のCookieが読めないので、ブラウザを調べてみると、yyという名前のクッキーが2つ存在しているためだと判りました。値は確かに置き変わっているのですが、パスが違っているので読み出せないようです。

初期設定した時のパスは /tst/  → test1.phpでsetcookieで設定したもの
再設定した時のパスは /  → test2.phpの中のJavascriptで設定したもの
になっていました。

▽test1.php (/svr1/tst/)
setcookie("yy",$yy,0,"./");
(略)
header("HTTP/1.1 301 Moved Permanently");
header("Location: test2.php");

▽test2.php
function set_Cookie() {
yy = parseInt(document.f1.ck_yy.value);
document.cookie = "yy=" + yy + "; path=/";
return true;
}
<php?
$yy = $_COOKIE['yy'];
?>
<form name="f1" action="test2.php" method="post">
<input name="yy"> 
<input type="submit" value="実行" onClick="set_Cookie()">  
</form>

setcookie の引数であるパス名を最初は省略していたのですが、/tst/というパスが入ってきてしまうため、パス名をあえて ./としてみたのですが結果は同じでした。

ちなみにtest1の呼び出し元は別のサーバーで以下のように呼びだしています。

▽test0.html (/svr0/wwwroot/)
<a href="http://svr1/tst/test1.php">test1</a>

パス名はどのように決まるのでしょうか?

A 回答 (1件)

>パス名をあえて ./としてみたのですが結果は同じでした。



Cookieのpathを"./"で設定するのは初めて見ました(汗

普通はホスト名に対して設定する("/")か、特定のディレクトリ("/tst/"など)に設定するかのどちらかだと思います(pathを省略すればスクリプトのあるディレクトリ("/tst/")になるのは試されたとおりです)。

JavaScriptでは「/」で指定しているようですのでphpでも"/"で設定すべきじゃないかと思いますが、なぜドットを前置したのでしょうか?
    • good
    • 0
この回答へのお礼

有難うございました。
パスの書き方が良く判ってませんでした。
無事解決しました。

お礼日時:2012/09/20 15:07

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!