Heim > Backend-Entwicklung > PHP-Tutorial > 请问我写的这个php函数体传递变量的时候为什么总是上一个函数体的值?

请问我写的这个php函数体传递变量的时候为什么总是上一个函数体的值?

WBOY
Freigeben: 2016-06-23 14:28:43
Original
744 Leute haben es durchsucht

<?phpsession_start();require("inc/pdo.php");//矫正时区差异ini_set("date.timezone","Asia/Chongqing");$time=date("Y-m-d H:i:s");//获得客户端ip$user_ip = $_SERVER["REMOTE_ADDR"];$name=$_POST["name"];$password=$_POST["password"];emptyloginnull($name,$password);//判断传值是否为空function emptyloginnull($name,$password){$functionName='';$functionName="emptyloginnull";if(!empty($name)&&!empty($password)){//都不是空...loginSQL($name,$password);}else{ 	echo Msg($functionName);	}}function loginSQL($name,$password){	$functionName='';$functionName=1;global $dbc;$md5PD=md5($b64=base64_encode($password));$selectUser=$dbc->prepare("select name,password,loginnumber,loginstatus from nasdaouser where name=? and password=?");$selectUser->execute(array($name,$md5PD));$userNum=$selectUser->rowCount();$res=$selectUser->fetch();if($userNum==1){  loginSuecess($name,$res,$md5PD);		}else {			Msg($functionName);	}}//登录成功function loginSuecess($name,$res,$md5PD){$functionName='';$functionName=0;global $dbc,$user_ip,$time;$loginlog=$dbc->prepare("insert into loginlog (name,password,ip,logintime,status,loginstatus) values(?,?,?,?,?,?)");$loginlog->execute(array($name,$md5PD,$user_ip,$time,'0','0'));$userLogin=$dbc->prepare("update nasdaouser set endlogintime=? where name=?");$userLogin->execute(array($time,$name));Msg($functionName);}function Msg($functionName){	echo $functionName; switch($functionName){	 case "emptyloginnull":	echo "不要调戏我好吗?系统也会数数的,你根本没有输入帐号与密码!!!";	 break;     case 0:	echo "登录成功!";	 break;	 case 1:	echo "登录失败,请检查帐号密码是否输入错误!";	}}?>
Nach dem Login kopieren



问题出自function loginSuecess,登录成功后调用msg()函数 传递的$functionName变量应当是0,但是MSG()函数体内捕捉到的却是1


回复讨论(解决方案)

function Msg($functionName){  print_r(debug_backtrace()); //观察一下是谁调用的、参数是什么  switch($functionName){    .....  }}
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

function Msg($functionName){  print_r(debug_backtrace()); //观察一下是谁调用的、参数是什么  switch($functionName){    .....  }}
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

Array ( [0] => Array ( [file] => C:\wamp\www\mjshu\login.php [line] => 40 [function] => Msg [args] => Array ( [0] => 1 ) ) [1] => Array ( [file] => C:\wamp\www\mjshu\login.php [line] => 19 [function] => loginSQL [args] => Array ( [0] => smj227227 [1] => Password ) ) [2] => Array ( [file] => C:\wamp\www\mjshu\login.php [line] => 11 [function] => emptyloginnull [args] => Array ( [0] => smj227227 [1] => Password ) ) ) 登录失败,请检查帐号密码是否输入错误!
Nach dem Login kopieren

本帖最后由 xuzuning 于 2014-02-08 14:10:49 编辑


function Msg($functionName){  print_r(debug_backtrace()); //观察一下是谁调用的、参数是什么  switch($functionName){    .....  }}
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

Array ( [0] => Array (   [file] => C:\wamp\www\mjshu\login.php   [line] => 52   [function] => Msg   [args] => Array (     [0] => 0   ) ) [1] => Array (   [file] => C:\wamp\www\mjshu\login.php   [line] => 35   [function] => loginSuecess   [args] => Array (     [0] => smj227227     [1] => Array (       [name] => smj227227       [0] => smj227227       [password] => b9f94ff142c0d6da23543e4e37e04ac9       [1] => b9f94ff142c0d6da23543e4e37e04ac9       [loginnumber] =>       [2] =>        [loginstatus] => 0       [3] => 0     )     [2] => b9f94ff142c0d6da23543e4e37e04ac9   ) ) [2] => Array (   [file] => C:\wamp\www\mjshu\login.php   [line] => 19   [function] => loginSQL   [args] => Array (     [0] => smj227227     [1] => 227227   ) ) [3] => Array (   [file] => C:\wamp\www\mjshu\login.php   [line] => 11   [function] => emptyloginnull   [args] => Array (     [0] => smj227227     [1] => 227227   ) ))
Nach dem Login kopieren
不要调戏我好吗?系统也会数数的,你根本没有输入帐号与密码!!!


现在输入正确的帐号密码,也被emptyloginnull调用了...

var_dump(0 == "emptyloginnull");
Nach dem Login kopieren
Nach dem Login kopieren
bool(true)

传入 0 也是 case "emptyloginnull": 分支成立

var_dump(0 == "emptyloginnull");
Nach dem Login kopieren
Nach dem Login kopieren
bool(true)

传入 0 也是 case "emptyloginnull": 分支成立
谢谢你,大神,我再把我写好的贴上来,您帮我看看还有哪些不足和细节需要优化的可以吗?

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage