2016-08-08 4 views
0

У меня есть HTML-форма, и я использую isset, чтобы проверить, установлены ли переменные POST, а затем обрабатываю их (отправляйте их по электронной почте или в электронную таблицу Google). Иногда Я получаю пустой результат (ы), как если бы переменная (ы) была/равна нулю или пуста, даже пустое пространство. Почему это происходит? Я что-то упускаю?

<?php if(isset($_POST["name"]) && isset($_POST["tel"])){ 
     $name = $_POST["name"]; 
     $phone = $_POST["phone"]; 
     $message="Name: $name \nPhone : $phone \n"; 

     require 'PHPMailer/PHPMailerAutoload.php'; 

     $mail = new PHPMailer; 
     $mail->setFrom('[email protected]', 'From Name'); 
     $mail->addAddress('[email protected]', 'To Name'); 
     $mail->Subject = 'Message Subject'; 
     $mail->Body  = $message; ?> 

<form enctype="multipart/form-data" action="#" method="post">      
    <input id="name" type="text" name="name" title="Enter your name" placeholder="Name" required >  
    <input id="phone" type="phone" name="phone" pattern="0(6|5)([-. ]?[0-9]{2}){4}" title="Enter your phone" placeholder="Phone" required > 
    <button type="submit" id="submit" name="submit">Send</button>      
</form> 

P.S. Поля могут иногда иметь записи RTL Arabic. Я также использую проверку Javascript на стороне клиента, чтобы проверить, являются ли поля действительными и не пустыми. Я понимаю, что проверка на стороне клиента может быть затоплена, поскольку она является клиентской, и поскольку браузеры отличаются друг от друга, однако я не могу понять, как пустые записи все еще возвращаются true от if(isset($_POST[])! Это нормальное поведение isset($_POST[]), когда поля input пусты? Будет ли проверка, если !empty($_POST[]) будет правильным и уместным в моем случае? .

ответ

2

isset() просто проверяет, что переменная установлена, а не NULL.

http://php.net/manual/en/function.isset.php

Если он установлен и пустой, Исеть() возвращает TRUE.

Для проверки пустого значения необходимо использовать empty().

http://php.net/manual/en/function.empty.php

Вы также можете сделать строгую проверку в отношении стоимости, если вы знаете, что сверять:

if (isset($_POST['name']) && $_POST['name'] !== '')