Đầu tiên, thực hiện các kiểm tra thông thường sau:
- Hãy chắc chắn
session_start();
được gọi trước khi bất kỳ phiên nào được gọi. Vì vậy, đặt cược an toàn sẽ là đặt nó ở đầu trang của bạn, ngay sau <?php
tuyên bố mở trước bất cứ điều gì khác. Cũng đảm bảo không có khoảng trắng / tab trước khi khai <?php
báo mở .
- Sau khi
header
chuyển hướng, hãy kết thúc tập lệnh hiện tại bằng cách sử dụng exit();
(Những người khác cũng đã đề xuất session_write_close();
và session_regenerate_id(true)
, bạn cũng có thể thử những tập lệnh đó, nhưng tôi sẽ sử dụng exit();
)
- Đảm bảo cookie được bật trong trình duyệt bạn đang sử dụng để kiểm tra.
- Đảm bảo
register_globals
là tắt, bạn có thể kiểm tra điều này trên php.ini
tập tin và cũng có thể sử dụng phpinfo()
. Tham khảo điều này như làm thế nào để tắt nó.
- Hãy chắc chắn rằng bạn đã không xóa hoặc làm trống phiên
- Đảm bảo rằng khóa trong
$_SESSION
mảng siêu lớp của bạn không bị ghi đè ở bất cứ đâu
- Hãy chắc chắn rằng bạn chuyển hướng đến cùng một tên miền. Vì vậy, chuyển hướng từ một
www.yourdomain.com
để yourdomain.com
không mang phiên về phía trước.
- Hãy chắc chắn rằng phần mở rộng tập tin của bạn là
.php
(nó xảy ra!)
Bây giờ, đây là những lỗi phổ biến nhất, nhưng nếu họ không thực hiện được mánh khóe thì vấn đề rất có thể xảy ra với công ty lưu trữ của bạn. Nếu mọi thứ hoạt động trên localhost
nhưng không phải trên máy chủ từ xa / thử nghiệm của bạn, thì đây rất có thể là thủ phạm. Vì vậy, hãy kiểm tra cơ sở kiến thức của nhà cung cấp dịch vụ lưu trữ của bạn (cũng thử diễn đàn của họ, v.v.). Đối với các công ty như FatCow và iPage, họ yêu cầu bạn chỉ định session_save_path
. Vì vậy, như thế này:
session_save_path('"your home directory path"/cgi-bin/tmp');
session_start();
(thay thế "đường dẫn thư mục chính của bạn" bằng đường dẫn thư mục chính thực tế của bạn. Điều này thường nằm trong bảng điều khiển của bạn (hoặc tương đương), nhưng bạn cũng có thể tạo một test.php
tệp trên thư mục gốc và gõ:
<?php echo $_SERVER['SCRIPT_FILENAME']; ?>
Bit trước 'test.php' là đường dẫn thư mục chính của bạn. Và tất nhiên, hãy chắc chắn rằng thư mục thực sự tồn tại trong thư mục gốc của bạn. (Một số chương trình không tải lên các thư mục trống khi đồng bộ hóa)