2013-08-14 6 views
5

Sto affrontando uno strano problema. Sto inviando un AJAX a un file PHP che imposta un $_COOKIE['cookieName'] Quindi sto facendo eco a quel cookie nel file principale.

Problema: se il file PHP che gestisce l'AJAX si trova nella stessa cartella del file di visualizzazione, l'eco $_COOKIE['cookieName'] funzionerà correttamente. Se tuttavia lo spostamento in una directory diversa, la risposta Ajax verrà eseguita correttamente, ma "$ _COOKIE" non verrà echo nel file di visualizzazione, come se non fosse mai stato impostato o non esistesse.

File che gestisce 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"; 
    } 

Il file di visualizzazione:

<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-th-redirect-in-php/612106#612106 –

risposta

6

È necessario impostare il parametro $ percorso del cookie, altrimenti è impostato solo per il percorso corrente, come si è visto nell'URL.

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

+0

* facepalm *. Grazie mille per averlo risolto. – user1775598

1

Il quarto parametro è il percorso sul server in cui il cookie sarà disponibile su. Se impostato su "/", il cookie sarà disponibile all'interno dell'intero dominio. Se impostato su '/ foo /', il cookie sarà disponibile solo nella directory/foo/e in tutte le sottodirectory come/foo/bar/di dominio.

Il valore predefinito è la directory corrente che il cookie è stato impostato in.

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

quindi se non sta impostando 4 ° param, allora il valore di default, che è la directory corrente viene raccolto,

Problemi correlati