2012-01-23 6 views
0

У меня есть грубый php-скрипт, который видит, заполнил ли пользователь вход формы HTML после того, как нажал submit. У меня возникла проблема с получением isset() и is_string() для работы. Если я использую isset(), форма отправляется по электронной почте, даже если входы формы оставлены пустыми, is_string() выдает сообщения об ошибках, даже если вход формы заполнен. Я пробовал! Isset() и все равно отправляет пустой ввод. Единственное, что работает, если я использую == NULL. В настоящий момент я не собираюсь проверять ввод, поскольку я пытаюсь понять, почему это не работает, поскольку я довольно новичок в PHP.php isset() is_string() не работает

$subject = "Feedback from Your Website."; 
$email = ($_POST['email']); 
$name = ($_POST['name']); 
$message = ($_POST['feedback']); 

if (isset($_POST["name"])) 
{ 
    //send message 
    mail($subject, $name, $email, $message); 
} 

else 
{ 
    //error message 
    echo "Please do not miss out any fields"; 
} 

Я также попытался:

if (isset($_POST["name"], $_POST['email'])) 
{ } 

if (isset($name, $email)) 
{ } 

if (is_string($name || $email)) 
{ } 

Но все не удалось, до сих пор все, что работает это:

if ($name == NULL || $email == NULL || $message == NULL) 
{ } 

Спасибо заранее.

+0

Может print_r ($ _ POST) может помочь вам – jap1968

+0

Похоже, смесь всех четырех ответов дать вам полное изображение проблемы! – Alfabravo

ответ

3

Попробуйте использовать empty(). Эта функция возвращает TRUE, если переменная пуста или не установлена, FALSE в противном случае.

if (empty($_POST["name"]) || empty($_POST["email"]) || empty($_POST["feedback"])) 
{ 
    //error message 
    echo "Please do not miss out any fields"; 
} 
else 
{ 
    //send message 
    mail($subject, $name, $email, $message); 
} 
+0

У вас есть синтаксическая ошибка. – TimWolla

+0

Да, я понял, что поставил цитату в конце, я редактировал вопрос, увидев его. – Yokocapolo

+0

Спасибо, что сделал трюк. Теперь я понимаю, что я делаю неправильно. – Yokocapolo

3

is_string($name || $email) не работает, потому что $name || $email отливают в boolean и boolean не string.

+0

ах, спасибо, запомнит это. – Yokocapolo

0

Как насчет empty() вы можете проверить детали функции в te php manual.

+0

Я прочитал сообщение о том, что лучше использовать! Isset, а не пустой, но я дам вам благодарность. – Yokocapolo

1

isset проверяет, создано ли значение в массиве. Это всегда будет, так как форма всегда имеет одинаковые поля, пустые или нет. Вы должны проверить их содержимое

+0

спасибо, что это будет иметь в виду в следующий раз. – Yokocapolo

2

isset() Функция вернет Истинное значение после отправки формы. Фактически, ваше поле было отправлено в ваш целевой файл. Таким образом, ваш код отправит emmial. За то, что вам нужно, вы должны использовать код ниже:

if (isset($_POST["name"]) && $_POST["name"] != '') { 
    // do something 
} 
1

Исети() возвращает истину, потому что $ _POST [ «электронная почта»] была установлена. Он просто пуст. Поскольку вы отправляете форму, все переменные формы были установлены.

Вы должны написать это

if (isset($_POST["email"]) && $_POST["email"] != '') 
Смежные вопросы