2013-08-14 3 views
5

У меня возникла странная проблема. Я отправляю AJAX в файл PHP, который устанавливает $_COOKIE['cookieName'] Затем я повторяю этот файл cookie в основном файле.

Проблема: Если файл PHP, который обрабатывает AJAX, находится в той же папке, что и файл вида, то $_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

* лицоpalm *. Большое вам спасибо, что решает. – user1775598

1

Четвертые пары путь на сервере, в котором куки будут доступны на. Если установлено значение '/', файл cookie будет доступен во всем домене. Если установлено значение '/ foo /', cookie будет доступен только в каталоге/foo/и всех подкаталогах, таких как/foo/bar/домена.

Значение по умолчанию является текущим каталогом, печенье создается в.

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

так что если вы не устанавливать 4-е из параметров, то значения по умолчанию, которое текущий каталог выбран,

Смежные вопросы