2016-05-03 2 views
0

Я видел, что в StackOverflow есть много похожих на мои вопросы, но я думаю, что еще не смог найти правильное решение для моего вопроса.Проблема с конфигурацией с контактной формой PHP

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

Я занимаюсь разработкой с использованием XAMPP и запуска сервера Apache и Mercury на localhost. Несмотря на то, что валидация показывает успех, электронные письма не проходят.

  1. Я пытался добавить method="post" в разделе HTML, но обнаружил, что type: "POST" уже включен.
  2. Двойной контроль того, что использует Mercury, и сравнили его с указанным в php.ini оба значения равны 25.
  3. Я также попытался развернуть до Bitbucket pages и Azure для перехода с локального хоста на хостинг.

Я внимательно прочитал очень подробно post. Идея загрузить веб-сайт в живую хостинг пришла с этой должности.

<?php 
$name = trim($_POST['name']); 
$email = trim($_POST['email']); 
$message = trim($_POST['message']); 


if(isset($name) && isset($email)) { 

    // Avoid Email Injection and Mail Form Script Hijacking 
    $pattern = "/(content-type|bcc:|cc:|to:)/i"; 
    if(preg_match($pattern, $name) || preg_match($pattern, $email) || preg_match($pattern, $message)) { 
     exit; 
    } 

    $to = "[email protected]"; 
    $sub = "$name from Cv"; 
    // HTML Elements for Email Body 
    $body = <<<EOD 
    <strong>Name:</strong> $name <br> 
    <strong>Email:</strong> <a href="mailto:$email?subject=feedback" "email me">$email</a> <br> <br> 
    <strong>Message:</strong> $message <br> 
EOD; 

    $headers = "From: $name <$email>\r\n"; 
    $headers .= 'MIME-Version: 1.0' . "\r\n"; 
    $headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n"; 

    mail($to, $sub, $body, $headers); 
} 

?> 

$("#contact-form-1").submit(function(e) { 
 
    e.preventDefault(); 
 
    var success = $(this).find('.email-success'), 
 
     failed = $(this).find('.email-failed'), 
 
     loader = $(this).find('.email-loading'), 
 
     postUrl = $(this).attr('action'); 
 

 
    success.fadeOut(100); failed.fadeOut(100); loader.fadeOut(100); 
 

 
    var data = { 
 
    name: $(this).find('.contact-name').val(), 
 
    email: $(this).find('.contact-email').val(), 
 
    message: $(this).find('.contact-message').val() 
 
    }; 
 

 
    if (isValidEmail(data['email']) && (data['message'].length > 1) && (data['name'].length > 1)) { 
 
    $.ajax({ 
 
     type: "POST", 
 
     url: postUrl, 
 
     data: data, 
 
     beforeSend: function() { 
 
     loader.fadeIn(500); 
 
     }, 
 
     success: function(data) { 
 
     loader.fadeOut(500); 
 
     failed.fadeOut(500); 
 
     success.delay(500).fadeIn(500); 
 
     }, 
 
     error: function(xhr) { // if error occured 
 
     loader.fadeOut(500); 
 
     success.fadeOut(500); 
 
     failed.delay(500).fadeIn(500); 
 
     }, 
 
     complete: function() { 
 
     loader.fadeOut(500); 
 
     } 
 
    }); 
 
    } else { 
 
    loader.fadeOut(500); 
 
    failed.delay(500).fadeIn(500); 
 
    success.fadeOut(500); 
 
    } 
 

 
    return false; 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 

 
<form id="contact-form-1" action="sendmail.php" method="POST"> 
 
    
 
    <input class="contact-name form-control" type="text" name="name" placeholder="FULL NAME"> 
 
    <input class="contact-email form-control" type="text" name="email" placeholder="EMAIL"> 
 
    <textarea class="contact-message form-control" name="message" placeholder="MESSAGE" rows="5"></textarea> 
 
    <button class="btn">SEND MESSAGE</button> 
 

 
</form>

Примечание: я не писал этот код себе, как это было предусмотрено шаблона создателя. Я связался с создателем шаблона и столкнулся с абсолютно ужасной поддержкой. Это главная причина моего сообщения здесь.

+0

Ну, вы не проверяете, было ли отправлено письмо успешно или нет, – Epodax

+0

@Epodax Я добавил подтверждение. Пожалуйста, ознакомьтесь с обновленным сообщением. – alljamin

+0

У вас есть сообщение об ошибке? – D14n4

ответ

0

Если вы ищете больше исследований и вопросов, я нашел this чрезвычайно полезный ответ, который окончательно определил мою локальную конфигурацию XAMPP. Таким образом, в самом коде не было ничего плохого, но моя конфигурация была проблемой.

ВАЖНО: попытайтесь выполнить шаги как можно ближе, просто ; недостающие могут сделать большую разницу в конечном результате. Поэтому дважды проверяйте каждый шаг, если что-то кажется сломанным.

Также найдено еще одного очень проницательного и интересного для чтения post.

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