Code to send email not working
When I am trying to execute following code to email the contact form details, it is not executing properly. Instead, when the contact form's Submit button is clicked, it just shows the below source code in the browser. What's wrong?
<?php
error_notice(E_ALL^E_NOTICE);
$firstname = $_POST['fname'];
$emailaddress = $_POST['eaddress'];
$mobile = $_POST['cellno'];
$phone = $_POST['landline'];
$country = $_POST['ucountry'];
$city = $_POST['ucity'];
$subjects = $_POST['usubjects'];
$message = $_POST['umessage'];
// EDIT THE 2 LINES BELOW AS REQUIRED
$email_to = "abc@example.com";
$email_subject = $subjects;
function died($error) {
// your error code can go here
echo "We are very sorry, but there were error(s) found with the form your submitted. ";
echo "These errors appear below.<br /><br />";
echo $error."<br /><br />";
echo "Please go back and fix these errors.<br /><br />";
die();
}
// validation expected data exists
if(!isset($firstname) ||
!isset($emailaddress) ||
!isset($subjects) ||
!isset($message)) {
died('We are sorry, but there appears to be a problem with the form your submitted.');
}
$error_message = "";
$email_exp = "^[A-Z0-9._%-]+@[A-Z0-9.-]+\.[A-Z]{2,4}$";
if(!eregi($email_exp,$emailaddress)) {
$error_message .= 'The Email Address you entered does not appear to be valid.<br />';
}
$string_exp = "^[a-z .'-]+$";
if(!eregi($string_exp,$firstname)) {
$error_message .= 'The First Name you entered does not appear to be valid.<br />';
}
if(strlen($message) < 2) {
$error_message .= 'The Comments you entered do not appear to be valid.<br />';
}
$string_exp = "^[0-9 .-]+$";
if(!eregi($string_exp,$phone)) {
$error_message .= 'The Telphone Number you entered does not appear to be valid.<br />';
}
if(strlen($error_message) > 0) {
died($error_message);
}
$email_message = "Form details below.\n\n";
function clean_string($string) {
$bad = array("content-type","bcc:","to:","cc:","href");
return str_replace($bad,开发者_Python百科"",$string);
}
$email_message .= "First Name: ".clean_string($firstname)."\n";
$email_message .= "Last Name: ".clean_string($mobile)."\n";
$email_message .= "Email: ".clean_string($emailaddress)."\n";
$email_message .= "Telephone: ".clean_string($phone)."\n";
$email_message .= "City: ".clean_string($city)."\n";
$email_message .= "Telephone: ".clean_string($country)."\n";
$email_message .= "Comments: ".clean_string($message)."\n";
// create email headers
$headers = 'From: '.$email_from."\r\n".
'Reply-To: '.$email_from."\r\n" .
'X-Mailer: PHP/' . phpversion();
@mail($email_to, $email_subject, $email_message, $headers);
?>
If the source code is shown, this means that the server does not recognize this file as PHP code. The reasons may be different. First of all (most probable) the extension of the file is unrecognized. Second option - the server does not allow PHP
If your seeing the source code in your browser, it's likely that Apache isn't processing the file, but is serving it as plain text to the browser. Your file should end in .php and your Apache server must be configured to use mod_php to process .php files.
Start here: http://dan.drydog.com/apache2php.html
UPDATE
If you are indeed simply testing these files on your local machine, PHP cannot work. It is a server-side language; that is, it requires a server to interpret the PHP parts of the file and send the output to your browser. You'll either need to install XAMPP, WAMP or find a 3rd party hosting service that will allow you to upload your PHP files.
UPDATE 2
We cannot fix your script with more information about the error. Begin reducing the complexity of the script in large steps until the error is resolved, then begin reintroducing functionality in small steps until you encounter the error again. Then you'll know what is wrong, and hopefully how to fix it.
Once thing I notice is the function error_notice
isn't defined, nor is it built-in to PHP. Begin by commenting out that line.
1) make sure that the php module is compiled and running on your apache.
LoadModule php5_module /usr/lib/apache2-prefork/mod_php5.so
run apachectl -t -D DUMP_MODULES : show all loaded modules to view all loaded modules.
2) make sure the handlers are set on your apache AddHandler application/x-httpd-php .php4 AddHandler application/x-httpd-php .php5 AddHandler application/x-httpd-php .php
3) test by running a simple script on the server. create php file phpinfo.php then ass test if the script runs, if it does not, then double check the apache configuration again...
精彩评论