Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/257.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
表单的Php验证_Php_Html - Fatal编程技术网

表单的Php验证

表单的Php验证,php,html,Php,Html,目标:尝试确保所有字段都不为空,包括单选按钮集和下拉列表。有人吗 HTML **PHP add_p_c.PHP** <?php if (isset($_POST['submit'])) { if (empty($selected_radio)){ echo "You need to select a prof or course";} else(return;) $selected_radio = $_POST['addType']; if (empty($course_prof

目标:尝试确保所有字段都不为空,包括单选按钮集和下拉列表。有人吗

HTML

**PHP add_p_c.PHP**

 <?php
if (isset($_POST['submit'])) {
if (empty($selected_radio)){ echo "You need to select a prof or course";} else(return;)
    $selected_radio = $_POST['addType'];
if (empty($course_prof_name)){ echo "You need to enter a name";} else(return;)
    $course_prof_name = $_POST['name'];
if (empty($select_dep)){ echo "You select a dept";} else(return;)
    $select_dep = $_POST['deptName'];
$email = $_POST['email'] = "myemail@email.com"; 
if(eregi("^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,3})$", $email)) { 
  return; 
} 
else { 
  echo "<span color='red;'>Invalid email address.</span>"; 
} 
}
?>
您可以使用if-empty$variable{,但请记住,任何计算结果为false的内容,包括数字0,都将被捕获


PHP文档:

只需逐字检查即可:


如果为了安全起见$\u POST['foo']=={

,您应该添加某些东西来提高安全性,因为如果您对数据库执行任何查询,都可能会得到SQL注入。请尝试以下操作:

<?php
if(isset($_POST['submit']){

    $_POST['name']= trim(strip_tags(addslashes($string)));
    $_POST['deptName']= trim(strip_tags(addslashes($string)));
    $_POST['email']= trim(strip_tags(addslashes($string)));

            /* I can't remember if it should be '' or NULL, but some simple testing will let you know which it is*/
    if($_POST['addType'] != ''){
         if($_POST['name'] != ''){
            if($_POST['deptName'] != ''){
                if($_POST['email']) != ''){
                    $selected_radio = $_POST['addType'];
                    $course_prof_name = $_POST['name'];
                    $select_dep = $_POST['deptName'];
                    $email = $_POST['email'] = "myemail@email.com"; 
                    if(eregi("^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,3})$", $email)) { 
                        return; 
                    } 
                    else { 
                        echo "<span color='red;'>Invalid email address.</span>"; 
                    } 
                }
                else{
                    // email wasn't set
                }
            }
            else{
                //deptName wasn't set
            }
        }
        else{
            //name wasn't set
        }
    }
    else{
        // add type wasn't set
    }
}
?>

如果你要有一个特别大的表单,你可能想看看使用数组和for循环。当我构建了30个字段数组时,嵌套一系列If语句会变得非常笨拙,非常快

我建议编写一个快速函数,如

function validatePost($checkValues)
{
    foreach($checkValues as $value)
    {
        $checked = 0;
        foreach($_POST as $key => $value)
        {
            if($key == $checkValues)
            {
                 $checked = 1;
                 if(empty($value))
                 {
                     return false;
                 }
             }
         }

         if($checked == 0)
         {
             return false;
         }
    }
}

记住,这不包括任何正则表达式检查,但是你可以在中间的前缀循环中添加它。

$checkValues = array('addType', 'deptName', 'email', 'name')
$return = validatePost($checkValues);
if($return == false)
{
     echo "<span color='red;'>Please fill out entire form.</span>"
}
else
{
     return;
}

显然,您可以添加功能以使其更详细,但这是一个非常基本的可扩展验证。

您能看到我更新的代码吗。这是正确的实现吗。空的下拉框和单选按钮可以工作吗?代码看起来不像4或5个if语句。我可以像if$\u PO一样将这些全部放在一个调用中吗ST['addType']==| |如果$U POST['name']=={{…等等,当然,如果你愿意的话。我个人认为多行看起来更好,特别是如果它被包装在一个布尔函数中,但是对每一行来说都是它们自己的。你刚刚写的东西在评估时应该没有任何问题。这不是必需的,但是如果提问者想要回答一个没有设置的字段,这将很容易让他这样做。如果e不希望单独处理缺少的字段,他可以在第二个if语句中使用OR | |运算符。
$checkValues = array('addType', 'deptName', 'email', 'name')
$return = validatePost($checkValues);
if($return == false)
{
     echo "<span color='red;'>Please fill out entire form.</span>"
}
else
{
     return;
}