Autor | Zpráva | ||
---|---|---|---|
xXx Profil * |
#1 · Zasláno: 15. 6. 2014, 22:36:12 · Upravil/a: xXx
Zdravím, snažím se svépomocí udělat formulář pro odesílání e-mailů. Jenže když ho testuji na wz.cz, nic mi nepřijde a nevím kde je chyba (zda-li u wz.cz, nebo na mé straně.
index.php <!DOCTYPE html> <html lang="cs"> <head> <meta charset="utf8"> <title>E-mail</title> <style type="text/css"> @import url(css/screen.css) screen; </style> </head> <body> <form action="odeslat.php" method="post"> <label for="jmeno">Jméno</label> <input name="jmeno" id="jmeno" required><br> <label for="mail">E-mail</label> <input name="mail" id="mail" required><br> <label for="predmet">Předmět</label> <input name="predmet" id="predmet" required><br> <label for="zprava">Text zprávy</label> <textarea name="zprava" id="zprava" required></textarea><br> <label for="captcha"> <? session_start(); require('captcha.php'); $_SESSION['captcha'] = implode('', $pole_captcha); echo 'Opiště tučné znaky: <b>'.$_SESSION['captcha'].'</b>'; ?> </label> <input name="captcha" id="captcha" required><br> <div style="visibility: hidden;"> <label for="pohlavi">Toto pole ponechte prázdné</label> <input name="pohlavi" id="pohlavi"> </div> <button>Odeslat</button> </form> </body> </html> captcha.php <? function captcha() { global $pole_captcha; $pole_znaku = array('1', '2', '3', '4', '5', '6', '7', '8', '9', '0', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z'); $pocet_znaku = rand(3, 6); for($i = 0; $i < $pocet_znaku; $i++) { $pole_captcha[$i] = $pole_znaku[rand(0, count($pole_znaku) - 1)]; } return $pole_captcha; } captcha(); ?> odeslat.php odeslat.php <? session_start(); header('Content-type: text/html;charset=UTF-8'); $jmeno = trim($_POST['jmeno']); $mail = trim($_POST['mail']); $predmet = trim($_POST['predmet']); $zprava = trim($_POST['zprava']); $captcha = $_POST['captcha']; function chybova_zprava($cislo_chyby) { $zpet = '<a href="javascript:self.history.back();">zpět</a>'; switch ($cislo_chyby) { case 0: echo 'Nutno vyplnit všechna pole formuláře. Vraťte se '.$zpet.' a formulář opravte.'; break; case 1: echo 'Neplatný formát e-mailu. Vraťte se '.$zpet.' a zadejte platný e-mail.'; break; case 2: echo 'Pohlaví nevyplňovat. Jděte '.$zpet.' a smažte pohlaví, poté odešlete e-mail znova.'; break; case 3: echo 'Špatně opsaný bezpečnostní kód. Vraťte se '.$zpet.' a opiště jej znova.'; break; } } if($captcha == $_SESSION['captcha'] && empty($_POST['pohlavi'])) { if(filter_var($mail, FILTER_VALIDATE_EMAIL)) { if(empty($jmeno) || empty($predmet) || empty($zprava)) chybova_zprava(0); else { $zprava = ' Jméno odesílatele: '.$jmeno.'<br> E-mail: '.$mail.'<br><br> '.$zprava; $to = '****@gmail.com'; $subject = $predmet; $message = $zprava; $headers = 'From: '.$mail.'\r\n'. 'Bcc: ***@seznam.cz'.'\r\n'. 'Reply-To: '.$mail.'\r\n'. 'Subject: '.$predmet.'\r\n'. 'X-Mailer: PHP/'.phpversion().'\r\n'. 'Content-type: text/html; charset=utf-8'.'\r\n'. 'MIME-Version: 1.0'.'\r\n' ; mail($to, $subject, $message, $headers); } } else chybova_zprava(1); } elseif(!empty($_POST['pohlavi'])) chybova_zprava(2); else chybova_zprava(3); ?> Vidíte někdo někde chybu? Všechny podmínky mi fungují (to jsem zkoušel pomocí echo ). Ještě dotaz ke kódu, mohu to takto nechat být, nebo tam je něco nevyhovujícího?
|
||
Pepiik Profil |
Co vrátí funkce mail?
var_dump( mail($to, $subject, $message, $headers)); zkus zakomentovat FROM z hlavičky $headers = // 'From: '.$mail.'\r\n'. // 'Bcc: ***@seznam.cz'.'\r\n'. 'Reply-To: '.$mail.'\r\n'. 'Subject: '.$predmet.'\r\n'. 'X-Mailer: PHP/'.phpversion().'\r\n'. 'Content-type: text/html; charset=utf-8'.'\r\n'. 'MIME-Version: 1.0'.'\r\n' ; |
||
xXx Profil * |
#3 · Zasláno: 15. 6. 2014, 23:12:31
Děkuji za radu, nyní e-mail přišel (a
var_dump vrací bool(true) ). Jen koukám, že hlavička je nějaká rozbitá
Reply-To: ****@gmail.comrnSubject:PokusrnX-Mailer:PHP/5.2.13rnContent-type: text/html@nike.s.webzdarma.cz;, "charset=utf-8rnMIME-Version:1.0rn"@nike.s.webzdarma.cz |
||
Pepiik Profil |
oni jako mnoho poskytovatelů blokují odesílání emailu pokud v hlavičce mají nastavenou položku FROM na jinou doménu.
Pokud je to kontaktní formulář tak si tu položku From dej někam do textu zprávy. Na wz bude ještě další omezení jako třeba 10 emailu za hodinu atd. v hlavičce zkus použít jen \n místo \r\n |
||
xXx Profil * |
#5 · Zasláno: 16. 6. 2014, 22:27:51
Tak hlavičky stále zlobí :( jinak těch 10 e-mailů na hodinu mi na testování stačí
|
||
xXx Profil * |
#6 · Zasláno: 17. 6. 2014, 19:41:38
Problém vyřešen. Zádrhel byl v uvozovkách (jednoduché nefungovali, dvojité již ano).
|
||
Časová prodleva: 10 let
|
0