Witam.
Na początku używałem formularza z wykorzystaniem funkcji mail();
Tutaj funkcją if (!$send) sprawdzałem czy formularz został już wysłany, a jeśli jeszcze nie (i tylko wtedy) to był wyświetlany formularz. Dodatkowo, jeśli nie było wpisanej treści, pod formularzem pojawiało się ostrzeżenie.
Teraz chcę zrobić to samo tylko z wykorzystaniem phpmailer, i jest problem ze sprawdzaniem czy formularz został wysłany. Chodzi o to, że powyżej były dwa skrypty php - wysłanie formularza uruchamiało pierwszy skrypt, przy czym w drugim skrypcie można było bez problemu jeszcze raz sprawdzić, czy formularz był wysłany, i zależnie od tego wyświetlić pole do wpisywania tekstu bądź nie.
W przypadku phpmailer (odwoływanie się do zmiennych za pomocą $mail->) robi się problem.
Skrypt z wykorzystaniem phpmailer wygląda tak:
No i problemem jest funkcja if (!$mail->Send()) w drugim skrypcie (nie idzie się dostać do zmiennej poprzez $mail-> bo jest poza zasięgiem pierwszego skryptu...
Serwer zwraca komunikat:
Fatal error: Call to a member function Send() on a non-object in /www/domena/wysylka.php on line 101
a ja nie mam pomysłu co dalej...
----- edit --------
Rozwiązałem problem stosując if (($_POST['tresc'] == "")). Działa tak samo
Na początku używałem formularza z wykorzystaniem funkcji mail();
Code:
<?php
if ($_POST['bt'] == "Wyslij formularz") { /* sprawdzam czy formularz został wysłany */
if (($_POST['tresc'] != "")) { /* sprawzdam czy każde pole jest wypełnione */
$send = mail("adres@o2.pl", "Nadesłano uwagę", $_POST['tresc'],"From: www <".$_POST['email'].">");
if ($send) /* sprawdzam czy wiadomosc została wysłana */
$message = "<b>Wiadomosć została wysłana";
else
$message = "<b>Widomosć nie została wysłana, proszę ponowić próbę";
} else
$message = "<b>Aby móc przesłać wiadomosć należy najpierw wpisać ja w biały formularz powyżej.</b>";
}
?>
<?php if (!$send)
{ ?>
<p>Jeżeli
masz fajny pomysł lub uwagę...
<form action="" method="post">
<textarea name="tresc" ></textarea><br><br>
<input type="submit" name="bt" value="Wyslij formularz" />
</form>
<?php
}
?>
<p><?php echo $message ?></p>
Tutaj funkcją if (!$send) sprawdzałem czy formularz został już wysłany, a jeśli jeszcze nie (i tylko wtedy) to był wyświetlany formularz. Dodatkowo, jeśli nie było wpisanej treści, pod formularzem pojawiało się ostrzeżenie.
Teraz chcę zrobić to samo tylko z wykorzystaniem phpmailer, i jest problem ze sprawdzaniem czy formularz został wysłany. Chodzi o to, że powyżej były dwa skrypty php - wysłanie formularza uruchamiało pierwszy skrypt, przy czym w drugim skrypcie można było bez problemu jeszcze raz sprawdzić, czy formularz był wysłany, i zależnie od tego wyświetlić pole do wpisywania tekstu bądź nie.
W przypadku phpmailer (odwoływanie się do zmiennych za pomocą $mail->) robi się problem.
Skrypt z wykorzystaniem phpmailer wygląda tak:
Code:
<?php
require("class.phpmailer.php");
if ($_POST['bt'] == "Wyslij formularz") { /* sprawdzam czy formularz został wysłany */
if (($_POST['tresc'] != "")) { /* sprawzdam czy każde pole jest wypełnione */
$mail = new PHPMailer();
$mail->IsSMTP(); // telling the class to use SMTP
$mail->Host = "poczta.o2.pl"; // specify main and backup server
$mail->SMTPAuth = true; // turn on SMTP authentication
$mail->CharSet = 'iso-8859-2';
$mail->Username = 'user'; //SMTP username
$mail->Password = 'pass'; // SMTP password
$mail->From = 'adres@o2.pl';
$mail->FromName ='www';
$mail->AddAddress("adres2@o2.pl");
$mail->Subject = "Nadesłano uwagę";
$mail->Body = $tresc;
$mail->WordWrap = 50;
if(!$mail->Send())
{
$message = "<b>Widomosć nie została wysłana, proszę ponowić próbę</b>";
}
else
{
$message = "<b>Wiadomosć została wysłana pomyslnie.";
}
} else
$message = "<b>Aby móc przesłać wiadomosć należy najpierw wpisać ja w biały formularz powyżej.</b>";
}
?>
<?php if (!$mail->Send())
{ ?>
<p>Jeżeli
masz fajny pomysł lub uwagę...<br>
<form action="" method="post">
<textarea name="tresc" ></textarea><br><br>
<input type="submit" name="bt" value="Wyslij formularz" />
</form>
<?php
}
?>
<p><?php echo $message ?></p>
No i problemem jest funkcja if (!$mail->Send()) w drugim skrypcie (nie idzie się dostać do zmiennej poprzez $mail-> bo jest poza zasięgiem pierwszego skryptu...
Serwer zwraca komunikat:
Fatal error: Call to a member function Send() on a non-object in /www/domena/wysylka.php on line 101
a ja nie mam pomysłu co dalej...
----- edit --------
Rozwiązałem problem stosując if (($_POST['tresc'] == "")). Działa tak samo
