PHP 板


LINE

看板 PHP  RSS
※ 引述《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才有值,那怎麼沒值可以 : 先判斷? http://www.php5.idv.tw/modules.php?mod=books&act=show&shid=651 session_is_registered --- 判斷變數是否已經登記 語法 : bool session_is_registered (string name) 說明 : 如果變數name在目前的session中已經登記過了,則session_is_registered( )傳回true。 所以,如果一開始就沒有,你的session_is_registered("userIP")就會回傳false 然後前面加一個!就是false變true,所以就執行if裡面的東東(登記後給值),他不是指有沒有給值而是 指是否登記 --



※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 114.39.18.11
※ 文章網址: http://webptt.com/m.aspx?n=bbs/PHP/M.1411481846.A.8DC.html
1F:推 heavenbetula: 那這樣session_is_registered("userIP")一定 09/23 22:28
2F:→ heavenbetula: 沒有登記囉?因為userIP還沒有值 09/23 22:28
3F:→ heavenbetula: 然後因為!的原因所以一定會執行 if裡面的動作嗎/ 09/23 22:29
4F:→ MOONRAKER: session_is_registered()在5.4已經入土為安了 09/23 22:32
5F:→ MOONRAKER: 相同功能請大方使用isset($_SESSION['userIP']) 09/23 22:33
6F:→ heavenbetula: 5.2.6版本可以使用5.4的語法嗎? 09/23 22:34
7F:推 heavenbetula: 抱歉突然覺得上句這個問題很蠢...我去更新= =' 09/23 22:36
8F:→ cf1064: 如果你只有這個頁面,第一次進入,IF判斷結果應該是TRUE 09/24 00:24
9F:→ cf1064: 然後就會執行到 session_register('userIP'); 09/24 00:25
10F:→ cf1064: 這時候userip就會被登記,然後當你重新整理時 09/24 00:26
11F:→ cf1064: 因為userip被登記且還存在,if的判斷結果會變false 09/24 00:27
12F:→ cf1064: session_is_registered('userIP')=true,! true就是false 09/24 00:28
13F:→ cf1064: 就不會執行if內的東西 09/24 00:29
14F:→ cf1064: 不過這個的確之後版本拿掉了,改成isset是一樣的運作原理 09/24 00:30
15F:→ cf1064: 另外登記和給值是不一樣的事情唷 09/24 00:42
16F:→ cf1064: 早期版本要用session,你要先登記,才能給值 09/24 00:43
17F:→ cf1064: session_register('userIP');把他當成是宣告一個變數 09/24 00:45
18F:→ cf1064: $_SESSION['userIP]=$this->getIP; 就是給變數一個值 09/24 00:46
19F:→ cf1064: session_is_registered('userIP')就是指這個變數是否存在 09/24 00:47
20F:→ cf1064: 如果你宣告一個變數,不給值,判斷他是否存在時 09/24 00:47
21F:→ cf1064: 那麼結果會是存在,除非你是判斷這個變數裡有沒有值 09/24 00:48
22F:→ MOONRAKER: 試試看便知,記得滿早就可以用isset()檢查session了 09/24 09:55
23F:推 heavenbetula: 感謝各位大大熱心的解惑! 09/24 19:19
24F:推 heavenbetula: 請問為什麼我改為isset($_SESSION['userIP'])後 09/25 20:30
25F:→ heavenbetula: 永遠都不會去執行else...這樣結果不對啊> <" 09/25 20:30
26F:→ heavenbetula: 也就是變if(!isset($_SESSION['userIP'])) 09/25 20:32
27F:→ heavenbetula: 然後session_register("userIP");這行刪除 09/25 20:33







like.gif 您可能會有興趣的文章
icon.png[問題/行為] 貓晚上進房間會不會有憋尿問題
icon.pngRe: [閒聊] 選了錯誤的女孩成為魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一張
icon.png[心得] EMS高領長版毛衣.墨小樓MC1002
icon.png[分享] 丹龍隔熱紙GE55+33+22
icon.png[問題] 清洗洗衣機
icon.png[尋物] 窗台下的空間
icon.png[閒聊] 双極の女神1 木魔爵
icon.png[售車] 新竹 1997 march 1297cc 白色 四門
icon.png[討論] 能從照片感受到攝影者心情嗎
icon.png[狂賀] 賀賀賀賀 賀!島村卯月!總選舉NO.1
icon.png[難過] 羨慕白皮膚的女生
icon.png閱讀文章
icon.png[黑特]
icon.png[問題] SBK S1安裝於安全帽位置
icon.png[分享] 舊woo100絕版開箱!!
icon.pngRe: [無言] 關於小包衛生紙
icon.png[開箱] E5-2683V3 RX480Strix 快睿C1 簡單測試
icon.png[心得] 蒼の海賊龍 地獄 執行者16PT
icon.png[售車] 1999年Virage iO 1.8EXi
icon.png[心得] 挑戰33 LV10 獅子座pt solo
icon.png[閒聊] 手把手教你不被桶之新手主購教學
icon.png[分享] Civic Type R 量產版官方照無預警流出
icon.png[售車] Golf 4 2.0 銀色 自排
icon.png[出售] Graco提籃汽座(有底座)2000元誠可議
icon.png[問題] 請問補牙材質掉了還能再補嗎?(台中半年內
icon.png[問題] 44th 單曲 生寫竟然都給重複的啊啊!
icon.png[心得] 華南紅卡/icash 核卡
icon.png[問題] 拔牙矯正這樣正常嗎
icon.png[贈送] 老莫高業 初業 102年版
icon.png[情報] 三大行動支付 本季掀戰火
icon.png[寶寶] 博客來Amos水蠟筆5/1特價五折
icon.pngRe: [心得] 新鮮人一些面試分享
icon.png[心得] 蒼の海賊龍 地獄 麒麟25PT
icon.pngRe: [閒聊] (君の名は。雷慎入) 君名二創漫畫翻譯
icon.pngRe: [閒聊] OGN中場影片:失蹤人口局 (英文字幕)
icon.png[問題] 台灣大哥大4G訊號差
icon.png[出售] [全國]全新千尋侘草LED燈, 水草

請輸入看板名稱,例如:Soft_Job站內搜尋

TOP