Avatar
JGB
Člen
Avatar
JGB:

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 = "blazek-j@post.cz";
$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: blazek-j@post.cz');</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. března 5:48
„Proti hluposti se bojovat musí, ale vyhrát se nedá!“ Jan Werich
Avatar
IT Man
Redaktor
Avatar
IT Man:

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. března 7:17
Nahoru Odpovědět  +3 19. března 7:16
Když nevíš jak dál, podá ti ruku někdo, od koho by jsi to nečekal. A tu šanci musíš přijmout!
Avatar
JGB
Člen
Avatar
Odpovídá na IT Man
JGB:

Díky - zkusím na to mrknout.

Nahoru Odpovědět 19. března 7:35
„Proti hluposti se bojovat musí, ale vyhrát se nedá!“ Jan Werich
Avatar
Pavel Parma
Člen
Avatar
Pavel Parma:

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. března 15:38
Avatar
JGB
Člen
Avatar
JGB:

děkuji :-P

Nahoru Odpovědět 20. března 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.