Re: [请益] php if的判断

楼主: cf1064 (蚵仔)   2014-09-23 22:17:24
※ 引述《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
作者: heavenbetula (绿草)   2014-09-23 22:28:00
那这样session_is_registered("userIP")一定没有登记囉?因为userIP还没有值然后因为!的原因所以一定会执行 if里面的动作吗/
作者: MOONRAKER (㊣牛鹤鳗毛人)   2014-09-23 22:32:00
session_is_registered()在5.4已经入土为安了相同功能请大方使用isset($_SESSION['userIP'])
作者: heavenbetula (绿草)   2014-09-23 22:34:00
5.2.6版本可以使用5.4的语法吗?抱歉突然觉得上句这个问题很蠢...我去更新= ='
楼主: cf1064 (蚵仔)   2014-09-24 00:24:00
如果你只有这个页面,第一次进入,IF判断结果应该是TRUE然后就会执行到 session_register('userIP');这时候userip就会被登记,然后当你重新整理时因为userip被登记且还存在,if的判断结果会变falsesession_is_registered('userIP')=true,! true就是false就不会执行if内的东西不过这个的确之后版本拿掉了,改成isset是一样的运作原理另外登记和给值是不一样的事情唷早期版本要用session,你要先登记,才能给值session_register('userIP');把他当成是宣告一个变量$_SESSION['userIP]=$this->getIP; 就是给变量一个值session_is_registered('userIP')就是指这个变量是否存在如果你宣告一个变量,不给值,判断他是否存在时那么结果会是存在,除非你是判断这个变量里有没有值
作者: MOONRAKER (㊣牛鹤鳗毛人)   2014-09-24 09:55:00
试试看便知,记得满早就可以用isset()检查session了
作者: heavenbetula (绿草)   2014-09-24 19:19:00
感谢各位大大热心的解惑!

Links booklink

Contact Us: admin [ a t ] ucptt.com