NOVINKA - Online rekvalifikační kurz Java programátor. Oblíbená a studenty ověřená rekvalifikace - nyní i online.
NOVINKA – Víkendový online kurz Software tester, který tě posune dál. Zjisti, jak na to!
Avatar
JGB
Člen
Avatar
JGB:19.3.2016 5:48

Po úmorném hledání a následném zkoušení různých možností jsem se rozhodl požádat o pomoc zde. Na webu jsem umístil kontaktní formulář, který ale při pokusu o odeslání zprávy zobrazí hlášku: "Špatně zadané údaje". Už si s tím opravdu nevím rady.
Zde uvádím kód ve scriptu 'contact.php':

<?php
mb_internal_encoding("UTF-8");
mb_language('Neutral');
mb_http_input("UTF-8");
mb_http_output("UTF-8");
header("Content-Type: text/html; charset=utf-8");
$to = "[email protected]";
$extra = "From: $email\r\nReply-To: $email\r\n";
$subject = "Kontakt od ".$jmeno."";
$mess = "Jméno: ".$jmeno."\nEmail: ".$email."\nText:\n".$text."";
if($jmeno==""||$text==""||ereg("^.+@.+\\..+$", $email)==false){
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: [email protected]');</script>"; } }
print "<meta http-equiv=\"refresh\" content=\"0;URL=kontakt.php\">";
exit();
?>

a zde v 'kontakt.php':

<!-- KONTAKTNÍ FORMULÁŘ ZAČÁTEK -->
<div class="column-zero-1-in">
        <form action="contact.php" method="post">
        <div class="kText">Jméno:</div>
        <div class="kInput"><input id="kJmeno" name="jmeno" accesskey="j" type="text" size="30" /></div><br>
        <div class="kText">Email:</div>
        <div class="kInput"><input id="kEmail" name="email" accesskey="e" type="text" size="30" /></div><br>
        <div class="kText">Text:</div>
        <div class="kInput"><textarea id="kText" name="text" accesskey="t" rows="10" cols="60"></textarea></div><br>
        <input type="submit" class="kBut" value="Odeslat"/>
        </form>
</div>
<!-- KONTAKTNÍ FORMULÁŘ KONEC -->

Kódování stránek je v utf-8.
Kde mám chybu? Poradí někdo?

Odpovědět
19.3.2016 5:48
„Proti hluposti se bojovat musí, ale vyhrát se nedá!“ Jan Werich
Avatar
Jan Lupčík
Tvůrce
Avatar
Jan Lupčík:19.3.2016 7:16

Místo ereg() funkce, která je zastaralá, se podívej na funkci preg_match().
Dále jsem si nevšiml, že bys někde používal data z POSTu - máš tam pouze nějaké proměnné, kde nevidím jejich deklaraci.
A ten Regex je zřejmě špatně - máš tam zpětné lomítko navíc. Správný Regex:

^.+@.+\..+$

I když lepší by bylo něco takového:

[a-zA-Z0-9\.\-]+@[a-zA-Z0-9]+\.[a-z]{2,6}
Editováno 19.3.2016 7:17
Nahoru Odpovědět
19.3.2016 7:16
TruckersMP vývojář
Avatar
JGB
Člen
Avatar
Odpovídá na Jan Lupčík
JGB:19.3.2016 7:35

Díky - zkusím na to mrknout.

Nahoru Odpovědět
19.3.2016 7:35
„Proti hluposti se bojovat musí, ale vyhrát se nedá!“ Jan Werich
Avatar
Pavel Parma
Člen
Avatar
Pavel Parma:20.3.2016 15:38

Jak napsal kolega, přistupuješ k nedeklarovaným proměným. Úplně na začátek scriptu napiš ini_set("displa­y_errors", true) a error_reportin­g(E_ALL), tak se ti budou zobrazovat vsechny errory vsech typu. (Nebo si to nastav v php.ini)

Dale doporucuji funkci filter_var() s flagem FILTER_VALIDA­TE_EMAIL, je to celkem komplexni pattern, ktery podporuje i IP adresy misto adresy a mnoho jine.

 
Nahoru Odpovědět
20.3.2016 15:38
Avatar
JGB
Člen
Avatar
JGB:20.3.2016 16:10

děkuji :-P

Nahoru Odpovědět
20.3.2016 16:10
„Proti hluposti se bojovat musí, ale vyhrát se nedá!“ Jan Werich
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 5 zpráv z 5.