2013-08-29 3 views
1

У меня есть контактная форма, которую мне нужно проверить на PHP, чтобы проверить, правильно ли заполнено каждое поле.Проверка формы контакта в PHP

Вот что у меня есть:

//Post fields 
<?php 
$field_name = $_POST['name']; 
$field_email = $_POST['email']; 
$field_services = $_POST['services']; 
$field_it = $_POST['it']; 
$field_location = $_POST['location']; 
$field_message = $_POST['message']; 


//mail_to omitted 


//Validation of contact form 

$errormessage = ''; 
if($field_name == ''){ 

$errormessage += 'You have not entered your Name\n'; 
} 

if($field_email == ''){ 

$errormessage += 'You have not entered your Email Address\n'; 
} 

if($field_services == ''){ 

$errormessage += 'You have not chosen the service you require\n'; 
} 

if($field_it == ''){ 

$errormessage += 'You have not chosen the Date of your event\n'; 
} 

if($field_location == ''){ 

$errormessage += 'You have not entered the location of your event\n'; 
} 


if($errormessage != ''){ ?> 

<script language="javascript" type="text/javascript"> 
    alert('The following fields have not neen entered correctly\n<?php echo "$errormessage" ?>'); 
    window.location = 'contact.html'; 
</script> 
<?php } 



if ($mail_status) { ?> 
<script language="javascript" type="text/javascript"> 
    alert('Thank you for the message. We will contact you shortly.'); 
    window.location = 'contact.html'; 
</script> 
<?php 
} 


else { ?> 
<script language="javascript" type="text/javascript"> 
    alert('Message failed. Please, send an email to [email protected]'); 
    window.location = 'contact.html'; 
</script> 
<?php 
} 
?> 

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

Может ли кто-нибудь помочь мне найти, куда я иду не так?

+0

для начала отправки почты перед любой валидацией –

+0

пустая белая страница? Что говорит ваш журнал ошибок? – James

ответ

1

Вы должны использовать strlen() и isset(), чтобы проверить, не получены ли какие-либо данные из формы.

Пример:

if(!isset($_POST['name']) || strlen($_POST['name']) < 1){ 
    $errormessage .= 'You have not entered your Name\n'; 
} 
+0

Да, это прекрасно работает. Работает моя проверка. Спасибо :) –

+0

+ = работает: O, он не должен работать –

+0

Нет, я изменил его на '. =', Как вы сказали. –

1

Вместо сравнения переменной пустую строку, как этот $field_services == '', используйте empty() или isset()

if(!empty($field_services)) или if(isset($field_services))

Другая проблема заключается в том, что вы конкатенации строк с использованием +, это верно, если вы используете javascript, java или C# и т.п .. нет PHP.

Объединяет переменный с помощью PHP:

$var='Hello'; 
$var.=' World !' 

echo $var;// Hello World ! 

Так что ваш код должен быть:

if(empty($_POST['name'])){ 
    $errormessage .= 'You have not entered your Name\n'; 
} 
+0

Да: p слишком привык к JavaScript ... '. =' Это –

1

Попробуйте использовать $errormessage.='Some text\n'; вместо $errormessage+='Some text\n';.
Использование «+» вместо «.», PHP обрабатывает переменную $errormessage как число, и утверждение не выполнено.

2

Кроме того, вы можете использовать функцию триммера, чтобы удалить любое пространство.

trim($_POST['name'])... 
Смежные вопросы