2015-02-23 43 views
0

我有一個可以正常工作的代碼,但我有幾個關於它的問題。我不明白某件事的邏輯。該代碼是:在會話中存儲時間

<?php 
session_start(); 

if(!isset($_SESSION['t0'])) 
{ 
    $_SESSION['t0']=time(); 
    echo $_SESSION['t0']."if<br />"; //why this is never printed? 
} 
else 
{ 

    if(time()>=($_SESSION['t0']+3)) 
    { 
     echo $_SESSION['t0']."else-ul"; 
     $culoare="rgb(".rand(0,255).",".rand(0,255).",".rand(0,255).")"; 
     $_SESSION['t0']=time(); 
    } 

} 
?> 

的問題是: 1.爲什麼從不打印第一回聲? 2.爲什麼(time()> =($ _ SESSION ['t0'] + 3))並不總是爲真,因爲會話[t0] = time()會每秒更新$ _SESSION ['t0']?

謝謝!

+0

'因爲$ _SESSION ['t0']每秒更新一次'我認爲這裏有一點誤解。你每秒都會重新載入你的頁面嗎? PHP腳本運行一次,發送輸出,如果有的話,然後停止執行。也不會顯示第一個回顯,因爲條件從未如此。 (至少在你調用'session_unset()'和/或'session_destroy()'之前) – 2015-02-23 13:32:13

+0

非常感謝!我現在明白這背後的邏輯是什麼!全部! – Irina 2015-02-23 14:00:54

回答

0
  1. 首先echo語句不會得到執行,但只在第一次發生。一旦你的會話開始值$_SESSION['t0']始終設置,所以if條件將始終返回false。

  2. time()>=($_SESSION['t0']+3)當執行代碼後經過3秒時條件爲真。所以如果你在2秒後重新加載你的頁面,它將不會被執行。