※ 引述《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()的结果会这样?