私が作成した PHP 関数本体で変数が渡されると、常に前の関数本体の値になるのはなぜですか?
<?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 "登录失败,请检查帐号密码是否输入错误!"; }}?>
問題は、ログインが成功した後、msg() 関数が呼び出されるときに発生します。渡された $functionName 変数は 0 である必要がありますが、MSG() 関数本体でキャプチャされた値は 1 です。ディスカッション (解決策) への返信
function Msg($functionName){ print_r(debug_backtrace()); //观察一下是谁调用的、参数是什么 switch($functionName){ ..... }}
function Msg($functionName){ print_r(debug_backtrace()); //观察一下是谁调用的、参数是什么 switch($functionName){ ..... }}
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 ) ) ) 登录失败,请检查帐号密码是否输入错误!
この投稿は xuzuning によって最終編集されました: 2014-02-08 14:10:49
function Msg($functionName){ print_r(debug_backtrace()); //观察一下是谁调用的、参数是什么 switch($functionName){ ..... }}
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 ) ))
正しいアカウントのパスワードを入力すると、emptyloginnull によって呼び出されます...
var_dump(0 == "emptyloginnull");
0 を渡します。は case "emptyloginnull": ブランチが確立されました
var_dump(0 == "emptyloginnull");
パス 0 を入力することも case "emptyloginnull": ブランチが確立されました
ありがとうございます、マスター、私が書いたものを投稿します、どのような欠陥があるのかを見つけるのを手伝ってもらえますか。詳細を最適化する必要がありますか?

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック









JWTは、JSONに基づくオープン標準であり、主にアイデンティティ認証と情報交換のために、当事者間で情報を安全に送信するために使用されます。 1。JWTは、ヘッダー、ペイロード、署名の3つの部分で構成されています。 2。JWTの実用的な原則には、JWTの生成、JWTの検証、ペイロードの解析という3つのステップが含まれます。 3. PHPでの認証にJWTを使用する場合、JWTを生成および検証でき、ユーザーの役割と許可情報を高度な使用に含めることができます。 4.一般的なエラーには、署名検証障害、トークンの有効期限、およびペイロードが大きくなります。デバッグスキルには、デバッグツールの使用とロギングが含まれます。 5.パフォーマンスの最適化とベストプラクティスには、適切な署名アルゴリズムの使用、有効期間を合理的に設定することが含まれます。

PHP開発における固体原理の適用には、次のものが含まれます。1。単一責任原則(SRP):各クラスは1つの機能のみを担当します。 2。オープンおよびクローズ原理(OCP):変更は、変更ではなく拡張によって達成されます。 3。Lischの代替原則(LSP):サブクラスは、プログラムの精度に影響を与えることなく、基本クラスを置き換えることができます。 4。インターフェイス分離原理(ISP):依存関係や未使用の方法を避けるために、細粒インターフェイスを使用します。 5。依存関係の反転原理(DIP):高レベルのモジュールと低レベルのモジュールは抽象化に依存し、依存関係噴射を通じて実装されます。

システムが再起動した後、UnixSocketの権限を自動的に設定する方法。システムが再起動するたびに、UnixSocketの許可を変更するために次のコマンドを実行する必要があります:sudo ...

phpstormでCLIモードをデバッグする方法は? PHPStormで開発するときは、PHPをコマンドラインインターフェイス(CLI)モードでデバッグする必要がある場合があります。

記事では、PHP 5.3で導入されたPHPの後期静的結合(LSB)について説明し、より柔軟な継承を求める静的メソッドコールのランタイム解像度を可能にします。 LSBの実用的なアプリケーションと潜在的なパフォーマ

PHP開発でPHPのCurlライブラリを使用してJSONデータを送信すると、外部APIと対話する必要があることがよくあります。一般的な方法の1つは、Curlライブラリを使用して投稿を送信することです。

記事では、入力検証、認証、定期的な更新など、脆弱性から保護するためのフレームワークの重要なセキュリティ機能について説明します。
