PHP empty()错误消息

PHP empty()错误消息,php,Php,我刚刚开始学习,并整理了以下表格。我的困惑是,当我使用empty来验证用户是否选择或输入了任何信息时,代码会生成下面的错误 我注意到如果我有以下代码行 if(empty($gender)) { $errormessage[2] = "Please select your gender"; } 作为 及 作为 我没有看到错误消息。我认为生成错误消息是因为性别和媒体表单元素分别是单选按钮和复选框的code$\u POST行。但是,如果我想初始化顶部的所有变量,那么最好的方

我刚刚开始学习,并整理了以下表格。我的困惑是,当我使用empty来验证用户是否选择或输入了任何信息时,代码会生成下面的错误

我注意到如果我有以下代码行

if(empty($gender)) {
        $errormessage[2] = "Please select your gender";
    } 
作为

作为

我没有看到错误消息。我认为生成错误消息是因为性别和媒体表单元素分别是单选按钮和复选框的code$\u POST行。但是,如果我想初始化顶部的所有变量,那么最好的方法是什么

/* <?php

if(isset($_POST["submit"])) {

    $fname = $_POST["fname"];
    $lname = $_POST["lname"];
    $gender = $_POST["gender"];
    $age = $_POST["age"];
    $address = $_POST["address"];
    $media = $_POST['media'];

    $errormessage =  array();

    if(empty($fname)) {
        $errormessage[0] = "Please enter your first name";
    }

    if(empty($lname)) {
        $errormessage[1] = "Please enter your last name";
    }

    if(empty($gender)) {
        $errormessage[2] = "Please select your gender";
    }

    if(empty($age)) {
        $errormessage[3] = "Please select your age";
    }

    if(empty($address)) {
        $errormessage[4] = "Please enter your address";
    }

    if(empty($media)) {
        $errormessage = "Please select the type of media";

    }

}
?>
<html>
<head>
    <title>Sample Registration</title>
</head>
<body>
    <h2>Sample registration</h4>
        <form name="registration" method="post" action="registration.php">
            <div>
                First Name: <br />
                <input type="text" name="fname" value="">
            </div>

            <div>
                Last Name: <br />
                <input type="text" name="lname" value="">
            </div>

            <div>
                Gender: <br />
                male<input type="radio" name="gender" value="male">
                female<input type="radio" name="gender" value="female">
            </div>

            <div>
                Age: <br />
                <select name="age">
                    <option value="">Please select your age</option>
                    <option value="18-25">18-25</option>
                    <option value="26-33">26-33</option>
                </select>
            </div>

            <div>
                Address: <br />
                <textarea name="address" cols="10" rows="10"></textarea>
            </div>

            <div>
                Sign-me up: <br />
                <input type="checkbox" name="media['newsletter']" value="newsletter"> newsletter
                <input type="checkbox" name="media['specials']" value="specials"> specials
                <input type="checkbox" name="media['events']" value="events"> events

            <div>
                <input type="submit" name="submit" value="submit">
            </div>
        </form>
</body>
</html>

*/

在访问HTTP POST请求之前,您需要检查这些
$\u POST['gender']
$\u POST['media']
变量是否已在HTTP POST请求中实际设置;初始化每个
$\u POST
变量的更好的解决方案可能是这样的:

$fname=isset($\u POST['fname'])$_POST['fname']:''

上述三元赋值相当于为您感兴趣的每个
$\u POST
变量运行以下逻辑表达式:

if( isset( $_POST['fname'] ) ) {
    $fname = $_POST['fname'];
} else {
    $fname = '';
}
如果您实现了这两个选项中的任何一个,那么如果在
$gender
上运行
empty()
,您将不会收到通知;此外,如果未设置
$\u POST['gender']
,则
empty()
仍将按照您期望的方式运行。这增加了一点冗长,但要重写您的示例,您可以尝试:

if( isset( $_POST["submit"] ) ) {

    $fname = isset( $_POST['fname'] ) ? $_POST["fname"] : '';
    $lname = isset( $_POST['lname'] ) ? $_POST["lname"] : '';
    $gender = isset( $_POST['gender'] ) ? $_POST["gender"] : '';
    $age = isset( $_POST['age'] ) ? $_POST["age"] : '';
    $address = isset( $_POST['address'] ) ? $_POST["address"] : '';
    $media = isset( $_POST['media'] ) ? $_POST['media'] : '';

    $errormessage =  array();
    if( empty( $fname ) )
        $errormessage[] = "Please enter your first name";
    if( empty( $lname ) )
        $errormessage[] = "Please enter your last name";
    if( empty( $gender ) )
        $errormessage[] = "Please select your gender";
    if( empty( $age ) )
        $errormessage[] = "Please select your age";
    if( empty( $address ) )
        $errormessage[] = "Please enter your address";
    if( empty( $media ) )
        $errormessage[] = "Please select the type of media";
}
当然,如果要在SQL上下文中使用数据,您可能希望清理数据,但这至少可以帮助您避免所面临的错误


如果你有很多这些变量——或者经常重复这个任务——你可以考虑把它变成一个函数! 在访问HTTP POST请求之前,您需要检查这些

$\u POST['gender']
$\u POST['media']
变量是否已在HTTP POST请求中实际设置;初始化每个
$\u POST
变量的更好的解决方案可能是这样的:

$fname=isset($\u POST['fname'])$_POST['fname']:''

上述三元赋值相当于为您感兴趣的每个
$\u POST
变量运行以下逻辑表达式:

if( isset( $_POST['fname'] ) ) {
    $fname = $_POST['fname'];
} else {
    $fname = '';
}
如果您实现了这两个选项中的任何一个,那么如果在
$gender
上运行
empty()
,您将不会收到通知;此外,如果未设置
$\u POST['gender']
,则
empty()
仍将按照您期望的方式运行。这增加了一点冗长,但要重写您的示例,您可以尝试:

if( isset( $_POST["submit"] ) ) {

    $fname = isset( $_POST['fname'] ) ? $_POST["fname"] : '';
    $lname = isset( $_POST['lname'] ) ? $_POST["lname"] : '';
    $gender = isset( $_POST['gender'] ) ? $_POST["gender"] : '';
    $age = isset( $_POST['age'] ) ? $_POST["age"] : '';
    $address = isset( $_POST['address'] ) ? $_POST["address"] : '';
    $media = isset( $_POST['media'] ) ? $_POST['media'] : '';

    $errormessage =  array();
    if( empty( $fname ) )
        $errormessage[] = "Please enter your first name";
    if( empty( $lname ) )
        $errormessage[] = "Please enter your last name";
    if( empty( $gender ) )
        $errormessage[] = "Please select your gender";
    if( empty( $age ) )
        $errormessage[] = "Please select your age";
    if( empty( $address ) )
        $errormessage[] = "Please enter your address";
    if( empty( $media ) )
        $errormessage[] = "Please select the type of media";
}
当然,如果要在SQL上下文中使用数据,您可能希望清理数据,但这至少可以帮助您避免所面临的错误

如果你有很多这些变量——或者经常重复这个任务——你可以考虑把它变成一个函数! 尝试使用

!isset()
而不是
empty()

作为旁注,如果
$\u POST
值不存在,则分配变量的方式将创建
警告
通知。如果您想删除这些通知,请使用@Ryan的解决方案。

尝试使用
!isset()
而不是
empty()


作为旁注,如果
$\u POST
值不存在,则分配变量的方式将创建
警告
通知。如果要删除这些通知,请使用@Ryan的解决方案。

您希望错误消息显示在哪里?我看不到您试图在何处显示该消息。您希望错误消息显示在何处?我看不到您试图在何处显示此消息。谢谢Ryan。考虑到我是PHP新手,我还需要学习函数,尤其是自定义函数。此外,我不太明白你的例子,因为我不知道是什么?做得和做得一样好;在$fname=isset($_POST['fname'])的代码示例中$_帖子[“fname”]:'';。你介意详细说明一下它是什么,它的用途,以及我什么时候使用它吗?当然!在PHP中有:
(条件?“true!”:“false!”)
对于括在括号中的整个表达式,如果
条件
的计算结果为true,则整个表达式的计算结果为
“true!”
;否则,整个表达式的计算结果为
“false!”
——如果您想这样想,它实际上只是if(){}else{}的快捷方式。我还是不明白。上面代码中的条件是什么?我们测试的是对还是错?在这段代码中:
$b=true$val=(b美元?“是”:“否”)
$val==“yes”
,但在此代码中:
$b=false$val=(b美元?“是”:“否”)
$val==“否”
。这更有意义吗?是的,它在一个非常高的层次上有意义。让我把它分解一下,如果我错了就纠正我。我将使用我正在编写的代码$fname=($_POST[“gender”]=true?“yes”:“no”)$fname==“是”。对吗?我仍然不明白这与你给出的例子有什么相似之处。抱歉,如果我没有那么快跟上。谢谢Ryan。考虑到我是PHP新手,我还需要学习函数,尤其是自定义函数。此外,我不太明白你的例子,因为我不知道是什么?做得和做得一样好;在$fname=isset($_POST['fname'])的代码示例中$_帖子[“fname”]:'';。你介意详细说明一下它是什么,它的用途,以及我什么时候使用它吗?当然!在PHP中有:
(条件?“true!”:“false!”)
对于括在括号中的整个表达式,如果
条件
的计算结果为true,则整个表达式的计算结果为
“true!”
;否则,整个表达式的计算结果为
“false!”
——如果您想这样想,它实际上只是if(){}else{}的快捷方式。我还是不明白。上面代码中的条件是什么?我们测试的是对还是错?在这段代码中:
$b=t
if( isset( $_POST['fname'] ) ) {
    $fname = $_POST['fname'];
} else {
    $fname = '';
}
if( isset( $_POST["submit"] ) ) {

    $fname = isset( $_POST['fname'] ) ? $_POST["fname"] : '';
    $lname = isset( $_POST['lname'] ) ? $_POST["lname"] : '';
    $gender = isset( $_POST['gender'] ) ? $_POST["gender"] : '';
    $age = isset( $_POST['age'] ) ? $_POST["age"] : '';
    $address = isset( $_POST['address'] ) ? $_POST["address"] : '';
    $media = isset( $_POST['media'] ) ? $_POST['media'] : '';

    $errormessage =  array();
    if( empty( $fname ) )
        $errormessage[] = "Please enter your first name";
    if( empty( $lname ) )
        $errormessage[] = "Please enter your last name";
    if( empty( $gender ) )
        $errormessage[] = "Please select your gender";
    if( empty( $age ) )
        $errormessage[] = "Please select your age";
    if( empty( $address ) )
        $errormessage[] = "Please enter your address";
    if( empty( $media ) )
        $errormessage[] = "Please select the type of media";
}