Khá đơn giản:biến Session dường như không được cứu đang
<?
session_start();
$_SESSION['t'.time()] = "ok";
echo "<pre>".print_r($_SESSION, 1)."</pre>";
?>
chương trình, như mong đợi, một cái gì đó giống như
Array
(
[t1330966834] => ok
[t1330966835] => ok
[t1330966836] => ok
)
sau 3page tải lại.
Hãy thay đổi một vài biểu tượng:
$_SESSION[time()] = "ok";
(bây giờ không 't') và tôi hy vọng sau vài load lại cái gì đó như
Array
(
[t1330966834] => ok
[t1330966835] => ok
[t1330966836] => ok
[1330967020] => ok
[1330967021] => ok
[1330967022] => ok
[1330967023] => ok
)
Nhưng trên thực tế kết quả là hoàn toàn khác nhau:
Array
(
[t1330966834] => ok
[t1330966835] => ok
[t1330966836] => ok
[1330967020] => ok
)
Chúng tôi có 3 ô mảng trước đó quảng cáo một và chỉ một ô 'thời gian' - bất kể có bao nhiêu ti mes bạn tải lại trang. Thời gian là chính xác, nó khác nhau mỗi giây nhưng chỉ có một ô không có 't'! Ngoài ra tôi đã cố gắng
$t =time();
$_SESSION[$t] = "ok";
và thậm chí
$t =intval(time());
$_SESSION[$t] = "ok";
Nhưng nó vẫn chỉ có một tế bào theo thời gian.
Thử nghiệm tại php 5.2.13 và 5.3.10 tại 2 máy chủ khác nhau. Tôi đang làm gì sai?
Hãy thử gán cả hai' $ _SESSION ['t'.time()] =' ok '; $ _SESSION [time()] =' ok'' và xem điều gì xảy ra. 't' phiên bản tiếp tục hiển thị và phiên bản baretime không, sau đó một cái gì đó kỳ lạ đang xảy ra –
Tôi không biết đủ về những kỳ quặc của biến phiên PHP để trả lời câu hỏi này, nhưng khi bạn đưa ra' t' Nó có thể là một chỉ số dạng số thay vì chỉ mục chuỗi Có lẽ PHP chỉ lưu trữ một chỉ mục số trong các biến phiên hoặc một cái gì đó không chắc chắn, nhưng dường như điều này có liên quan đến nó. – Travesty3