2013-08-14 15 views
5

Mam do czynienia z dziwnym problemem. Wysyłam AJAX do pliku PHP, który ustawia $_COOKIE['cookieName'] . Następnie wysyłam plik cookie w głównym pliku.

Problem: Jeśli plik PHP, który obsługuje AJAX, znajduje się w tym samym folderze co plik widoku, $_COOKIE['cookieName'] będzie wyświetlać echo w porządku. Jeśli jednak przeniesię go do innego katalogu o innym katalogu, odpowiedź Ajax przejdzie pomyślnie, ale "$ _COOKIE" nie będzie echo w pliku widoku, tak jakby nigdy nie było ustawione lub nie istnieje.

pliku, który obsługuje 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"; 
    } 

Plik widok:

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

Odpowiedz

6

Musisz ustawić parametr $ path cookie, w przeciwnym razie jest on ustawiony tylko dla bieżącej ścieżki, jak widać w adresie URL.

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

+0

* facepalm *. Dziękuję bardzo, że rozwiązuje to. – user1775598

1

Czwarty param jest ścieżka na serwerze, w którym cookie będzie dostępny. Jeśli ustawione na "/", plik cookie będzie dostępny w całej domenie. Jeśli ustawione na "/ foo /", plik cookie będzie dostępny tylko w katalogu/foo/i wszystkich podkatalogach, takich jak/foo/bar/domeny.

Domyślną wartością jest katalog bieżący, że plik cookie jest ustawiany w.

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

więc jeśli nie są ustalone 4th param, to wartość domyślna, który jest obecny katalog jest zrywane,

Powiązane problemy