ContactMe (MailForm)

V tejto téme sa nachádzajú snippety (rozšírenia) pre Etomite.

Moderátor: Moderators

Používateľov profilový obrázok
Spade
etoModerator
Príspevky: 171
Dátum registrácie: Po Apr 17, 2006 2:24 pm
Kontaktovať používateľa:

ContactMe (MailForm)

Príspevok od používateľa Spade »

Ako sa prosim vola snippet, ktory si pouzil, _rasel^ na svojom webe ako Mail Form? Ak by sa dalo, hod aj zdrojak. Diky moc.
Ách deti moje zlaté, milujte sa a zložte sa. Nech si zvíratá berú od vás príklad.
Človečina, RND.
R - stick
Moderator & CLT
Moderator & CLT
Príspevky: 215
Dátum registrácie: Pi Sep 23, 2005 10:59 am
Bydlisko: Vysoké Studnice (u Jihlavy)
Kontaktovať používateľa:

Príspevok od používateľa R - stick »

Já jsem použil toto:

Kód: Vybrať všetko

/* ContactMe 0.1 snippet for Etomite by Vassili Slessarenko    */
/* This snippet generates a very simple form, which can be used for contact purposes within a website.
   It first outputs the form, then it checks the e-mail address that the sender has given and then 
   returns a "message-has-been-sent" message.
   Do make sure the page is non-Cacheable!        */

/* Configuration Section (Feel free to change these as needed). */

## This is probably the most important part of the script... It contains the address to which the e-mails will be
## so make sure the address is correct. - sem zadáš svůj mail

$address_to = 'info@tvojedomena.cz';

## These 3 change what is at first displayed in the form fields (once clicked on these disappear):

$initial_name_string = '';
$initial_email_string = '';
$initial_subject_string = '';

## These will determine the size of the fields and should be pretty self-explanatory. Tento blok určuje velikost políček formuláře

$name_width = '50';
$email_width = '50';
$subject_width = '50';
$text_cols = '60';
$text_rows = '8';

# $subject_prepend variable can be used to supply a string which will always come before the user written subject.
# This means you can filter the e-mails by subject and put them into a separate folder. Přepiš si subjekt!!

$subject_prepend = 'SFERA BUBENIKU';

## $email_sent_msg - This sets the message that the sender sees when the e-mail has been successfully sent. 

$email_sent_msg = '<h2>Děkujeme Vám za Vaši zprávu!</h2>'."\n";
$email_sent_msg .= "<p>Vaše zpráva byla úspěšně odeslána. </p>"."\n";


/* ------------------------------------------------------*/
/* Don't mess with this unless you know what ur doing!!! */
/* This is the actual code...                            */
/* ------------------------------------------------------*/


		$mail_form = '';
                $mail_form .= '<form action="" method="post" id="contact_me">'." \n ";
		$mail_form .= '<p><label for="name">Vaše jméno:<br />'." \n ";
		$mail_form .= '<input type="text" name="name" id="name"';
		


		if (isset($_POST['name'])) { 
			$mail_form .= " value=\"".$_POST['name']."\""; 
		} 
		else { 
			$mail_form .= ' value="'.$initial_name_string.'"'; 
		} 
		
		if (!isset($_POST['name'])) { 
			$mail_form .= " onclick=\"document.forms[0].name.value=''\" "; 
		}

                $mail_form .= 'size="'.$name_width.'" /></label>'." \n";
		$mail_form .= '<label for="email">Váš e-mail:<br />'." \n";
		$mail_form .= '<input type="text" name="email" id="email" ';

		if (isset($_POST['email'])) { 
			$mail_form .= "value=\"".$_POST['email']."\" "; 
		} else { 
			$mail_form .= 'value="'.$initial_email_string.'" '; 
		} 
		if (!isset($_POST['email'])) { 
			$mail_form .= "onclick=\"document.forms[0].email.value=''\" "; 
		}

		$mail_form .= 'size="'.$email_width.'" /></label>'."\n";
		$mail_form .= '<label for="subject">Předmět:<br />'."\n";
		$mail_form .= '<input type="text" name="subject" id="subject" ';
		
		if (isset($_POST['subject'])) {
			$mail_form .= "value=\"".$_POST['subject']."\" "; 
		} else {
			$mail_form .= 'value="'.$initial_subject_string.'" '; 
		}
		
		if (!isset($_POST['subject'])) { 
			$mail_form .= "onclick=\"document.forms[0].subject.value=''\" "; 
		} 
		$mail_form .= 'size="'.$subject_width.'" /></label>'."\n";
		$mail_form .= '<label for="content_text">Vaše zpráva:<br />'."\n";
		$mail_form .= '<textarea name="content_text" id="content_text" rows="'.$text_rows.'" cols="'.$text_cols.'">';
		
		if (isset ($_POST['content_text'])) { 
			$mail_form .= $_POST['content_text']; 
		}
		$mail_form .= '</textarea></label></p>'."\n";
		$mail_form .= '<p><input type="hidden" name="send_email" value="sent" />'."\n";
		$mail_form .= '<input type="submit" value="odeslat" /><input type="Reset" value="vymazat" /></p>'."\n";
		$mail_form .= '</form>'."\n";
		$mail_form .= '<p>Na tlačítko "odeslat" stačí kliknout jen jedenkrát.... Děkujeme.</p>'."\n";


if (isset($_POST['send_email']) && $_POST['send_email'] == 'sent') {
	
/* check e-mail variable, output errors, then send the e-mail + thank you message */

	
		/* take a given email address and split it into the  
		username and domain. */
	
		list($userName, $mailDomain) = split("@", $_POST['email']);
		if (checkdnsrr($mailDomain, "MX")) {

		 // this is a valid email domain! -> send the mail and say thanks!
		 	
		 	$name = $_POST['name'];
		 	$email = $_POST['email'];
		 	$subject = "$subject_prepend".$_POST['subject'];
		 	$content_text = $_POST['content_text'];
		 	$message = stripslashes($content_text);
		 	
		 	$headers = "MIME-Version: 1.0\r\n";
		 	$headers .= "Content-type: text; charset=windows-1250\r\n";
			$headers .= "From: $name <$email>\r\n";

			$headers .= "X-Priority: 1\r\n";
			$headers .= "X-Mailer: Etomite PHP mailer\r\n";
			
			mail ($address_to, $subject, $message, $headers);
			
			$output = '';
			$output .= $email_sent_msg;
			return $output;
			
		
		} else {
			/* return an error and add the form */
 			$output = '';
			$output .= '<p class="error">Promiňte, zadal jste chybný mail. Opravte jej a zprávu znovu odešlete. Děkujeme.</p>';
                        $output .= $mail_form;
			return $output;
		}
	
} else {
	/* return an html e-mail form */
	$output = '';
        $output .= $mail_form;
	return $output;
}
Je to lokalizované, funkční a odzkoušené. Akorát si uprav nastavení v snippettu (mail)
Používateľov profilový obrázok
_rasel^
ETOMITE Admin
ETOMITE Admin
Príspevky: 1122
Dátum registrácie: Ut Sep 20, 2005 1:03 am
Bydlisko: Košice (SR)
Kontaktovať používateľa:

Príspevok od používateľa _rasel^ »

Mierne upraveny (lokalizacia + oddelenie textu od kodu) snippet ContactMe pre Etomite:

Kód: Vybrať všetko

/*Adresa prijimateľa*/
$address_to = 'email@email.sk';

/*Predpona predmetu*/
$subject_prepend = 'Etomite - ';

/*Text pred*/
$your_name = 'Vaše meno:';
$your_email = 'Váš e-mail:';
$your_subject = 'Predmet:';
$your_email_content = 'Obsah e-mailu:';

/*Text zobrazeny v poliach, ktore po kliknuti zmyznu*/
$initial_name_string = '';
$initial_email_string = '';
$initial_subject_string = '';

/*Text tlačidiel*/
$button_send = 'Poslať e-mail';
$button_reset = 'Vymazať';

$info_send = '<p>Prosím neklikajte na "Poslať e-mail" viac ako jeden-krát.</p>';
$email_error = '<p class="error"><b>Please Insert a Valid E-Mail, so that we could e-mail you back.</b></p>';
$email_charset = 'iso-8859-1';

/*Rozmery poli*/
$name_width = '40';
$email_width = '40';
$subject_width = '40';
$text_cols = '40';
$text_rows = '5';

/*Sprava po odoslani e-mailu*/
$email_sent_msg = '<b>Ďakujem za Váš e-mail!</b>'."\n";
$email_sent_msg .= "<p>Váš e-mail bol úspešne odoslaný! Odpoviem naňho čo najskôr ako bude možné.</p>"."\n";


/* ------------------------------------------------------*/
/* Don't mess with this unless you know what ur doing!!! */
/* This is the actual code...                            */
/* ------------------------------------------------------*/


		$mail_form = '';
                $mail_form .= '<form action="" method="post" id="contact_me">'." \n ";
		$mail_form .= '<table style="margin: 0px;"><tr><td><label for="name">'.$your_name.'</label></td><td>'." \n ";
		$mail_form .= '<input type="text" name="name" id="name"';
		


		if (isset($_POST['name'])) { 
			$mail_form .= " value=\"".$_POST['name']."\""; 
		} 
		else { 
			$mail_form .= ' value="'.$initial_name_string.'"'; 
		} 
		
		if (!isset($_POST['name'])) { 
			$mail_form .= " onclick=\"document.forms[0].name.value=''\" "; 
		}

                $mail_form .= 'size="'.$name_width.'" /></td></tr>'." \n";
		$mail_form .= '<tr><td><label for="email">'.$your_email.'</label></td><td>'." \n";
		$mail_form .= '<input type="text" name="email" id="email" ';

		if (isset($_POST['email'])) { 
			$mail_form .= "value=\"".$_POST['email']."\" "; 
		} else { 
			$mail_form .= 'value="'.$initial_email_string.'" '; 
		} 
		if (!isset($_POST['email'])) { 
			$mail_form .= "onclick=\"document.forms[0].email.value=''\" "; 
		}

		$mail_form .= 'size="'.$email_width.'" /></td></tr>'."\n";
		$mail_form .= '<tr><td><label for="subject">'.$your_subject.'</label></td><td>'."\n";
		$mail_form .= '<input type="text" name="subject" id="subject" ';
		
		if (isset($_POST['subject'])) {
			$mail_form .= "value=\"".$_POST['subject']."\" "; 
		} else {
			$mail_form .= 'value="'.$initial_subject_string.'" '; 
		}
		
		if (!isset($_POST['subject'])) { 
			$mail_form .= "onclick=\"document.forms[0].subject.value=''\" "; 
		} 
		$mail_form .= 'size="'.$subject_width.'" /></td></tr>'."\n";
		$mail_form .= '<tr><td><label for="content_text">'.$your_email_content.'</label></td><td>'."\n";
		$mail_form .= '<textarea name="content_text" id="content_text" rows="'.$text_rows.'" cols="'.$text_cols.'">';
		
		if (isset ($_POST['content_text'])) { 
			$mail_form .= $_POST['content_text']; 
		}
		$mail_form .= '</textarea></td></tr>'."\n";
		$mail_form .= '<tr><td>&nbsp;</td><td><input type="hidden" name="send_email" value="sent" />'."\n";
		$mail_form .= '<input type="submit" value="'.$button_send.'" />&nbsp;<input type="reset" value="'.$button_reset.'" /></td></tr></table>'."\n";
		$mail_form .= '</form>'."\n";
		$mail_form .= $info_send;


if (isset($_POST['send_email']) && $_POST['send_email'] == 'sent') {
	
/* check e-mail variable, output errors, then send the e-mail + thank you message */

	
		/* take a given email address and split it into the  
		username and domain. */
	
		list($userName, $mailDomain) = split("@", $_POST['email']);
		if (checkdnsrr($mailDomain, "MX")) {

		 // this is a valid email domain! -> send the mail and say thanks!
		 	
		 	$name = $_POST['name'];
		 	$email = $_POST['email'];
		 	$subject = "$subject_prepend".$_POST['subject'];
		 	$content_text = $_POST['content_text'];
		 	$message = stripslashes($content_text);
		 	
		 	$headers = "MIME-Version: 1.0\r\n";
		 	$headers .= "Content-type: text; charset='.$email_charset.'\r\n";
			$headers .= "From: $name <$email>\r\n";

			$headers .= "X-Priority: 1\r\n";
			$headers .= "X-Mailer: Etomite PHP mailer\r\n";
			
			mail ($address_to, $subject, $message, $headers);
			
			$output = '';
			$output .= $email_sent_msg;
			return $output;
			
		
		} else {
			/* return an error and add the form */
 			$output = '';
			$output .= $email_error;
                        $output .= $mail_form;
			return $output;
		}
	
} else {
	/* return an html e-mail form */
	$output = '';
        $output .= $mail_form;
	return $output;
}
Demo:

Kód: Vybrať všetko

http://www.rasel.atknet.sk/e-mail
..:: Etomite CMS → Rulezzz !.!.!. ::..
gorge_No1
Light Expert
Light Expert
Príspevky: 27
Dátum registrácie: Ut Sep 20, 2005 10:04 pm
Kontaktovať používateľa:

Príspevok od používateľa gorge_No1 »

nikde nemůžu najít proměnou, která brání poslání emailu na jinou adresu, než s příponou cz. :eek:
Dá někdo tip?
Používateľov profilový obrázok
_rasel^
ETOMITE Admin
ETOMITE Admin
Príspevky: 1122
Dátum registrácie: Ut Sep 20, 2005 1:03 am
Bydlisko: Košice (SR)
Kontaktovať používateľa:

Príspevok od používateľa _rasel^ »

Myslíš: Že ak niekto do poľa mailu odosielateľa nezadá mail s českou koncovkou, tak mail neodošle a vyhodí chybovú hlášku?
..:: Etomite CMS → Rulezzz !.!.!. ::..
gorge_No1
Light Expert
Light Expert
Príspevky: 27
Dátum registrácie: Ut Sep 20, 2005 10:04 pm
Kontaktovať používateľa:

Príspevok od používateľa gorge_No1 »

_rasel^ napísal:Myslíš: Že ak niekto do poľa mailu odosielateľa nezadá mail s českou koncovkou, tak mail neodošle a vyhodí chybovú hlášku?
ano, přesně tak. zkoušel jsem to s koncovkou .info a vyhazuje to chybu

Kód: Vybrať všetko

Prosím vložte platnou e-mailovou adresu, abych Vám mohl odpovědět.
Používateľov profilový obrázok
_rasel^
ETOMITE Admin
ETOMITE Admin
Príspevky: 1122
Dátum registrácie: Ut Sep 20, 2005 1:03 am
Bydlisko: Košice (SR)
Kontaktovať používateľa:

Príspevok od používateľa _rasel^ »

Ak chce niekto v snippete používať diakritiky vrátane diakritiky v hlavičke samotného mailu [znaková sada UTF-8], tak treba kód upraviť na:

Kód: Vybrať všetko

$message = base64_encode($message);
$headers = "MIME-Version: 1.0\n";
$headers .= "Content-Type: text/plain; charset=\"UTF-8\"\n";
$headers .= "Content-Transfer-Encoding: base64\n";
$headers .= "From: meno <moj@mail.sk>\n";
$headers .= "Reply-To: meno <moj@mail.sk>\n";
$subject = "=?utf-8?B?".base64_encode($subject)."?=";

mail ($address_to, $subject, $message, $headers);
..:: Etomite CMS → Rulezzz !.!.!. ::..
R - stick
Moderator & CLT
Moderator & CLT
Príspevky: 215
Dátum registrácie: Pi Sep 23, 2005 10:59 am
Bydlisko: Vysoké Studnice (u Jihlavy)
Kontaktovať používateľa:

Príspevok od používateľa R - stick »

Bohužel sem musím přidat problém s tímto snippetem - byl použitý pro rozesílání spamu. Konkretně jsem s tím měl problém na Magazínu Sféry bubeníků. Snippet jsem dočasně vyřadil. Takže to bude chtít nějaké zabezpečení. Nevíte někdo o něčem?
Používateľov profilový obrázok
_rasel^
ETOMITE Admin
ETOMITE Admin
Príspevky: 1122
Dátum registrácie: Ut Sep 20, 2005 1:03 am
Bydlisko: Košice (SR)
Kontaktovať používateľa:

Príspevok od používateľa _rasel^ »

Tiež mám podobný problém. Vyriešiť by sa to dalo pomocou Captcha obrázku, boti vedia čítať, ale sú našťastie slepý. :D

Riešenie:
Pridať riadky do mail formu:

Kód: Vybrať všetko

  $mail_form .= $etomite->getCaptchaCode() . "<br />\n";
  $mail_form .= "<input type=\"text\" id=\"captcha\" name=\"captcha\" value=\"\" /> &laquo; Bezpečnostný kód (<em>zadajte presne a odzadu!</em>)<br />";
Riadok podmienky:

Kód: Vybrať všetko

if (checkdnsrr($mailDomain, "MX")) {
... nahradiť za:

Kód: Vybrať všetko

if (checkdnsrr($mailDomain, "MX") && $etomite->validCaptchaCode(strrev($_POST['captcha']))) {
Demo: http://www.etomite.sk/kontakt#mail
Naposledy upravil/-a _rasel^ v So Feb 03, 2007 3:01 pm, upravené celkom 1 krát.
..:: Etomite CMS → Rulezzz !.!.!. ::..
Používateľov profilový obrázok
_rasel^
ETOMITE Admin
ETOMITE Admin
Príspevky: 1122
Dátum registrácie: Ut Sep 20, 2005 1:03 am
Bydlisko: Košice (SR)
Kontaktovať používateľa:

Príspevok od používateľa _rasel^ »

Tak toto je už sila. Mam captcha obrázok a dnes mi došiel 2x pamm (boti používajú OCR)... :evil:
Musím niečo iné vymyslieť.

Edit: Upravil som predchádzajúci post. Kód sa bude zadávať odzadu! V Etomite managery (Konfigurácia Etomite - Užívateľské - CAPTCHA Slová:) odporúčam dať nejaké kratšie captcha reťazce...
..:: Etomite CMS → Rulezzz !.!.!. ::..
R - stick
Moderator & CLT
Moderator & CLT
Príspevky: 215
Dátum registrácie: Pi Sep 23, 2005 10:59 am
Bydlisko: Vysoké Studnice (u Jihlavy)
Kontaktovať používateľa:

Príspevok od používateľa R - stick »

2: _rasel^:

Nemohl by jsi sem hodit celý snippet - tak jak to máš na demo odkazu?

Já už se s tím drbu 4 hod a zaboha to nemůžu rozchodit .......
Používateľov profilový obrázok
_rasel^
ETOMITE Admin
ETOMITE Admin
Príspevky: 1122
Dátum registrácie: Ut Sep 20, 2005 1:03 am
Bydlisko: Košice (SR)
Kontaktovať používateľa:

Príspevok od používateľa _rasel^ »

Tak tu je môj kompletný snippet.
  • Je upravený iba pre UTF-8 (obsah a predmet e-mailu).

    Kód: Vybrať všetko

    $email_charset = 'utf-8';
    ...
    $subject = "=?utf-8?B?" . base64_encode($subject) . "?=";
  • Obsahuje overovanie pomocou CAPTCHA obrázku, odzadu!
  • Obsah e-mailu sa naformátuje podľa:

    Kód: Vybrať všetko

    $content_texts = "<!--\nName:    " . $name . "\nE-mail:  " . $email . "\nSubject: " . $_POST['subject'] . "\nIP:      " . $_SERVER['REMOTE_ADDR'] . "\nDate:    " . date('m.d.Y H:m:s') . "\n-->\n\nContent:\n--------\n\n  " . $content_text . "\n\n--\nFrom Etomite Mail Form";
    ... čiže bude vyzerať takto:

    Kód: Vybrať všetko

    <!--
    Name:    Your Name
    E-mail:  your@email.com
    Subject: Subject
    IP:      88.212.21.31
    Date:    05.07.2007 07:05:35
    -->
    
    Content:
    --------
    
      Text e-mailu.
    
    --
    From Etomite Mail Form
  • Stránka na ktorej je umiestnený snippet nesmie byť ukladaná do cache!
Prílohy
contact-me.rar
(1.65 KiB) 572 stiahnutí
..:: Etomite CMS → Rulezzz !.!.!. ::..
R - stick
Moderator & CLT
Moderator & CLT
Príspevky: 215
Dátum registrácie: Pi Sep 23, 2005 10:59 am
Bydlisko: Vysoké Studnice (u Jihlavy)
Kontaktovať používateľa:

Príspevok od používateľa R - stick »

Díky moc .....
R - stick
Moderator & CLT
Moderator & CLT
Príspevky: 215
Dátum registrácie: Pi Sep 23, 2005 10:59 am
Bydlisko: Vysoké Studnice (u Jihlavy)
Kontaktovať používateľa:

Príspevok od používateľa R - stick »

Ještě jeden dotaz - musím upravit kódování - používám win-1250

Jaká bude přesná syntaxe tohoto:

$message = base64_encode($content_texts);

- po nastavení na win-1250 mi to některé znaky píše špatně (takto: diakritika české znaky ě&#154;čř&#158;ýáíé)
Používateľov profilový obrázok
_rasel^
ETOMITE Admin
ETOMITE Admin
Príspevky: 1122
Dátum registrácie: Ut Sep 20, 2005 1:03 am
Bydlisko: Košice (SR)
Kontaktovať používateľa:

Príspevok od používateľa _rasel^ »

Pri Win-1250 je to nepodstatné... kľudne to uprav na:

Kód: Vybrať všetko

$message = $content_texts;
..:: Etomite CMS → Rulezzz !.!.!. ::..
Napísať odpoveď