0

我有一个带有多个选择字段的 html 表单。我正在尝试使用 php 验证它。但我无法用 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";
    }
}
?>  

html代码:

<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
4

2 回答 2

0

您正在尝试$number使用empty($number). 它不会像你预期的那样工作

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

于 2013-09-14T05:08:14.050 回答
0

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

于 2013-09-14T05:31:53.633 回答