2014-02-12 4 views
1

У меня есть этот файл сделанный мною для PHPMailer (mail.php):PHPMailer функция не входит в

<?php 
function Send($to,$subject,$msg,$from){ 
require("class.phpmailer.php"); 
$mail = new PHPMailer(); 
$mail->IsSMTP(); // telling the class to use SMTP 
$mail->Host  = "smtp.com"; // SMTP server 
$mail->SMTPAuth = true;        // Enable SMTP authentication 
$mail->Username = 'user';       // SMTP username 
$mail->Password = 'secret';       // SMTP password 
$mail->From  = "$from"; 
$mail->AddAddress("$to"); 
$mail->Subject = "$subject"; 
$mail->Body  = "$msg"; 
$mail->WordWrap = 50; 
if(!$mail->Send()) { 
echo 'Message was not sent.'; 
echo 'Mailer error: ' . $mail->ErrorInfo; 
} else { 
echo 'Message has been sent.'; 
} 
} 
} 
if(function_exists("Send")){ 
    echo "Function is defined"; 
} 
else{ 
    echo "Function isn't defined"; 
} 

?> 

И я включил его в мой контактный файл обработки формы PHP (report.php):

<html> 
<head> 
    <title>Aliens Abducted Me - Report an Abduction</title> 
</head> 
<body> 
    <h2>Aliens Abducted Me - Report an Abduction</h2> 
    <?php 
    $url="http://127.0.0.1/phpmailer/mail.php"; 
    echo "$url"; 
    include_once($url); 
     $name=$_POST['firstname']." ".$_POST['lastname']; 
     $how_many=$_POST['howmany']; 
     $what_they_did=$_POST['whattheydid']; 
     $other=$_POST['other']; 
     $when_it_happened=$_POST['whenithappened']; 
     $how_long=$_POST['howlong']; 
     $alien_description=$_POST['aliendescription']; 
     $fang_spotted=$_POST['fangspotted']; 
     $email=$_POST['email']; 

     $to="[email protected]"; 
     $subject='Aliens Abducted Me - Abduction Report'; 
     $msg="$name was abducted $when_it_happened and was gone for $how_long.\n". 
      "Number of Aliens : $how_many\n". 
      "Alien description : $alien_description\n". 
      "What they did : $what_they_did\n". 
      "Fang spotted : $fang_spotted\n". 
      "Other comments : $other"; 

     Send($to,$subject,$msgm,$mail); //this is the problematic line 

     echo 'Thanks for submitting the form.<br />'; 
     echo 'You were abducted '.$when_it_happened.'<br />'; 
     echo ' and were gone for '.$how_long.'<br />'; 
     echo "Number of aliens : ".$how_many.'<br />'; 
     echo "Describe them : ".$alien_description.'<br />'; 
     echo "The aliens did this : ".$what_they_did.'<br />'; 
     echo "Was Fang there?".$fang_spotted.'<br />'; 
     echo "Other comments : ".$other.'<br />'; 
     echo "Your email address is ".$email; 

    ?> 

Это просто Exemple из книги я учусь PHP из так что не урод:))) ... Моя проблема заключается в том, что когда я отправить форму, я всегда получаю эту ошибку:

Fatal error: Call to undefined function Send() in path/report.php on line 30 

Ошибка возникает, даже если function_exists() имеет значение true ... Почему?

EDIT:

Я работаю на локальный муравей эти пути к моим файлам:

mail.php : localweb\phpmailer\mail.php 
report.php : localweb\hf_php\ch01\initial\aliens\report.php 

Спасибо!

+0

вы работаете на Localhost? – Kishore

+0

похоже на этот пост. попытайтесь следовать этому. [ссылка] http://stackoverflow.com/questions/10221778/phpmailer-fatal-error-call-to-a-member-function-send-on-a-non-object [ссылка] – Kishore

+0

@nevermind .. Делает это дело? Потому что файл сделан мной в этом каталоге. – csanonymus

ответ

3

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

Учитывая структуру файла:

mail.php: localweb\phpmailer\mail.php 
report.php: localweb\hf_php\ch01\initial\aliens\report.php 

В report.php включаемом заявление должно быть:

include_once("../../../../phpmailer/mail.php"); 
+0

К сожалению, о том, что первый комментарий, я был неправ, запомнился;) – Wrikken

+0

В report.php я понял, что функция существует, поэтому я уверен, что файл включен, но почему не выполняется? – csanonymus

+1

@csanonymus Когда вы [include_once] (http://www.php.net/manual/en/function.include-once.php) файл через сеть, то, что вы делаете, включает в себя _result_ выполнения этого скрипта , а не сам сценарий. Он имеет такой же эффект, как если бы вы открыли http://127.0.0.1/phpmailer/mail.php в своем веб-браузере и копировали и вставляли результат в свой скрипт. Вы видите «Функция определена», потому что это то, что выдает mail.php. –

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