2015-05-01 3 views
0

Так как в заголовке указано, что я получаю пустые письма из моей контактной формы. Ниже приведен код php. Я проверил значение $ msg, и он выглядит правильно, я также искал тонну, и я не могу найти ни одной стандартной причины, которая применима ко мне.Моя функция php mail отправляет пустые сообщения

<?php 
main(); 

function main() { 
    $posted = setVariables(); 
    $msg = setMessage($posted); 
    $result = sendMail($msg); 
    userFeedback($result); 
} 

function setVariables() { 
    $name; 
    if (isset($_POST['name'])){ 
     $name=$_POST['name']; 
     if ($name == null) { 
      $name = "ERROR - name is null"; 
     } 
    } 

    $email; 
    if (isset($_POST['email'])){ 
     $email=$_POST['email']; 
     if ($email == null) { 
      $email = "ERROR - email is null"; 
     } 
    } 

    $enquiry; 
    if (isset($_POST['enquiry'])){ 
     $enquiry=$_POST['enquiry']; 
     if ($enquiry == null) { 
      $enquiry = "ERROR - enquiry is null"; 
     } 
    } 

    $message; 
    if (isset($_POST['message'])){ 
     $message=$_POST['message']; 
     if ($message == null) { 
      $message = "ERROR - message is null"; 
     } 
    } 

    $posted = array($name,$email,$enquiry,$message); 
    return $posted; 
} 

function setMessage($posted) { 
    $msg = "Name: " . $posted[0] . "\r\nEmail: " . $posted[1] . "\r\nEnquiry: " . $posted[2] . "\r\nMessage: " . $posted[3]; 
    $msg = wordwrap($msg,70); 
    $msg = Trim(stripslashes($_POST['Message'])); 
    return $msg; 
} 

function sendMail($msg) { 
    $result = mail("[email protected]","Contact From Portfolio",$msg, "From: <[email protected]>"); 
    return $result; 
} 

function userFeedback($result) { 
    if ($result == false) { 
     echo "Message failed to send, please inform me through my email address. [email protected]"; 
    } else { 
     echo "Message Sent!<br/><br/>Returning you to <a href='http://www.georgeappleton.co.uk'>georgeappleton.co.uk</a> in 5 seconds"; 
    } 
    echo "<script>setTimeout(function() {window.location = 'http://www.georgeappleton.co.uk';},5000);</script>"; 
} 
?> 

Спасибо, ребята, ценят это много

-Shardj

+0

попробуйте передать значения '$ _POST' в качестве параметров функции' setVariables', может возникнуть проблема с областью ваших функций. –

+0

В 'setMessage' вы заменяете' Name: ... 'stuff' $ _POST ['Message'] '. Вы действительно хотели это сделать? 'setVariables' уже поставил' $ _POST ['message'] 'там. – Barmar

+1

@MarkHill '$ _POST' является супер-глобальным, он доступен во всех областях. – Barmar

ответ

2

избавиться от этой линии:

$msg = Trim(stripslashes($_POST['Message'])); 

Это перезапись $msg с содержимым несуществующего параметра. Он уже содержит текст сообщения, который был в $posted[3].

+0

Это, безусловно, правильный ответ. –

+0

Убедитесь, что включена функция error_reporting (E_ALL). Вы получили бы предупреждение о неопределенном индексе 'Message', и это могло бы сэкономить вам много головной боли. – Barmar

-2

Это ваша переменная сфера. $ имя жгутов setVariables()

$name=$_POST['name']; 
    if (strlen($name) < 1) {$name = "ERROR - name is null";} 

    $email=$_POST['email']; 
    if (strlen($email) < 1) {$email = "ERROR - email is null";} 

    $enquiry=$_POST['enquiry']; 
    if (strlen($enquiry) < 1) {$enquiry = "ERROR - enquiry is null";} 

    $posted = array($name,$email,$enquiry,$message); 

    $msg = setMessage($posted); 
    $result = sendMail($msg); 
    userFeedback($result); 
+2

В чем проблема? Он никогда не использует '$ name' вне функции. – Barmar

+0

@ Понятно, не могли бы вы подробнее рассказать об этом ответе, чтобы уточнить. –

+0

Где вы установили '$ posted' в свой ответ? – Barmar

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