2010-04-28 29 views
6

Tôi có phiên được tạo bằng không khi được gọi từ cuộc gọi ajax trên Safari.Phiên PHP là null khi được gọi trong trang khác trong safari

header.php 
session_start(); 
$_SESSION['test'] = 'this is my session'; 


mypage.php 
session_start(); 
echo $_SESSION['test']; <-- NOT WORKING ON SAFARI 

Cảm ơn

+0

Bạn đã kiểm tra xem cookie có được bật không? :) –

Trả lời

4

Tính năng này có hoạt động trên các trình duyệt khác không? Tính năng này có hoạt động trong Safari không có AJAX không? Tập lệnh này đang được tải từ cùng một tên miền với trang gốc?

Safari dường như có nhiều hơn conservative cookie policy than other browsers. Nếu mọi thứ ở phía PHP hoạt động và các trình duyệt khác hoạt động, tôi sẽ nghĩ rằng Safari không gửi cookie phiên trở lại máy chủ.

+0

Điều này thường xảy ra với Safari. Nó có chính sách cookie của bên thứ ba cực kỳ hạn chế, thường có các phiên họp nếu bạn sử dụng iframe. Tôi sẵn sàng đặt cược cuộc gọi Ajax mà OP đang thực hiện có thể chuyển đến tên miền phụ hoặc tên miền khác hoặc có một số loại khung nội tuyến liên quan. – zombat

+0

Tôi đã nghe Safari 4 tốt hơn, nhưng tôi chưa thử nghiệm nó. – zombat

0

là nó null hoặc là nó ""?

khi bạn if(isset($_SESSION['test'])) trở lại đúng?

chỉ là safari này? nếu có cài đặt trình duyệt của bạn.

Cookie phiên của bạn có lưu thành công và bạn có thể đọc $ _session ['test'] đó trong phần còn lại của trang header.php không?

bạn có gọi session_start() ngay từ đầu trang không?

bạn có gặp bất kỳ lỗi nào không? nếu không - bạn đã deffo đã cho họ bật?

1

Thêm dòng này sau session_start() trong cả hai tệp và cho tôi biết id phiên là như nhau (có nghĩa là bạn đang ở cùng một phiên).

echo session_id(); 
3

Tôi gặp vấn đề tương tự, session_id() tiếp tục thay đổi mọi lần làm mới, vì vậy safari không lưu trữ id phiên trong cookie. Bằng cách thêm theo cách thủ công:

setcookie('PHPSESSID', session_id(), 0, '/');

Tôi hiểu nó hoạt động.

+0

Thực tế có chức năng chính xác hơn, có thể đặt thông số cookie phiên - [session_set_cookie_params] (http://php.net/manual/en/function.session-set-cookie-params.php) – SteveB

Các vấn đề liên quan