PHPはフォームにnull値があるかどうかをチェックしますが、なぜ機能しないのですか

WBOY
リリース: 2016-06-23 14:15:27
オリジナル
905 人が閲覧しました

PHP

if (intval($_GET['subj']) == 0) {
redirect_to("content.php");
}
if (isset($_POST['submit'])){
$errors =array();
$required_fields = array('menu_name','position','visible');
foreach($required_fields as $fieldname) {
if (!isset($_POST[$fieldname]) || (empty($_POST[$fieldname]) && $_POST[$fieldname] !=0)) {
$エラー[] = $フィールド名;
}
}
$fields_with_lengths = array('menu_name' => 30);
foreach($fields_with_lenhths as $fieldname => $maxlength ) {
if (strlen(trim(mysql_prep($_POST[$fieldname]))) > $maxlength ) {
$errors[] = $fieldname;}
}
if (empty($errors)) {
$id = mysql_prep($_GET['subj']);
$menu_name = mysql_prep($_POST['menu_name']);
$position = mysql_prep($_POST['position']);
$visible = mysql_prep($_POST['visible']);
$query = "UPDATE subjects SET
menu_name = '{$menu_name}',
position = {$position},
visible = {$visible}
WHERE id = {$id}";
$result = mysql_query($query, $connection);
if (mysql_affected_rows() == 1 ) {
$message = "栏目已成功更新";
}else{
$message = "栏目更新失败!";
$message .="
" 。 mysql_error();
}
}else{
$message = "表单中出现" 。 count($errors) 。 「处错误」;
}
}

?>
回复讨论(解决方案)

这样试试:

foreach($required_fields as $fieldname)
{
if(!isset($_POST[$fieldname]) || empty($_POST[ $フィールド名]) || intval($_POST[$fieldname]) {
$errors[] = $fieldname;
}
}

从 if (isset($_POST['submit'])){ 開始的判断形同虚设! && $_POST[$fieldname] !=0)

含まれているのは $_POST[$fieldname] が 0 より大きい数値であり、期待されているかどうか?

非常に感銘深い二位以上の回答。同様に、コードが例の結果とは異なります。これが原因です。
foreach($required_fields as $fieldname) {
if (!isset($_POST[$fieldname]) || (empty($_POST[$fieldname]) && $_POST[$fieldname] !=0)) {

$エラー[] = $フィールド名;

}
}
この関数が意味するかどうか、結果 $_POST[$fieldname] が設定されていない、または $_POST[$fieldname] が空值および 0 である場合、一個の错误数组$errors[] = $fieldname が返されます。
しかし、実際には、その次のコードはすべて実行されます。了非法数据
另外昨天我说错了
empty($_POST[$fieldname]) && $_POST[$fieldname] !=0 表示的である
empty($_POST[$fieldname]) $_POST[$fieldname]空
&& 同時
$_POST[$fieldname] !=0 $_POST[$fieldname] 不等以下 0
那么这个表达式永远不会成立!

修正された問題をコピーしていませんか?

if (!isset($_POST[$fieldname]) || (empty($_POST[$fieldname]) || $_POST[$fieldname] ==0)) {
……

ビデオを見ています, コードをステップごとに書き留めて、間違っている場合はビデオで確認しましたが、それでも違いがわかりません。ご返信ありがとうございます。読みやすいように、上記のコードを再度フォーマットします。

問題は解決しました。上の二人のアドバイスに従ってください。
変更: if (!isset($_POST[$fieldname]) || (empty($_POST[$fieldname]) && $_POST[$fieldname] != 0)) {
$errors[] = $fieldname; if (!isset($_POST[$fieldname]) || empty($_POST[$fieldname]) || $_POST[$fieldname] == 0) {
$errors[] = $fieldname に変更します。 ; }
}
しかし、問題は、ビデオを見ているときに、なぜ元のコードが正常に実行できるのかということです。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート