2013-08-14 36 views
5

私は奇妙な問題に直面しています。 私はAJAXをPHPファイルに送信します。$_COOKIE['cookieName'] 次に、そのメインファイルにそのCookieをエコーし​​ます。

問題:AJAXを処理するPHPファイルがビューファイルと同じフォルダにある場合、$_COOKIE['cookieName']はうまくエコーします。しかし、別のディレクトリのディレクトリに移動すると、Ajaxレスポンスは正常に実行されますが、 '$ _COOKIE'は設定されていないか、存在しないかのようにビューファイルにエコーされません。 AJAXを扱う

ファイル:

$exp = time()+ 3600; 
    setcookie("cookieName", "tiger", $exp); 
    if(isset($_COOKIE['cookieName'])) { 
     echo "Ajax Response: " .$_COOKIE["cookieName"]. " cookie is set"; 
    } else if(!isset($_COOKIE['cookieName'])) { 
     echo "Ajax Response: Session NOT SET"; 
    } 

ビューファイル:

<script> 
$(document).ready(function(){ 
    var boxText = "test"; 
    $.ajax({ 
    type: "POST", 
    url: "login.php", 
    //login.php is in the same directory, so $_COOKIE will echo below. 
    // If I moved the file to folder/login.php AJAX will come back successfully, but $_COOKIE won't echo... 
    data: {sendValue: boxText, ajaxSent: true}, 
    success: function(response){ 
     console.log(response); 
    } 
    }); 
}); 
</script> 


<div > 
    Cookie name is.....<?php echo $_COOKIE['cookieName'];?> 
</div> 
+0

http://stackoverflow.com/questions/612034/how-can-i-set-a-cookie-and-then-redirect-in-php/612106#612106 –

答えて

6

見られるようにあなたは、それ以外の場合は、現在のパスにのみ設定されています、クッキーの$パスパラメータを設定する必要がありますURLに

setcookie("cookieName", "tiger", $exp, '/');

+0

* facepalm *。そんなにありがとうございました。 – user1775598

1

第PARAMは、クッキーが上で利用される、サーバ上のパスです。 '/'に設定すると、クッキーはドメイン全体で利用可能になります。 '/ foo /'に設定すると、cookieは/ foo /ディレクトリとドメインの/ foo/bar /などのすべてのサブディレクトリでのみ使用できます。

デフォルト値は、クッキーがセットされたときのカレントディレクトリです。

setcookie("cookiekey", "value", $exp, '/'); 

ので、あなたは第四のparamを設定していない場合は、カレントディレクトリであるデフォルト値が選ばれ、

関連する問題