ホームページ >バックエンド開発 >PHPチュートリアル >PHP での null 値のフィルタリングに関連する問題

PHP での null 値のフィルタリングに関連する問題

WBOY
WBOYオリジナル
2016-06-13 12:10:59920ブラウズ

PHP の null 値フィルタリングの問題
このいまいましい POST は IF 判定を無視し、null 値をデータベースに直接書き込んでいます

PHP 受信側:

<br />if($_GET['do'] =='add'){<br />if(!isset($_POST['porgnum']) && empty($_POST['porgnum'])){<br />echo '未填写登录名!';<br />}else if(!isset($_POST['porgname']) && empty($_POST['porgname'])){<br />echo '未填写昵称!';<br />}else if(!isset($_POST['ppasswd']) && empty($_POST['ppasswd'])){<br />echo '未填写密码!';<br />}else{<br />$orgid =$_POST['porgnum'];<br />$orgname =$_POST['porgname'];<br />$passwd =$_POST['ppasswd'];<br />$author =$_POST['pauthor'];<br />$con = mysql_connect(DB_HOST,DB_USER,DB_PASSWD);<br />mysql_select_db(DB_NAME,$con);<br />mysql_query("SET NAMES 'utf8'");<br />mysql_query("SET CHARACTER_SET_CLIENT=utf8");<br />mysql_query("SET CHARACTER_SET_RESULTS=utf8");<br />if(!mysql_query("INSERT INTO `".DB_PRE."menber` (orgnum, orgname, passwd, power) VALUES ('$orgid', '$orgname', '$passwd', '$author')")){<br />die('错误!代码:' .mysql_error());<br />}else{<br />echo '注册成功!';<br />};<br />mysql_close($con);<br />};<br />


PHP フォーム:

<br /><tr><td>登录名</td><td><input type="text" id="orgnum" /></td></tr><br /><tr><td>名称</td><td><input type="text" id="orgname" /></td></tr><br /><tr><td>新密码</td><td><input type="text" id="passwd" /></td></tr><br /><tr><td>12</td><td><select id="author"><option value="v">123</option></select></td></tr><br /><tr><td colspan="2"><input type="button" value="提交" onclick="new_org();" /></td></tr><br /><tr><td colspan="2"><div class="admin_display"></div></td></tr><br />


JQUERY:

<br />function new_org(){<br />var orgnum = j('#orgnum').val();<br />var orgname = j('#orgname').val();<br />var passwd = j('#passwd').val();<br />var author = j('#author').val();<br />j.ajax({<br />type:"POST",<br />url:"action.php?do=add",<br />data:{<br />porgnum:orgnum,<br />porgname:orgname,<br />ppasswd:passwd,<br />pauthor:author<br />},<br />dataType:"html",<br />cache:false,<br />async:false,<br />error:function(){<br />alert("发送失败!");<br />},<br />success:function(msg){<br />j('.admin_display').html(msg);<br />alert(orgnum);<br />}<br />});<br />};<br />


をデータベースに登録して書き込むことができます通常ですが、フロントエンドの iput が直接入力して送信しない場合、受信側はフロントエンドの POST からの「null 値」を無視します。 とりあえず「null 値」と呼びます。とにかく、受信側はこの null 値を無視し、データベースに直接書き込まれました。助けてください...
----- -解決策のアイデア------------------ ----
これはとにかくelseコード内で実行されます。最後のelseで値を出力できます。デバッグのため、問題はここにあるはずです
-----解決策----------------------
if(!isset($_POST['porgnum']) && empty($_POST['porgnum'])){
これは間違っています
if(isset($ _POST['porgnum']) && empty($_POST['porgnum'])){
$_POST['porgnum'] は存在し、空です

あなたが書いたことによると、$_POST[ 'porgnum'] は存在しません。else ブランチに移動するだけではないでしょうか?
その他の同様のもの
-----解決策のアイデア----------------------
あなたはそうしませんisset の意味を理解していません。&& を or (
------解決策-----------------------)

-----解決策のアイデア----------------------これは完全にあなたは不注意だったか、isset

を理解していませんでした------解決策のアイデア---------------------- isset は変数が定義されているかどうかを確認します。
定義されていない場合は、もちろん空であると見なすことができます
しかし、値が空の変数も変数です
したがって、逆の命題は真ではありません

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
前の記事:PHP CLIのヒント次の記事:PHP CLIのヒント