Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.
Pouze tento týden sleva až 80 % na e-learning týkající se C a C++. Zároveň využij akce až 80 % zdarma při nákupu e-learningu - více informací.
discount week 80 + hiring
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 protected]+\\..+$", $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
Super redaktor
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:

^[email protected]+\..+$

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

[a-zA-Z0-9\.\-][email protected][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
Tento výukový obsah pomáhají rozvíjet následující firmy, které dost možná hledají právě tebe!
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.