2017-02-14 4 views
1

Я пытаюсь сделать сайт для команды роботов моей школы. Пока все работает хорошо, за исключением контактной формы. Я знаю, что мне нужно использовать PHP, чтобы он работал, и я нашел руководство для онлайн, как это сделать. Я скопировал его точно, изменив детали по мере необходимости. Однако это не сработало. Ниже приведен контактный раздел HTML.Проблемы с формой HTML-сообщения?

    <!-- Contact --> 
         <article id="contact"> 
          <h2 class="major">Contact</h2> 
          <form method="post" action="C:\Users\Mr. Roboto 2\Desktop\Robotics New Website\assets\form-to-email.php"> 
           <div class="field half first"> 
            <label for="name">Name</label> 
            <input type="text" name="name" id="name" /> 
           </div> 
           <div class="field half"> 
            <label for="email">Email</label> 
            <input type="text" name="email" id="email" /> 
           </div> 
           <div class="field"> 
            <label for="message">Message</label> 
            <textarea name="message" id="message" rows="4"></textarea> 
           </div> 
           <ul class="actions"> 
            <li><input type="submit" value="Send Message" class="special" /></li> 
            <li><input type="reset" value="Reset" /></li> 
           </ul> 
          </form> 
          <ul class="icons"> 
           <li><a href="#" class="icon fa-twitter"><span class="label">Twitter</span></a></li> 
           <li><a href="#" class="icon fa-facebook"><span class="label">Facebook</span></a></li> 
           <li><a href="#" class="icon fa-instagram"><span class="label">Instagram</span></a></li> 
           <li><a href="#" class="icon fa-github"><span class="label">GitHub</span></a></li> 
          </ul> 
         </article> 

Ниже приведен код PHP, который я нашел в руководстве.

<?php 
if(!isset($_POST['submit'])) 
{ 
    //This page should not be accessed directly. Need to submit the form. 
    echo "error; you need to submit the form!"; 
} 
$name = $_POST['name']; 
$visitor_email = $_POST['email']; 
$message = $_POST['message']; 

//Validate first 
if(empty($name)||empty($visitor_email)) 
{ 
    echo "Name and email are mandatory!"; 
    exit; 
} 

if(IsInjected($visitor_email)) 
{ 
    echo "Bad email value!"; 
    exit; 
} 

$email_from = '[email protected]';//<== update the email address 
$email_subject = "New Form submission"; 
$email_body = "You have received a new message from the user $name.\n". 
    "Here is the message:\n $message". 

$to = "[email protected]";//<== update the email address 
$headers = "From: $email_from \r\n"; 
$headers .= "Reply-To: $visitor_email \r\n"; 
//Send the email! 
mail($to,$email_subject,$email_body,$headers); 
//done. redirect to thank-you page. 
header('Location: thank-you.html'); 


// Function to validate against any email injection attempts 
function IsInjected($str) 
{ 
    $injections = array('(\n+)', 
       '(\r+)', 
       '(\t+)', 
       '(%0A+)', 
       '(%0D+)', 
       '(%08+)', 
       '(%09+)' 
      ); 
    $inject = join('|', $injections); 
    $inject = "/$inject/i"; 
    if(preg_match($inject,$str)) 
    { 
    return true; 
    } 
    else 
    { 
    return false; 
    } 
} 

?> 

Я полный новичок в PHP, поэтому ничто из этого не имеет для меня никакого смысла. Всякий раз, когда я нажимаю кнопку для отправки сообщения, все, что происходит, это код PHP, отображаемый на пустой белой странице. Я слышал от некоторых людей, что мне нужен почтовый сервер, но я понятия не имею, как его настроить. Ничто из того, что я нашел в Интернете, не помогло, поэтому я решил обратиться за помощью в старый добрый StackOverflow. Надеюсь, кто-то может мне помочь. Любая помощь приветствуется.

Редактировать: По-видимому, это было отмечено как дубликат, когда я не верю, что это так. Вопрос, который я предположительно дублировал, не испытывал таких же проблем, как я.

+0

если вы видите PHP в браузере, ваш даже не работает в PHP включен сервер (FIX, что первый) – nogad

+1

'" код PHP показывает на пустом white page "' - Тогда PHP не выполняется вообще. Возможно, потому, что вы вызываете его из файловой системы, а не с веб-сервера: 'action =" C: \ Users \ Mr. Roboto 2 \ Desktop \ Robotics New Website \ assets \ form-to-email.php "PHP работает на * веб-сервере *, а не в браузере. – David

ответ

Смежные вопросы