2012-04-24 130 views
0

我對網絡編程相當陌生,並且正試圖讓一個個人網站正常運行。我有一個似乎沒有執行任何事情的聯繫表單。我已經在網上搜尋了我的代碼中的錯誤,但是我碰到了一堵牆。聯繫表格無法正常工作

腳本頭

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script> 
<script src="http://html5form.googlecode.com/svn/trunk/jquery.html5form-1.5-min.js"></script> 

HTML5形式

<form action="message.php" method="post" id="message_form"> 
    <fieldset> 
     <input type="email" name="email" id="email" title="Email address" maxlength="40" placeholder="Email Address" autocomplete="off" required /> 
     <br /> 
     <input type="text" name="subject" id="subject" title="Subject" maxlength="60" placeholder="Subject" autocomplete="off" required /> 
     <br /> 
     <textarea name="message" id="message" title="Message" cols="30" rows="5" maxlength="1000" placeholder="Message" required></textarea> 
     <br /> 
     <input type="submit" value="Send" id="submit" name="submit"/> 
    </fieldset> 
</form> 

在身體腳本(連接)

$('#message_form').html5form({ 
    allBrowsers : true, 
    responseDiv : '#response', 
    messages: 'en', 
    messages: 'es', 
    method : 'GET', 
    colorOn :'#0d85a5', 
    colorOff :'#d2d2d2' 
}); 

message.php

<?php 
if ('POST' === $_SERVER['REQUEST_METHOD']) { 
$to = "[email protected]"; 
$from = "[email protected]"; 
$subject = "test subject"; 
$message = "test message"; 

$body = "$from\n $message"; 

echo "Your message has been sent!"; 
mail($to, $subject, $body); 
} else { 
echo "Rapscallions! Please try again."; 
} 
?> 

在本地MAMP服務器上測試並上傳到遠程主機(bluehost)時,除非表單重置爲佔位符值,否則當我點擊「發送」時沒有任何反應。幫幫我。

+0

本地它並不奇怪,除非你碰巧要運行郵件服務器。最好的測試方法是刪除所有不需要的東西,只需運行mail()函數並對值進行硬編碼,以確保在繼續前進行工作。 – 2012-04-24 01:10:54

+0

@Dragon所以你說它看起來不錯,但我需要去掉它開始排除故障?在S.O上有 – rojobuffalo 2012-04-24 01:26:19

+1

有人通常會給你確切的答案,但學習解決你的困難會有很長的路要走。 – 2012-04-24 01:29:36

回答

0

你忘了給您的提交按鈕的名稱

<input type="submit" name="Submit" value="Send" id="submit"/> 

一個更好的辦法來做到這一點可能是代替

if(isset($_POST["submit"])){ 

用途:

if ('POST' === $_SERVER['REQUEST_METHOD']) { 

這種方法沒有按」檢查一個特定的變量。它檢查請求方法,如果它是POST,則表單被提交。

+0

試過你的建議,但沒有改變。仍然沒有錯誤代碼,謝謝你的消息或電子郵件發送。 – rojobuffalo 2012-04-24 01:41:05

+0

你有適當的建議,但我錯過了我的網站上的php.ini文件。這和那一切工作。謝謝。 – rojobuffalo 2012-04-27 09:06:22

0

$_POST包含一個關聯數組(包括輸入上的name)及其各自的值。

由於沒有輸入有name='submit',因此您的if語句將始終爲假。

在任何情況下,你可能會想使用這樣的事情(這是一個更好的檢查,看看如果事情是正確的):

if(empty($_POST['subject']) || empty($_POST['email'] || empty($_POST['message'])){ 
    echo "Rapscallions! Please try again."; 
} else { 
    // do your thing 
}