0

我正在尝试在 PHP 中验证表单。我有指示不要更改表单本身(例如字段的名称),其中有一个下拉列表: <option value=""></option>

我试图用这个来验证:

if (!isset($_POST['cboproduit'])){
$message.= "Vous devez sélectionner un téléphone <br />";} 

但由于有一个没有任何内容的值,如果我提交带有空值的表单,它只会保存一个空值。

我怎样才能以简单的方式做到这一点?

4

4 回答 4

2

除了检查变量是否设置,还需要检查它是否为空:

if (!isset($_POST['cboproduit']) || $_POST['cboproduit'] === '') {
    $message .= "Vous devez sélectionner un téléphone <br />";
}
于 2013-08-18T01:17:16.050 回答
0

您可以使用empty而不是issetasempty还检查变量是否存在:

 if (empty($_POST['cboproduit'])){
    $message.= "Vous devez sélectionner un téléphone <br />";
 }
于 2013-08-18T01:17:33.570 回答
0

Different functions check different things about a variable. According to the documentation:

  • isset(): Determine if a variable is set and is not NULL.
  • empty(): A variable is considered empty if it does not exist or if its value equals FALSE.
  • array_key_exists(): returns TRUE if the given key is set in the array

So in your case, if (empty($_POST['cboproduit'])) seems the best way to proceed. It will detect if the value was somehow not transmitted (someone could edit the form in their browser before submitting it) or the empty option was selected.

(Note that this means that there is no way to determine the difference between a variable that does not exist and a variable that is null.)

于 2013-08-18T01:33:02.983 回答
0

只是一个想法,但为空可能对您不起作用,因为<option value=""></option>第一个元素的 value 属性可能设置为 0(第二个为 1,依此类推),然后这意味着您永远无法删除第 0 个元素作为空检查0 也为空

if (empty($_POST['cboproduit'])){
    $message.= "Vous devez sélectionner un téléphone <br />";
 }
于 2013-10-03T21:13:01.203 回答