2016-03-04 55 views
1

美好的一天,聯繫我們表格無法運行HTML5/PHP所需幫助

PHP新手。我一直在研究一個網站(免費模板),並且除了聯繫我們的代碼部分外,所有的功能都可以工作。我沒有收到任何錯誤,它只是不發送任何電子郵件到列出的電子郵件或發送迴應給發件人。

這裏是代碼的HTML端:

<form id="contact-form" action="php/mail.php"> 
<div class="control-group"> 
<div class="controls"> 
<input class="span6" type="text" id="name" name="name" placeholder="* Your name..."/> 
<div class="error center" id="err-name">Please enter your name.</div> 
</div></div> 
<div class="control-group"> 
<div class="controls"> 
<input class="span6" type="email" name="email" id="email" placeholder="* Your email..."/> 
<div class="error center" id="err-email">Please enter a valid email adress.</div></div></div> 
<div class="control-group"> 
<div class="controls"> 
<textarea class="span6" name="comment" id="comment" placeholder="* Comments..."></textarea> 
<div class="error center" id="err-comment">Please enter your comment.</div> 
</div></div> 
<div class="control-group"> 
<div class="controls"> 
<button id="send-mail" class="message-btn">Send message</button> 
</div></div></form> 

,這是所使用的mail.php代碼:

include 'functions.php'; 

if (!empty($_POST)) { 

$data['success'] = true; 
$_POST = multiDimensionalArrayMap('cleanEvilTags', $_POST); 
$_POST = multiDimensionalArrayMap('cleanData', $_POST); 

//your email adress 
$emailTo = "[email protected]"; //"[email protected]"; 

//from email adress 
$emailFrom = "[email protected]"; //"[email protected]"; 

//email subject 
$emailSubject = "Mail from MyEmail"; 

$name = $_POST["name"]; 
$email = $_POST["email"]; 
$comment = $_POST["comment"]; 
if ($name == "") 
$data['success'] = false; 

if (!preg_match("/^[_\.0-9a-zA-Z-][email protected]([0-9a-zA-Z][0-9a-zA-Z-]+\.)+[a-zA-Z]{2,6}$/i", $email)) 
$data['success'] = false; 

if ($comment == "") 
$data['success'] = false; 

if ($data['success'] == true) { 

$message = "NAME: $name<br> 
EMAIL: $email<br> 
COMMENT: $comment"; 

$headers = "MIME-Version: 1.0" . "\r\n"; 
$headers .= "Content-type:text/html; charset=utf-8" . "\r\n"; 
$headers .= "From: <$emailFrom>" . "\r\n"; 
mail($emailTo, $emailSubject, $message, $headers); 

$data['success'] = true; 
echo json_encode($data); 
} 
} 

我真的停留在這一點上,這是我留下的唯一問題,希望有人能幫助指出我做錯了什麼。

問候,

拉斐爾

+0

你的'form'缺少'method ='post''屬性 – CodeGodie

回答

1

爲了使form發送POST請求需要通過添加method屬性來指定它:

<form id="contact-form" action="php/mail.php" method="post"> 
+0

謝謝!現在就試試吧! – Rafael

+0

我試過了。我收到消息已發送。但我還沒有收到任何電子郵件......可能是託管問題? – Rafael

+0

它可能是..你的編碼流如?你在本地測試,然後在你的服務器上測試?或者你完全只測試你的服務器? – CodeGodie

0

被放置在你的PHP的郵件腳本cgi目錄?這是我的郵件腳本:

 <?php $name = trim(strip_tags($_POST['name'])); 
    $email = trim(strip_tags($_POST['email'])); 
    $message = htmlentities($_POST['message']); 
    $subject = "Some subject"; 
    $to = '[email protected]'; 
    $body = <<<HTML 
$message 
HTML; 

    $headers = "From: $email\r\n"; 
    $headers .= "Content-type: text/html\r\n"; 

    // send the email 
    mail($to, $subject, $body, $headers); 

    // redirect afterwords, if needed 
    header('Location: ../contact/thx.html');?> 

它被放置在cgi目錄中。

+0

在模板中,我得到它告訴我把它放在HTML文件夾中。看看我的FTP應該位於根?對不起,PHP新... – Rafael

+0

它不需要在CGI目錄中。這只是偏好。 – CodeGodie

0

在經過CodeGoodie的大量研究和幫助之後,我認爲責備在於託管。我曾問過如何檢查服務器日誌以檢測錯誤,他們只是回覆說我需要升級才能使用該功能(儘管它應該已成爲功能的一部分)。感謝所有幫助的人。我確實學到了很多:)