2011-12-20 94 views
-2

我編輯了一個簡單的聯繫表格從互聯網上下載,我不是一個大的PHP傢伙,所以我最有可能做錯了什麼。PHP的聯繫表格不是由於某種原因發送

這裏是我的代碼:

<?php 
/* 
This first bit sets the email address that you want the form to be submitted to. 
You will need to change this value to a valid email address that you can access. 
*/ 
$webmaster_email = "[email protected]"; /* ENTER EMAIL ADDRESS TO THE LEFT INSIDE THE QUOTES */ 

/* 
This bit sets the URLs of the supporting pages. 
If you change the names of any of the pages, you will need to change the values here. 
*/ 
$feedback_page = "index.html"; 
$error_page = "index.html"; 
$thankyou_page = "index.html"; 

/* 
This next bit loads the form field data into variables. 
If you add a form field, you will need to add it here. 
*/ 
$name = $_REQUEST['name'] ; 
$company = $_REQUEST['company'] ; 
$phone = $_REQUEST['phone'] ; 
$email_address = $_REQUEST['email_address'] ; 
$comments = $_REQUEST['message'] ; 

/* 
The following function checks for email injection. 
Specifically, it checks for carriage returns - typically used by spammers to inject a CC list. 
*/ 
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; 
} 
} 

// If the user tries to access this script directly, redirect them to the feedback form, 
if (!isset($_REQUEST['email_address'])) { 
header("Location: $feedback_page"); 
} 

// If the form fields are empty, redirect to the error page. 
elseif (empty($email_address) || empty($comments)) { 
    header("Location: $error_page"); 
} 

// If email injection is detected, redirect to the error page. 
elseif (isInjected($email_address)) { 
    header("Location: $error_page"); 
} 

// If we passed all previous tests, send the email then redirect to the thank you page. 
else { 
    mail("$webmaster_email", "CDR-Print Enquiry", 
    "Name: $name", "Company: $company", "Phone: $phone", "From: $email_address", "Message: $comments" ); 
header("Location: $thankyou_page"); 
} 
?> 
+1

不要只是發佈一段代碼。包括詳細信息:出了什麼問題?例如:你期望它做什麼,它實際上做了什麼?有沒有錯誤?什麼是錯誤信息,如果有的話? – NullUserException 2011-12-20 17:18:27

+0

我強烈建議開始[這裏](http://php.net/manual/en/tutorial.php)。 – Blazemonger 2011-12-27 21:49:53

回答

3

郵件功能,可能需要長達5個參數,在你的情況下,它採取7,其中大部分是沒有意義的:

mail("$webmaster_email", "CDR-Print Enquiry", "Name: $name", "Company: $company", "Phone: $phone", "From: $email_address", "Message: $comments"); 

請檢查mail manual看你的腳本應該如何工作,基本上你需要這樣做:

mail('[email protected]', 'My Subject', $message); 
0

的錯誤是在你的郵件功能

應該是這樣的:

$message = 'Name: $name, Company: $company Phone: $phone From: $email_address Message: $comments' 

mail("$webmaster_email", "CDR-Print Enquiry", $message); 

請檢查this鏈接,這樣你可以有有關郵件功能的更好的理解。

+0

對於Gerep,我已將代碼更改爲以下內容,但仍不起作用 http://pastie.org/pastes/3046850/text 對不起,使這個真棒,但我有很少,以及沒有PHP的知識,但迫切需要合併聯繫表格 – user1106025 2011-12-20 13:46:25

+0

是否有任何錯誤信息? – Gerep 2011-12-20 14:11:36

+0

試試這個:$ message ='Name:'。$ name。',Company:'。$ company。',Phone:'。$ phone。',From:'。$ email_address。',消息:'。$ comments – Gerep 2011-12-20 14:13:16

0

它是否給出了一些錯誤?或者只是不發送郵件?您可以通過在其上運行if來檢查mail函數是否成功,因爲mail返回成功的布爾值。