PHP 的 HTML 多选字段问题


Html multiple select field issue with php

我有一个带有多个选择字段的html表单。我正在尝试用 php 验证它。但是我无法使用 PHP 验证此多选字段。它向我展示了没有任何验证的成功信息。

请告诉我我的代码有什么问题。谢谢。

菲律宾代码:

<?php
if(isset($_POST['Submit']) && $_POST['Submit'] == "Send SMS")
{
    if(isset($_POST['number']))
        $number = $_POST['number'];
    $msg = inputvalid($_POST['txt']);
    $err = array();
    if(isset($msg) && isset($number)) 
    {
        if(empty($msg) && empty($number))
            $err[] = "All field require";
        else
        {
            if(empty($msg)) 
                $err[] = "Your message require";
            if(empty($number))  
                $err[] = "Select your mobile number";
        }
    }   
    if(!empty($err))
    {
        echo "<div class='error'>"; 
        foreach($err as $er)
        {
            echo "<font color=red>$er.</font><br/>";                
        }
        echo "</div>";
        echo "<br/>";
    }
    else
    {
        echo "good";
    }
}
?>  

网页代码:

<form name="frm" method="post" action="<?php echo htmlspecialchars($_SERVER['PHP_SELF']) ?>">  
    <table width="800" border="0" cellspacing="10" cellpadding="0">
        <tr>
            <td valign="top">Number</td>
            <td>
                <select multiple="multiple" size="10" name="number[]">  
                    <option value="">--Select Member--</option>
                    <?php
                    $class = mysql_query("SELECT * FROM e_members");
                    while($res =  mysql_fetch_array($class))
                    {
                        $phone = $res['phone'];
                    ?>
                    <option value="<?php echo $phone; ?>"> <?php echo $phone; ?></option>
                    <?php
                    }
                    ?>
                </select>
            </td>
        </tr> 
        <tr>
            <td valign="top">Write message</td>
            <td>
                <textarea class="textarea" placeholder="Your message" name="txt" onkeyup="counter(this);">
                    <?php if(isset($_POST['txt'])) echo $_POST['txt']; ?>
                </textarea>
                <br/>
                <input type="" name="lbl" style="border:none;">
                <br/>
            </td>
        </tr>
        <tr>
            <td>&nbsp;</td>
            <td>
                <input type="submit" name="Submit2" value="Save SMS" class="view"/>
                <input type="submit" name="Submit" value="Send SMS" class="submit"/>
            </td>
        </tr>
    </table>
</form>

更新:

选择多个/单个值后var_dump显示:

array(1) { [0]=> string(13) "8801814758545" } 

如果没有选择,它将显示:

NULL

您正在尝试使用 empty($number) 验证数组$number。它不会按您的预期工作

您可以将其验证为if (is_array($number) && count($number) > 0)

问题是您对空值的检查在里面,用于检查if(isset($msg) && isset($number))并且一旦您发布表单,就会设置这些变量。由于您已经检查了帖子是否已设置,因此删除此外部 if 语句并仅检查空值,它应该可以工作。