2010-03-18 3 views
0

Когда я пытаюсь выполнить следующий код для отправки по электронной почте сведений о форме контакта, он не выполняется должным образом. Вместо этого, когда нажата кнопка отправки формы контакта, она просто показывает исходный код в браузере. Что не так?Код для отправки электронной почты не работает

<?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 = "[email protected]"; 
    $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._%-][email protected][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,"",$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); 
?> 

ответ

4

Если исходный код показан, это означает, что сервер не распознает этот файл как код PHP. Причины могут быть разными. Прежде всего (наиболее вероятно) расширение файла непризнано. Второй вариант - сервер не разрешает PHP

+0

Расширение является .PHP. Я тестирую файл локально, и он не на любом сервере. – RKh

+2

@RPK, если это не на сервере, в этом может возникнуть ваша проблема :-) – richsage

+1

Точно. У вас есть какой-то сервер, установленный на вашем компьютере? Как Apache или IIS? Как вы вводите URL-адрес? используя http: // localhost/xxxx или просто открыть файл со страницей в браузере? –

2

Если вы видите исходный код в своем браузере, вполне вероятно, что Apache не обрабатывает файл, а обслуживает его как обычный текст в браузере. Ваш файл должен заканчиваться на .php, и ваш сервер Apache должен быть настроен на использование mod_php для обработки файлов .php.

Начало здесь: http://dan.drydog.com/apache2php.html

UPDATE

Если вы действительно просто тестирование этих файлов на локальном компьютере, PHP не может работать. Это серверный язык; то есть для этого требуется, чтобы сервер интерпретировал части PHP файла и отправил вывод в ваш браузер. Вам нужно либо установить XAMPP, WAMP, либо найти сторонний сервис хостинга, который позволит вам загружать ваши PHP-файлы.

UPDATE 2

Мы не можем исправить скрипт с дополнительной информацией об ошибке. Начните уменьшать сложность сценария большими шагами до тех пор, пока ошибка не будет устранена, а затем начните повторно вводить функциональность небольшими шагами, пока не столкнетесь с ошибкой снова. Тогда вы поймете, что не так, и, надеюсь, как это исправить.

Когда-то вещь, которую я замечаю, это функция error_notice не определена и не встроена в PHP. Начните с комментариев этой строки.

+0

См. Мой комментарий к Tomasz выше. – RKh

0

1) убедитесь, что модуль php скомпилирован и запущен на вашем apache.

LoadModule php5_module /usr/lib/apache2-prefork/mod_php5.so

перспективы apachectl -t -D DUMP_MODULES: показать все загруженные модули для просмотра всех загруженных модулей.

2) убедитесь, что обработчики установлены на вашем апач AddHandler применение/х-HTTPD-PHP .php4 AddHandler применение/х-HTTPD-PHP .php5 AddHandler применение/х-HTTPD-PHP .php

3) протестируйте, запустив простой скрипт на сервере. создать php-файл phpinfo.php, тогда ass проверить, работает ли скрипт, если он этого не сделает, затем дважды проверьте конфигурацию apache ...

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