PHP If字段没有填充不能正常工作


PHP If Fields Are Not Populated Not Working Correctly

我有一个表单,我要求详细信息,我希望确保他们至少填写他们的汽车注册号,工作时间,邮政编码和至少3位驾驶信息。

然后我从我的web服务返回一个ID给他们,说明他们的ID是什么,这是提交到我的azure数据库。

我肯定不是一个PHP人,由于某种原因,我的代码似乎不能工作,因为我可以发送信息而不填充所有的字段。

有人能指出我哪里出错了吗,我真的是在没有任何PHP知识的情况下搞出来的,我很惊讶我能走到这一步。

我代码:

<?php
if($_POST['pcode_txtbx'] != "" || $_POST['dob_txtbx'] != "" || $_POST['carreg_txtbx'] != "" || $_POST['drvn_txtbx0'] != "" || $_POST['dln_txtbx0'] != "" || $_POST['dlc_code_txtbx0'] != "") : 
// ALWAYS RAISE THE PHP ERROR REPORTING TO THE HIGHEST POSSIBLE LEVEL
ini_set('display_errors', TRUE);
error_reporting(E_ALL);
// SHOW THE REQUEST VARIABLES 
//var_dump($_POST);
// CONSTRUCT THE QUERY STRING
$data = 
[ 'PCode'         => $_POST['pcode_txtbx']
, 'CarReg'      => $_POST['carreg_txtbx']
, 'DateofBirth'      => $_POST['dob_txtbx']
, 'Driver0'            => $_POST['drvn_txtbx0']
, 'DLN0'           => $_POST['dln_txtbx0']
, 'CheckCode0'            => $_POST['dlc_code_txtbx0']
, 'Driver1'            => $_POST['drvn_txtbx1']
, 'DLN1'           => $_POST['dln_txtbx1']
, 'CheckCode1'            => $_POST['dlc_code_txtbx1']
, 'Driver2'            => $_POST['drvn_txtbx2']
, 'DLN2'           => $_POST['dln_txtbx2']
, 'CheckCode2'            => $_POST['dlc_code_txtbx2']
, 'Driver3'            => $_POST['drvn_txtbx3']
, 'DLN3'           => $_POST['dln_txtbx3']
, 'CheckCode3'            => $_POST['dlc_code_txtbx3']
, 'Driver4'            => $_POST['drvn_txtbx4']
, 'DLN4'           => $_POST['dln_txtbx4']
, 'CheckCode4'            => $_POST['dlc_code_txtbx4']
];
// CONSTRUCT THE URL
$url = 'http://mywebservice/myservice.svc?' . http_build_query($data);
?>
<br><center>
&nbsp; Thank you for submitting your Code to us, your submission reference is: 
<br><br>
<b>
<?php 
// TRY THE WEB SERVICE
$htm = my_curl($url);
else :
?>
</b>
<br><br><center>
&nbsp; Please make sure you have the Postcode, Car Registration, Date of Birth and at least the top most Driver Details filled in! 
<br><br>
<a href="<?php echo $_SERVER['HTTP_REFERER'] ?>">Go Back and Try Again</a>
</center>
<?php endif; ?>

基本上,如果在第一个if语句中的任何字段是空白的,它不应该提交给服务器,我在哪里错了?

欢呼

您还使用了OR…所以你的逻辑是.....如果a不是空字符串或者如果b不是空字符串或者c不是空字符串…

你想要的是AND。如果a不是空字符串且b不是…c不是。然后提交到服务器

你有两个问题:

  1. 使用OR代替AND
  2. 你假设所有的变量都是POST的,这并不一定是真的。

我建议你使用以下条件:

如果!空($ _POST [' pcode_txtbx ']),,!空($ _POST [' dob_txtbx ']),,//…其他字段也一样)