Самый простой способ остановить отправку электронной почты, если поле не заполнено - PullRequest
0 голосов
/ 23 мая 2011

Я пытаюсь продублировать мою проверку на стороне клиента на сервере (PHP).Какой самый простой способ убедиться, что поле заполнено?Я делал это раньше, но у меня есть некоторые проблемы, есть ли лучший способ?

<?php
if(empty($_POST['Contact0FirstName']) || empty($_POST['Contact0Email']) ||
empty($_POST['Contact0Phone1']) || empty($_POST['CaptchaInput']) || !empty($_POST['LeadBlind'])) {
echo "Error";
die();
} else {
//set POST variables
$url = 'xxx';
$infusion_xid = $_POST["xxx"];
$infusion_type = $_POST["xxx"];
$infusion_name = $_POST["xxx"];
$Contact0FirstName = $_POST["Contact0FirstName"];
$Contact0Email = $_POST["Contact0Email"];
$Contact0Phone1 = $_POST["Contact0Phone1"];


$fields = array(
    'infusion_xid'=>urlencode($infusion_xid),
    'infusion_type'=>urlencode($infusion_type),
    'infusion_name'=>urlencode($infusion_name),
    'Contact0FirstName'=>urlencode($Contact0FirstName),
    'Contact0Email'=>urlencode($Contact0Email),
    'Contact0Phone1'=>urlencode($Contact0Phone1)

);

//url-ify the data for the POST
foreach($fields as $key=>$value) { $fields_string .= $key.'='.$value.'&'; }
$fields_string = rtrim($fields_string,'& ');

//open connection
$ch = curl_init($url);

//set the url, number of POST vars, POST data
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $fields_string);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
//their return html
$output = curl_exec($ch);
//echo "TEST";
echo $output;
curl_close($ch);
}
?>

<form id="Lead" method="post" action="PHP/Lead.php" accept-charset="UTF-8">

                <ul id="LeadForm">
                    <li>*required field</li>
                    <li>
                        <input type="hidden" name="LeadBlind" id="LeadBlind">
                        <label for="Contact0FirstName">1 | First Name*</label>
                        <label for="Contact0Email">2 | Email*</label>
                        <label for="Contact0Phone1">3 | Daytime Phone*</label>
                    </li>
                    <li>
                        <input type="text" name="Contact0FirstName" id="Contact0FirstName">
                        <input type="text" name="Contact0Email" id="Contact0Email">
                        <input type="text" name="Contact0Phone1" id="Contact0Phone1">
                    </li>

                    <li>
                        <label for="CaptchaInput">4 | Please enter the code</label>
                    </li>
                    <li>
                        <input type="text" class="numbers" name="Captcha" id="Captcha" value="" readonly>
                        <input type="text" class="numbers" name="CaptchaInput"  id="CaptchaInput" size="6" maxlength="6">
                    </li>
                    <li>
                        <input type="submit" id="LeadSend" value="Try It Now!">
                        <span id="processing">Submitting Your Request</span>
                    </li>                  
                </ul>
                <div class="clear"></div>
            </form>

Мне нужно, чтобы "LeadBlind" был пустым, это скрытый ввод, который заполняют только боты, заполняющие формув, поэтому, если оно имеет значение, оно должно вызвать ошибку.Функция ajax основана на том, что возвращается, если это «ошибка», она отображает сообщение об ошибке, в противном случае - успешное.Спасибо за помощь!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...