PHP中的表单验证错误

PHP中的表单验证错误,php,forms,server,Php,Forms,Server,我制作了一个简单的表单,试图对其进行验证,但仍然很少出现错误,比如未定义的索引。代码如下: <?php //echo '<pre>'.print_r($_POST,true).'</pre>'; $display_result = false; $form_data = [ 'name' => [ 'value' => '', 'error' => false, 'err_msg' =

我制作了一个简单的表单,试图对其进行验证,但仍然很少出现错误,比如未定义的索引。代码如下:

<?php

//echo '<pre>'.print_r($_POST,true).'</pre>';

$display_result = false;

$form_data = [

    'name' => [
        'value' => '',
        'error' => false,
        'err_msg' => '',
    ],

    'flavor' => [
        'value' => '',
        'error' => false,
        'err_msg' => '',
    ],

    'cakesize' => [
        'value' => '',
        'error' => false,
        'err_msg' => '',
    ],

    'filling' => [
        'value' => [],
        'error' => false,
        'err_msg' => '',
    ],

    'agree' => [
        'value' => '',
        'error' => false,
        'err_msg' => '',
    ],
];

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

    $name = trim ( $_POST['name'] );
    if (empty($name) ) {

        $form_data['name']['error'] = true;
        $form_data['name']['err_msg'] = "Please enter a name";
    }

    else {

        $form_data['name']['value'] = $name;
        $form_data['name']['error'] = false;
    }


    $flavor = $_POST['flavor'];
    if ( empty($flavor) ) {

        $form_data['flavor']['error'] = true;
        $form_data['flavor']['err_msg'] = "Please select a flavor";
    }

    else {

        $form_data['flavor']['value'] = $flavor;
        $form_data['flavor']['error'] = false;
    }

    $cakesize = $_POST['cakesize'];
    if( empty($cakesize) ){

        $form_data['cakesize']['error'] = true;
        $form_data['cakesize']['err_msg'] = "Please select the size";
    }

    else {
        $form_data['cakesize']['value'] = $cakesize;
        $form_data['cakesize']['error'] = false;
    }

    $filling = $_POST['filling'];
    if( empty($filling) || count($filling) < 2 ) {

        $form_data['filling']['error'] = true;
        $form_data['filling']['err_msg'] = "Please select atleast 2 fllings";
    }

    else {
        $form_data['filling']['value'] = $filling;
        $form_data['filling']['error'] = false;
    }


    $agree = $_POST['agree'];
    if( empty($agree) ) {

        $form_data['agree']['error'] = true;
        $form_data['agree']['err_msg'] = "Tick the box if you agree to the terms and conditions";
    }

    else {
        $form_data['agree']['value'] = $agree;
        $form_data['agree']['error'] = false;
    }
}


?>

<!DOCTYPE html>

<html>
    <head>
        <meta charset="UTF-8">
        <title>Cake ordering Form</title>

        <style>

            .reqd {
                color: red;
            }

        </style>
    </head>
    <body>

        <form action="" method="post" id="cakeForm">

            <fieldset>
                <legend>Personal Details</legend>
                <p>
                    <label for="name">Your Full Name: <span class="reqd"><?php print 
                    $form_data['name']['error'] ? $form_data['name']['err_msg'] : '' ?></span></label><br />
                    <input type="text" name="name" id="name" />
                </p>
            </fieldset>
            <br />
            <fieldset>
                <legend>Make Your cake!</legend>
                <p>
                    <label for="flavor">Select your flavor: <span class="reqd"><?php print 
                    $form_data['flavor']['error'] ? $form_data['flavor']['err_msg'] : '' ?></span></label><br />
                    <select id="flavor" name="flavor">
                        <option value="0">Select Flavor</option>
                        <option value="yellow" >Yellow</option>
                        <option value="white">White</option>
                        <option value="chocolate">Chocolate</option>
                        <option value="combo">Combo</option>
                   </select>
                </p>

                <p>
                    <label>Size of the cake: </label><br />
                    <label><input type="radio" name="cakesize" value="round6"/>Round cake 6" -  serves 8 people <br /></label>
                    <label><input type="radio" name="cakesize" value="round8"/>Round cake 8" - serves 12 people <br /></label>
                    <label><input type="radio" name="cakesize" value="round10"/>Round cake 10" - serves 16 people <br /></label>
                    <label><input type="radio" name="cakesize" value="round12"/>Round cake 12" - serves 30 people <br /></label>
                </p>

                <p>
                    <label>Fillings: </label><br />
                    <label class="checkFill"><input type="checkbox" name="filling" value="lemon"/>Lemon <br /></label>
                    <label class="checkFill"><input type="checkbox" name="filling" value="custard"/>Custard <br /></label>
                    <label class="checkFill"><input type="checkbox" name="filling" value="fudge"/>Fudge <br /></label>
                    <label class="checkFill"><input type="checkbox" name="filling" value="mocha"/>Mocha <br /></label>
                    <label class="checkFill"><input type="checkbox" name="filling" value="raspberry"/>Raspberry <br /></label>
                    <label class="checkFill"><input type="checkbox" name="filling" value="pineapple"/>Pineapple <br /></label>
                </p>
            </fieldset>


            <p>
                <label class="inlinelabel"><input type="checkbox" id="agree" name="agree" /> I agree to the terms and conditions </label>
            </p>

            <p>
                <input type="submit" value="submit" name="submit" />
            </p>


        </form>
    </body>
</html>

蛋糕订购表格
.reqd{
颜色:红色;
}
个人资料

您的全名:


做你的蛋糕! 选择您的口味:
选择口味 黄色的 白色 巧克力 联合体

蛋糕的大小:
圆形蛋糕6”-可供8人食用
圆形蛋糕8”-可供12人食用
圆形蛋糕10”-可供16人食用
圆形蛋糕12“-可供30人食用

填充物:
柠檬
奶油冻
软糖
摩卡咖啡 覆盆子
菠萝

我同意这些条款和条件


请帮助……

建议您在分配前检查
$\u POST
设置。i、 e

<?php

//echo '<pre>'.print_r($_POST,true).'</pre>';

$display_result = false;

$form_data = [

    'name' => [
        'value' => '',
        'error' => false,
        'err_msg' => '',
    ],

    'flavor' => [
        'value' => '',
        'error' => false,
        'err_msg' => '',
    ],

    'cakesize' => [
        'value' => '',
        'error' => false,
        'err_msg' => '',
    ],

    'filling' => [
        'value' => [],
        'error' => false,
        'err_msg' => '',
    ],

    'agree' => [
        'value' => '',
        'error' => false,
        'err_msg' => '',
    ],
];

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

    $name = trim ( $_POST['name'] );
    if (empty($name) ) {

        $form_data['name']['error'] = true;
        $form_data['name']['err_msg'] = "Please enter a name";
    }

    else {

        $form_data['name']['value'] = $name;
        $form_data['name']['error'] = false;
    }


    $flavor = !empty($_POST['flavor']) ? $_POST['flavor'] : "";
    if ( empty($flavor) ) {

        $form_data['flavor']['error'] = true;
        $form_data['flavor']['err_msg'] = "Please select a flavor";
    }

    else {

        $form_data['flavor']['value'] = $flavor;
        $form_data['flavor']['error'] = false;
    }

    $cakesize = !empty($_POST['cakesize']) ? $_POST['cakesize'] : "";
    if( empty($cakesize) ){

        $form_data['cakesize']['error'] = true;
        $form_data['cakesize']['err_msg'] = "Please select the size";
    }

    else {
        $form_data['cakesize']['value'] = $cakesize;
        $form_data['cakesize']['error'] = false;
    }

    $filling = !empty($_POST['filling']) ? $_POST['filling'] : "";
    if( empty($filling) || count($filling) < 2 ) {

        $form_data['filling']['error'] = true;
        $form_data['filling']['err_msg'] = "Please select atleast 2 fllings";
    }

    else {
        $form_data['filling']['value'] = $filling;
        $form_data['filling']['error'] = false;
    }


    $agree = !empty($_POST['agree']) ? $_POST['agree'] : "";
    if( empty($agree) ) {

        $form_data['agree']['error'] = true;
        $form_data['agree']['err_msg'] = "Tick the box if you agree to the terms and conditions";
    }

    else {
        $form_data['agree']['value'] = $agree;
        $form_data['agree']['error'] = false;
    }
}


?>
对于复选框,如果未选中,则可能不会提交,这将导致此情况下未定义。

使用
isset()
empty()
检查postdata是否已设置。使用下面的代码



您需要为
$form_data['name']['error']
和所有数据赋值为false。加载页面时,它不会得到任何值。$form_data['name']['error']的值已为false….$name和$flavor工作正常…REST的唯一问题您可以共享使用
错误通知
?未定义索引:cakesize未定义索引:填充未定义索引:agree
isset()
将允许空值,
!empty()
会更好。是的。。你是对的。我改了@PedroLobitohello@ruchishParikh您修改的我的表单验证脚本,为什么我们必须先检查$flavor、$cakesize和$agree的设置值,然后再设置其值??如果你不介意的话,请给我一个清晰的理解…谢谢你访问这个链接,它会为你提供有关它的所有信息@阿比吉特博卡科蒂
<?php

//echo '<pre>'.print_r($_POST,true).'</pre>';

$display_result = false;

$form_data = [

    'name' => [
        'value' => '',
        'error' => false,
        'err_msg' => '',
    ],

    'flavor' => [
        'value' => '',
        'error' => false,
        'err_msg' => '',
    ],

    'cakesize' => [
        'value' => '',
        'error' => false,
        'err_msg' => '',
    ],

    'filling' => [
        'value' => [],
        'error' => false,
        'err_msg' => '',
    ],

    'agree' => [
        'value' => '',
        'error' => false,
        'err_msg' => '',
    ],
];

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

    $name = trim ( $_POST['name'] );
    if (empty($name) ) {

        $form_data['name']['error'] = true;
        $form_data['name']['err_msg'] = "Please enter a name";
    }

    else {

        $form_data['name']['value'] = $name;
        $form_data['name']['error'] = false;
    }


    $flavor = !empty($_POST['flavor']) ? $_POST['flavor'] : "";
    if ( empty($flavor) ) {

        $form_data['flavor']['error'] = true;
        $form_data['flavor']['err_msg'] = "Please select a flavor";
    }

    else {

        $form_data['flavor']['value'] = $flavor;
        $form_data['flavor']['error'] = false;
    }

    $cakesize = !empty($_POST['cakesize']) ? $_POST['cakesize'] : "";
    if( empty($cakesize) ){

        $form_data['cakesize']['error'] = true;
        $form_data['cakesize']['err_msg'] = "Please select the size";
    }

    else {
        $form_data['cakesize']['value'] = $cakesize;
        $form_data['cakesize']['error'] = false;
    }

    $filling = !empty($_POST['filling']) ? $_POST['filling'] : "";
    if( empty($filling) || count($filling) < 2 ) {

        $form_data['filling']['error'] = true;
        $form_data['filling']['err_msg'] = "Please select atleast 2 fllings";
    }

    else {
        $form_data['filling']['value'] = $filling;
        $form_data['filling']['error'] = false;
    }


    $agree = !empty($_POST['agree']) ? $_POST['agree'] : "";
    if( empty($agree) ) {

        $form_data['agree']['error'] = true;
        $form_data['agree']['err_msg'] = "Tick the box if you agree to the terms and conditions";
    }

    else {
        $form_data['agree']['value'] = $agree;
        $form_data['agree']['error'] = false;
    }
}


?>