Witam serdecznie,
Na stronie www.mirvanos.org dostępny jest bezpłatny skrypt PHP/xHTML o funkcji generowania wiadomości Mail na podstawie wpisanych wartości w Formularzu na stronie WWW.
Oczywiście w swojej prostocie skrypt działa i ma się dobrze. Po mojej stronie również serwer puszcza takowego maila i wszystko jest OK, ale mam pytanie:
Otóż chciałbym poszerzyć ilość zapytań jakie trzeba w Formularzu wypełnić i chciałbym, żeby takowe spłynęły również na skrzynkę mailową. Problem jest tego typu, że kombinuję już drugi dzień i nie jestem w stanie tego ogarnąć.
Wklejam oryginalny KOD Skryptu:
<?php
class mirvanosContact {
var $content = '';
var $template = '';
var $mail_email = '';
var $mail_name = '';
var $mail_content = '';
public function __construct() {
if(!file_exists('mirvanos_contact_config.php')) {
$m = 'Brak pliku konfiguracyjnego mirvanos_contact_config.php !';
echo $this->errorMessage($m);
echo $this->alertMessage($m);
exit;
}
require_once('mirvanos_contact_config.php');
if(!file_exists('mirvanos_contact_template.html')) {
$m = 'Brak pliku szablonu mirvanos_contact_template.html !';
echo $this->errorMessage($m);
echo $this->alertMessage($m);
exit;
}
$this->template = file_get_contents('mirvanos_contact_template.html');
if(defined('USE_CAPTCHA') AND USE_CAPTCHA) {
$captcha = file_get_contents('mirvanos_contact_captcha.html');
$this->template = str_replace('<!--CAPTCHA-->', $captcha, $this->template);
}
// Uwaga !
$this->template = "\n".'<!-- Skrypt kontaktu by mirvanos.org -->'."\n".$this->template;
if(defined('INCLUDE_CSS') AND strlen(INCLUDE_CSS)>0)
echo '<style type="text/css">'."\n".file_get_contents(INCLUDE_CSS)."\n".'</style>';
if(isset($_POST['mirvanos_content']) AND !empty($_POST['mirvanos_content']))
$this->parse();
else
$this->content .= $this->template;
}
private function parse() {
if(!isset($_POST['mirvanos_email']) OR empty($_POST['mirvanos_email']) OR !$this->checkEmail(trim($_POST['mirvanos_email']))) {
$m = 'Proszę podać swój prawidłowy adres email';
$this->content .= $this->errorMessage($m);
$this->content .= $this->alertMessage($m);
$this->content .= $this->template;
return false;
}
$this->mail_email = trim($_POST['mirvanos_email']);
if(!isset($_POST['mirvanos_name']) OR empty($_POST['mirvanos_name'])) {
$m = 'Proszę się przedstawić (imię i nazwisko)';
$this->content .= $this->errorMessage($m);
$this->content .= $this->alertMessage($m);
$this->content .= $this->template;
return false;
}
$this->mail_name = strip_tags(trim($_POST['mirvanos_name']));
if(defined('USE_CAPTCHA') AND USE_CAPTCHA)
if(!isset($_POST['mirvanos_antibot']) OR !$this->checkCode($_POST['mirvanos_antibot'])) {
$m = 'Proszę dokładnie przepisać kod z obrazka';
$this->content .= $this->errorMessage($m);
$this->content .= $this->alertMessage($m);
$this->content .= $this->template;
return false;
}
$this->mail_content = 'Nowa wiadomość od <b> '.$this->mail_name.' </b> <br />'."\n";
$this->mail_content .= 'Adres email <a href="'.$this->mail_email.'">'.$this->mail_email.' </a> <br />'."\n";
$this->mail_content .= 'Adres IP <b> '.$_SERVER["REMOTE_ADDR"].' </b> <br />'."\n\n";
$this->mail_content .= " <br /><br />\n\n ";
$this->mail_content .= trim( $_POST['mirvanos_content'] );
if(USE_ICONV_CONVERT) {
$this->mail_content = iconv('UTF-8', 'ISO-8859-2', $this->mail_content);
$this->mail_name = iconv('UTF-8', 'ISO-8859-2', $this->mail_name);
}
if($this->sendMail()) {
$this->mail_email = '';
$this->mail_name = '';
$this->mail_content = '';
$this->template = '';
if(defined('USE_CAPTCHA') AND USE_CAPTCHA)
unset($_SESSION['AntitokenID']);
}
}
private function checkEmail($email='') {
return eregi("^[_.0-9a-z-]+@([0-9a-z][0-9a-z-]+.)+[a-z]{2,4}$" , $email );
}
private function checkCode($code='')
{
if(empty($code)) return false;
@ session_start();
if(!isset($_SESSION['AntitokenID']) OR empty($_SESSION['AntitokenID']))
return false;
if($_SESSION['AntitokenID']!=$code)
return false;
return true;
}
private function sendMail() {
require_once(CLASS_PHPMAILER);
$mail = new PHPMailerLite();
$mail->isMail();
$mail->setFrom($this->mail_email, $this->mail_name);
$mail->CharSet = 'iso-8859-2';
if(USE_ICONV_CONVERT)
{
$mail->Subject = iconv('UTF-8', 'ISO-8859-2', MAIL_SUBJECT);
}
else
$mail->Subject = MAIL_SUBJECT;
$mail->MsgHTML( $this->mail_content );
$mail->AddAddress(ADRES_EMAIL, TWOJA_NAZWA);
if(!$mail->Send()) {
$m = 'Wystąpił błąd w wysyłce maila :( '.$mail->ErrorInfo." <br /> \n";
$this->content .= $this->errorMessage($m);
$this->content .= $this->alertMessage($m);
return false;
}
// Clear all addresses and attachments
$mail->ClearAddresses();
$mail->ClearAttachments();
$m = WIADOMOSC_ZOSTALA_WYSLANA;
$this->content .= $this->errorMessage($m);
$this->content .= $this->alertMessage($m);
return true;
}
private function alertMessage($message='') {
return '<script type="text/javascript">
alert(\''.$message.'\');
</script>'."\n";
}
private function errorMessage($message='') {
return '<b class="mirvanos_error">'.$message.'</b>';
}
public function getHtml() {
return $this->content;
}
public function getMailName() {
return $this->mail_name;
}
public function getMailEmail() {
return $this->mail_email;
}
public function getMailContent() {
return $this->mail_content;
}
}
W sekcji CLASS deklaruję VAR $mail_nazwauzytkownika = ''; oraz w kodzie kopiuję pętlę IF:
if(!isset($_POST['mirvanos_email']) OR empty($_POST['mirvanos_email']) OR !$this->checkEmail(trim($_POST['mirvanos_email']))) {
$m = 'Proszę podać swój prawidłowy adres email';
$this->content .= $this->errorMessage($m);
$this->content .= $this->alertMessage($m);
$this->content .= $this->template;
return false;
}
$this->mail_email = trim($_POST['mirvanos_email']);
zmieniając mirvanos_email na mirvanos_nazwauzytkownika potem w sekcji generowania maila dodaję również:
if($this->sendMail()) {
$this->mail_email = '';
$this->mail_name = '';
$this->mail_content = '';
$this->mail_nazwauzytkownika ='';
$this->template = '';
if(defined('USE_CAPTCHA') AND USE_CAPTCHA)
unset($_SESSION['AntitokenID']);
ale albo mi nie działa program albo korzysta z tej samej CLASS i wysyła maila z ominięcie IMIE I NAZWISKO a w miejsce tego wstawia NAZWA UZYTKOWNIKA...
Czy ktoś z Was mógłby mi na tym przykładzie KODU wyjaśnić co i jak robię źle bo nie mam pojęcia jak rozbudować ten KOD o nowe atrybuty wprowadzane z poziomu przeglądarki WWW, żeby zostały ujęte w treści generowanego i dostarczonego maila...