※ 引述《cf1064 (蚵仔)》之銘言:
: ※ 引述《heavenbetula (綠草)》之銘言:
: : 小弟初學php,看書上範例不是很懂,想麻煩各位大大解惑
: : 以下是書中擷取的一小段程式:
: : session_start();
: : if(!session_is_registered("userIP")){
: : session_register("userIP");
: : $_SESSION["userIP]=$this->getIP;
: : $sql="update dailyistics set visitNum=visitNum+1 where visitDate='" . $setDate .
: : "'";
: : mysql_query($sql);
: : }else{
: : $_SESSION["userIP"]=$this->getIP;
: : }
: : 其中,getIP是一個function的名稱(有傳回值)
: : 我的問題是,為什麼在做if判斷的時候,userIP都還沒有給值,卻可以做判斷呢?
: : 因為不是在if中的$_SESSION["userIP] = $this->getIP,userIP才有值,那怎麼沒值可以
: : 先判斷?
由於程式執行後不是想要的結果,所以想再請教一下各位大大是否我哪裡觀念錯誤
以下是我的想法:
我將原文code中if(!session_is_registered("userIP"))
改成if(!isset($_SESSION['userIP']))
第一次執行這個頁面的時候,由於$_SESSION['userIP']還未定義
所以isset()的結果為false,然後!後變成true→執行if內的動作$_SESSION['userIP']
賦與一個ip的值
第二次之後執行這個頁面的時候,由於session的關係,$_SESSION['userIP']
的資料還保留著,所以isset()的結果應該為true,然後!後變成false→執行else內的動作
但是問題來了...第二次執行,isset()的結果卻一直是flase
請問我哪裡理解錯誤嗎?為什麼isset()的結果會這樣?