2016-09-17 3 views
-4

Я хочу отправить электронное письмо с исходными данными с моей страницы html. Я использую следующий сценарий php:PHP-код, показывающий пустую страницу

<?php 
if((isset($_POST['budget']))&&(isset($_POST['type']))) { 
    $email_to = "[email protected]"; 
    $email_subject = "Design"; 

    function died($error) { 
     // your error code can go here 
     echo "We are very sorry, but there were error(s) found with the form you 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($_POST['budget']) || 
     !isset($_POST['type'])) { 
     died('We are sorry, but there appears to be a problem with the form you submitted.');  
    } 

    $email = $_POST['email']; // required 
    $budget = $_POST['budget']; // required 
    $type = $_POST['type']; // required 
    $comments = $_POST['comments']; // not required 
    $error_message = ""; 
    $email_exp = '/^[A-Za-z0-9._%-][email protected][A-Za-z0-9.-]+\.[A-Za-z]{2,4}$/'; 
    $string_exp = "/^[A-Za-z .'-]+$/"; 

    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 .= "Email: ".clean_string($email)."\n"; 
    $email_message .= "Budget: ".clean_string($budget)."\n"; 
    $email_message .= "Type: ".clean_string($type)."\n"; 
    $email_message .= "Comments: ".clean_string($comments)."\n"; 

// create email headers 
$headers = 'From: '.$email."\r\n". 
'Reply-To: '.$email."\r\n" . 
'X-Mailer: PHP/' . phpversion(); 
mail($email_to, $email_subject, $email_message, $headers); 
?> 

<!-- THERE MY PHP CODE, I REMOVED IT ESPECIALLY FOR STACKOVERFLOW, BUT IT EXIST --> 

<?php 
} 
?> 

Но это не работает. Когда я нажимаю на submit - это показывает мне пустую страницу. Я не понимаю, в чем проблема.

Кроме того, я попытался следующий сценарий, и она работала отлично:

<?php 
    $to = "[email protected]"; 
    $subject = "This is subject"; 

    $message = "<b>This is HTML message.</b>"; 
    $message .= "<h1>This is headline.</h1>"; 

    $header = "From:[email protected] \r\n"; 
    $header .= "Cc:[email protected] \r\n"; 
    $header .= "MIME-Version: 1.0\r\n"; 
    $header .= "Content-type: text/html\r\n"; 

    $retval = mail ($to,$subject,$message,$header); 

    if($retval == true) { 
     echo "Message sent successfully..."; 
    }else { 
     echo "Message could not be sent..."; 
    } 
    ?> 
+0

Пустой страницей обычно является внутренняя ошибка сервера. Что содержит журнал ошибок ваших веб-серверов? – TZHX

+0

Вам нужно быть более явным с сообщением. Подготовьте дело. Что вы попробовали? Если вы найдете что-то здесь, и это не проблема. Если у вас ошибка на консоли, вам нужно ее показать. Если вы даете больше информации, это немного лучше. –

+0

Ничего. Я пробовал этот скрипт на другом хостинге, и он отлично работал. –

ответ

0

Существует ничего показ, потому что нет ничего, чтобы показать. Единственное место в скрипте, где есть попытка отобразить что-либо, - это доступ к странице без правильных пост-переменных (в этом случае отображается содержимое метода died()). В самом конце этого скрипта есть html-комментарий с <!-- HTML CODE HERE -->, и там ничего нет.

+0

У меня есть html-код, который нужно показать, я просто удалил его для stackoverflow и оставил его с комментарием –

+0

Затем проверьте свои журналы ошибок или включите ведение журнала непосредственно для этого скрипта. Что они говорят? –

+0

Я не могу их проверить. Это запрещено на моем хосте. –

0

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

Общими ошибками для такого «белого экрана смерти» являются синтаксические ошибки в скрипте PHP, но, похоже, все в порядке. Однако некоторые хост-провайдеры отключают некоторые функции, такие как функция mail(), чтобы избежать сценариев, отправляющих спам-сообщения. В этом случае функция mail() может вызвать внутреннюю ошибку, которая останавливает выполнение сценария в этой точке. Так как это до того момента, когда в вашем скрипте печатается какой-либо HTML-код, это может быть причиной ошибки.

+0

Спасибо! Мой хост запрещает видеть файлы журнала сервера. И, как вы можете видеть в моем обновленном сообщении, я могу отправить электронное письмо с другим скриптом. Я только что получил сообщение от поддержки, они сказали мне, что ошибка в этом фрагменте кода -

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