2013-08-14 18 views
5

Garip bir problemle karşı karşıyayım. $_COOKIE['cookieName'] 'u ayarlayan bir PHP dosyasına bir AJAX gönderiyorum. O ana dosyada bu çerezi ekliyorum.

Sorun: AJAX'ı işleyen PHP dosyası, görünüm dosyasıyla aynı klasördeyse, $_COOKIE['cookieName'] ekoyu doğrular. Ancak farklı dizini'a taşıyorsam, Ajax yanıtı başarılı bir şekilde geçecektir, ancak '$ _COOKIE' hiçbir zaman ayarlanmadığı veya bulunmadığı gibi görüntüleme dosyasında yankılanmayacaktır. AJAX kolları

Dosya:

$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"; 
    } 

görünüm dosyası:

<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 –

cevap

6

görüldüğü gibi, aksi takdirde geçerli yolu için sadece ayarlanır, çerez $ yolu parametresini ayarlamak zorunda URL’de

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

+0

* facepalm *. Bunu çözdüğünüz için çok teşekkür ederim. – user1775598

1

dördüncü param çerez geçerli olacağı sunucudaki yol olduğunu. '/' Olarak ayarlanırsa, çerez tüm alan içerisinde kullanılabilir. '/ Foo /' olarak ayarlanmışsa, çerez yalnızca/foo/dizininde ve/foo/bar/alan adı gibi tüm alt dizinlerde kullanılabilir.

varsayılan değer çerez ayarlanan edildiğini geçerli dizindir. Öylesine

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

geçerli dizini alınır, sonra varsayılan değeri 4 param ayar değilse

İlgili konular