Autor | Zpráva | ||
---|---|---|---|
Mates111 Profil |
#1 · Zasláno: 29. 7. 2013, 18:07:27 · Upravil/a: Moderátor (editace znemožněna) 30. 7. 2013, 13:21:16
Zdravím programátoři,
mohl by mi někdo poradit? formulář se mi povede odeslat na svůj email, ale když se podívám na svůj mail, tak ano mail mi přijde, ale je prázdný, a ani není vidět od koho je <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title></title> </head> <body> <?php header("Content-Type: text/html; charset=utf-8"); $to = "ma.jedlicka@gmail.com"; $extra = "From: $email\r\nReply-To: $email\r\n"; $subject = "Kontakt od ".$jmeno.""; $mess = "Jméno: ".$jmeno."\nEmail: ".$email."\nText:\n".$text.""; mb_language('Neutral'); mb_internal_encoding("UTF-8"); mb_http_input("UTF-8"); mb_http_output("UTF-8"); if($text==" "||ereg("^.+@.+\..+$", $email)){ echo "<script>alert('Špatně zadané údaje, zkuste to prosím znovu.');</script>"; } else{ $succes = mb_send_mail($to, $subject, $mess, $extra); if($succes){ echo "<script>alert('Zpráva byla úspěšně odeslána, děkujeme.');</script>"; }else{ echo "<script>alert('Nastala chyba, zkuste nás kontaktovat na e-mail: ma.jedlicka@gmail.com');</script>"; } } print "<meta http-equiv=\"refresh\" content=\"0;URL=index.php\">"; exit(); ?> </body> </html> |
||
jenikkozak Profil |
#2 · Zasláno: 29. 7. 2013, 18:10:42
|
||
Mates111 Profil |
#3 · Zasláno: 29. 7. 2013, 20:35:35
jenikkozak:
Z toho moc chytřejší nejsem |
||
Davex Profil |
#4 · Zasláno: 29. 7. 2013, 21:15:07
Proměnné
$email , $jmeno , $text nejsou definované, takže se nemá co odeslat. Údaje z formuláře se musí získat odjinud, jak psal jenikkozak [#2].
|
||
Mates111 Profil |
A mohl by si mě poradit jak to provést?
|
||
xROAL Profil |
#6 · Zasláno: 29. 7. 2013, 21:53:14
Formulár tieto údaje posiela buď cez GET alebo POST. A tak k ním treba aj v PHP pristupovať. Ak máme vo formulári prvok s menom "text", ktorý sa posiela cez POST, tak v PHP sa k nemu dostaneme cez superglobálne pole $_POST, konkrétne $_POST['text'].
Toto je ostatne vysvetlené aj v odkaze ktorý sem dal [#2] jenikkozak (a myslím, že na tom vysvetlení nie je čo nechápať). |
||
Mates111 Profil |
#7 · Zasláno: 29. 7. 2013, 21:54:15
To sem samozřejmě udělal, ale bez žádné odezvy
|
||
Rfilip Profil |
#8 · Zasláno: 29. 7. 2013, 22:02:08
Tak sem dej kod formulare a novou verzi kodu co jsi uvedl v [#1].
|
||
Mates111 Profil |
#9 · Zasláno: 29. 7. 2013, 22:15:34
Už mi to funguje sem přehlídnul jednu proměnnou.
Díky! |
||
Časová prodleva: 7 dní
|
|||
Mates111 Profil |
#10 · Zasláno: 5. 8. 2013, 11:47:45
Mám tu ještě jeden problém, v podmínce to mám ošetřený ale stejně když odešlu prázdný formulář tak se odešle. Mohl by se na to někdo podívat?
<?php header("Content-Type: text/html; charset=utf-8"); $to = "ma.jedlicka@gmail.com"; $extra = "From: $_POST[email]\r\nReply-To: $_POST[email]\r\n"; $subject = "Kontakt od ".$_POST['jmeno'].""; $mess = "Jméno: ".$_POST['jmeno']."\nEmail: ".$_POST['email']."\nText:\n".$_POST['text'].""; mb_language('Neutral'); mb_internal_encoding("UTF-8"); mb_http_input("UTF-8"); mb_http_output("UTF-8"); if($jmeno==" "||$text==" "||ereg("^.+@.+\..+$", $email)){ echo "<script>alert('Špatně zadané údaje, zkuste to prosím znovu.');</script>"; } else{ $succes = mb_send_mail($to, $subject, $mess, $extra); if($succes){ echo "<script>alert('Zpráva byla úspěšně odeslána, děkujeme.');</script>"; }else{ echo "<script>alert('Nastala chyba, zkuste nás kontaktovat na e-mail: ma.jedlicka@gmail.com');</script>"; } } print "<meta http-equiv=\"refresh\" content=\"0;URL=kontakt.html\">"; exit(); ?> |
||
Tori Profil |
Řádek 11 změňte na něco takovéhoto:
if (empty($_POST['jmeno']) || empty($_POST['text']) || empty($_POST['email']) || !preg_match('#^.+@.+\..+$#U', $_POST['email'])) { |
||
Mates111 Profil |
#12 · Zasláno: 5. 8. 2013, 13:48:01
Bohužel i s tímto mi to nefunguje
|
||
Tori Profil |
#13 · Zasláno: 5. 8. 2013, 17:17:47
Ještě by tam místo
empty($_POST['jmeno']) mohlo být preg_match('~^\s*$~') . Totiž empty ověřuje, jestli proměnná není prázdná, takže např. když zadám jen mezeru, tak se mail odešle. Kdežto tím regulárem by se odchytil i formulář, který bude obsahovat pouze bílé znaky (mezery, zalomení řádku). Btw opravila jsem regulár v [#11], zkuste nejdřív to.
|
||
Mates111 Profil |
#14 · Zasláno: 5. 8. 2013, 20:00:44 · Upravil/a: Mates111
Vyzkoušel jsem další možnosti, ale zatím se mi to rozchodit nepovedlo
Tak už mi to funguje, děkuju |
||
Tori Profil |
#15 · Zasláno: 6. 8. 2013, 07:26:15
Mates111:
A kde teda nakonec byla chyba? |
||
Mates111 Profil |
#16 · Zasláno: 6. 8. 2013, 17:17:42
Tori:
Udělal jsem to podle toho jak jste mi říkala, až na jedno, ověřování správné formy emailu jsem použil !ereg |
||
Jan Tvrdík Profil |
Mates111:
Funkce ereg je zastaralá a spoléhání na ni je velmi nedoporučováno. |
||
Časová prodleva: 11 let
|
0