html и php проблема с контактной формой

0

Может кто-нибудь, пожалуйста, скажите мне, что не так с моим кодом. Я не могу понять, что такое ошибка.

Форма обратной связи

<form action="mail.php" method="POST">
                <p>Name</p> <input type="text" name="name">
                <p>Email</p> <input type="text" name="email">
                <p>Phone</p> <input type="text" name="telephone">

                <p>Request Phone Call:</p>
                Yes:<input type="checkbox" value="Yes" name="call">
                No:<input type="checkbox" value="No" name="call"><br />

                <p>Priority</p>
                <select name="priority" size="1">
                    <option value="Low">Low</option>
                    <option value="Normal">Normal</option>
                    <option value="High">High</option>
                    <option value="Emergency">Emergency</option>
                </select>
                <br />

                <p>Type</p>
                <select name="type" size="1">
                    <option value="update">Website Update</option>
                    <option value="change">Information Change</option>
                    <option value="addition">Information Addition</option>
                    <option value="new">General Enquiries</option>
                </select>
                <br />

                <p>Message</p><textarea name="message" rows="10" cols="40"></textarea><br />
                <input type="submit" value="Send" class="button"/><input type="reset" value="Clear" class="button"/>
            </form>

mail.php

<?php 

if(isset($_POST['email'])) { 

$email_to = "[email protected]"; 
$email_subject = "Tip Top Music"; 

function died($error) { 

    // Error codes
    echo "We are very sorry, but there were error(s) found with the form you submitted. "; 
    echo "These errors appear below.<br /><br />"; 
    echo $error."<br /><br />";  
    echo "Please go back and fix these errors.<br /><br />"; 
    die(); 

} 

// Required fields
if(!isset($_POST['name']) ||  
    !isset($_POST['email']) ||   
    !isset($_POST['message'])) { 

    died('Required Fields are not complete');        
} 

$name = $_POST['name']; // required 
$email_from = $_POST['email']; // required 
$telephone = $_POST['telephone']; // not required 
if(!isset($_POST['call'])) {
 $call = "No"; // if checkbox was left unchecked. Default is No
}
else {
    $call = ($_POST['call'])
}
$priority = $_POST['priority'];  // Will already have default value
$type = $_POST['type'];  // Will already have default value
$message = $_POST['message']; // required 
$error_message = ""; 

$email_exp = '/^[A-Za-z0-9._%-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,4}$/'; 

if(!preg_match($email_exp,$email_from)) { 
  $error_message .= 'The Email Address you entered does not appear to be valid.<br />'; 
} 

$string_exp = "/^[A-Za-z .'-]+$/"; 

if(!preg_match($string_exp,$name)) { 
    $error_message .= 'The Name you entered does not appear to be valid.<br />'; 
}

if(strlen($message) < 2) { 
    $error_message .= 'The Comments you entered do not appear to be valid.<br />'; 
} 

if(strlen($error_message) > 0) { 
    died($error_message); 
} 

$email_message = "Form details below.\n\n"; 

function clean_string($string) { 
    $bad = array("content-type","bcc:","to:","cc:","href"); 
    return str_replace($bad,"",$string); 
} 

$email_message .= "Name: ".clean_string($name)."\n"; 
$email_message .= "Email: ".clean_string($email_from)."\n"; 
$email_message .= "Request Callback: ".($call)."\n";
$email_message .= "Telephone: ".clean_string($telephone)."\n"; 
$email_message .= "Priority: ".($priority)."\n";
$email_message .= "Type: ".($type)."\n";
$email_message .= "Message: ".clean_string($message)."\n"; 

// create email headers 
$headers = 'From: '.$email_from."\r\n". 
'Reply-To: '.$email_from."\r\n" . 
'X-Mailer: PHP/' . phpversion(); 
@mail($email_to, $email_subject, $email_message, $headers);   

?> 

<!-- Message success --> 

Thank you for contacting us. We will be in touch with you very soon. 

<?php 


} 

?>

Я получаю неопределенный индексный вызов, указывающий на $ call = "Нет"; линия. ОДНАКО, сценарий не должен даже запускаться вообще, потому что я опубликовал пустую форму? Когда я повторяю поля ввода, они пустые, но если они содержат IF-утверждения, чтобы проверить, установлены ли они (isset), они входят в оператор, как если бы они были установлены? Должен ли я использовать что-то другое, кроме isset, для проверки пустых входов? Это обычно работает, поэтому я запутался, почему его не сейчас?

  • 0
    @vinodadhikary что ты имеешь ввиду? умер это имя функции там
  • 0
    извини не заметил этого!
Показать ещё 2 комментария
Теги:

2 ответа

3

Ваш код работает нормально после добавления точки с запятой в $ _POST ['call'];

правильный должен быть $ call = ($ _POST ['call']);

при отправке пустой формы он выдает сообщения об ошибках. поэтому я считаю, что проверка правильной работы.

  • 0
    Если вы отправляете полностью пустую форму, скрипт не должен запускаться. Сначала он проверяет, было ли установлено поле электронной почты. Если нет, то даже не следует запускать следующую строку. Вместо этого он обходит код, который проверяет пустые вводы имени, электронной почты и сообщения, поскольку он видит, что они установлены, когда они приходят. Да, это приводит к ошибкам, когда имя, адрес электронной почты и сообщение недействительны, но в коде этого не должно быть.
1

Отсутствует точка с запятой на $_POST['call']

if(!isset($_POST['call'])) {
 $call = "No"; // if checkbox was left unchecked. Default is No
}
else {
    $call = $_POST['call']; // Missing semicolon here
}
  • 0
    Это исправило мою ошибку компиляции, однако все еще имел проблему, что он думает, что входы были установлены? Он все еще выполняет код, даже если я отправил пустую форму?
  • 0
    dead это просто функция, которая добавляет дополнительные комментарии, а затем убивает скрипт. Даже если я изменю эту строку, чтобы она умерла, она никогда не запускается, потому что она никогда не входит в оператор if. Мой код видит переменную (имя, адрес электронной почты и сообщение) как установленную, хотя у меня ее нет, и поэтому она выполняет код, сообщающий об ошибках, что имя, адрес электронной почты и сообщение недействительны.
Показать ещё 3 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню