Autor | Zpráva | ||
---|---|---|---|
f.soft Profil * |
#1 · Zasláno: 26. 12. 2012, 18:26:35
Dobrý den,
mám knihu Programování pro úplné začátečníky od Martina Mikulňáka (http://knihy.cpress.cz/programovani-www-stranek-pro-uplne-zacatecniky-d3.html) a hned jsem se do ní začetl a narazil jsem na kapitolu kontaktní formulář. Když si ho otevřu tam na mě vyskočí chyby: Notice: Undefined index: jmeno in C:\xampp\htdocs\kniha\05\kontakt.php on line 3 Notice: Undefined index: telefon in C:\xampp\htdocs\kniha\05\kontakt.php on line 4 Notice: Undefined index: email in C:\xampp\htdocs\kniha\05\kontakt.php on line 5 Notice: Undefined index: predmet in C:\xampp\htdocs\kniha\05\kontakt.php on line 6 Notice: Undefined index: zprava in C:\xampp\htdocs\kniha\05\kontakt.php on line 7 Notice: Undefined index: poslat in C:\xampp\htdocs\kniha\05\kontakt.php on line 8 Notice: Undefined variable: okHlaska in C:\xampp\htdocs\kniha\05\kontakt.php on line 84 Notice: Undefined index: kopie in C:\xampp\htdocs\kniha\05\kontakt.php on line 97 ještě přikládám kód toho formuláře. Nevíte čím to může být? Jsem z toho zoufalý. Moc Vám děkuji za ochotu pomoci mi. <?php $jmeno=trim(htmlspecialchars(strip_tags($_POST['jmeno']))); $telefon=trim(htmlspecialchars(strip_tags($_POST['telefon']))); $email=trim(htmlspecialchars(strip_tags($_POST['email']))); $predmet=trim(htmlspecialchars(strip_tags($_POST['predmet']))); $zprava=trim(htmlspecialchars(strip_tags($_POST['zprava']))); if($_POST['poslat']=="ano") { $chyby=array(); if(empty($jmeno)) { $chyby[]='Vyplňte své jméno.'; }; // $jmeno je prázdné if(is_numeric($jmeno)) { $chyby[]='Jméno nemůže mít číselnou hodnotu.'; }; // jméno nemůže být číslo if(strlen($jmeno)<=2) { $chyby[]='Uvedené jméno je moc krátke.'; }; // minimální délka jména je dva znaky if(empty($telefon) && empty($email)){ // pokud jsou oba údaje nevyplněny $chyby[]='Uveďte kontaktní telefon nebo emailovou adresu.'; }; if(!empty($telefon)) { // pokud je $telefon vyplněn $telefon=str_replace('+', '', $telefon); // zmažeme nečíselné znaky $telefon=str_replace('-', '', $telefon); $telefon=str_replace('/', '', $telefon); $telefon=str_replace(' ', '', $telefon); // zmažeme i mezery if(!is_numeric($telefon)) { // pokud to není číslo, obsahuje nepovolené znaky $chyby[]='Telefonní kontakt obsahuje nepovolené znaky.'; } if(strlen($telefon)<9 || strlen($telefon)>15) { // délku si můžete zvolit sami podle vašeho uvážení $chyby[]='Telefonní kontakt má nesprávnou délku.'; } } if(!empty($email)){ // pokud je vyplněný $email if(!preg_match('/^[^@]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,4}+$/', $email)){ // emailová adresa nemá správní tvar $chyby[]='Uvedená emailová adresa nemá správní tvar.'; } } if(empty($predmet)){ $chyby[]='Uveďte předmět vaši zprávy.'; }; if(strlen($predmet)<5){ $chyby[]='Předmět zprávy je příliš krátký.'; }; if(empty($zprava)){ $chyby[]='Napište vaši zprávu.'; }; if(strlen($zprava)<20){ $chyby[]='Zpráva je příliš krátká. Zkuste ji popsat podrobněji.'; }; $chyba=join('<br />', $chyby); if(!empty($chyba)){ echo '<div class=“chybovaHlaska“>'.$chyba.'</div>'; }; if(empty($chyba)){ // všechna jsou v pořádku $textZpravy='Odesílatel: <strong>'.$jmeno.'</strong><br /><br /> [ '.$email.' '.$telefon.' ]<br /><br /> '.$zprava; require "class.phpmailer.php"; require "class.smtp.php"; $Mail = new PHPMailer(); $Mail->CharSet = 'UTF-8'; $Mail->IsSMTP(); $Mail->Host = "smtp.googlemail.com"; $Mail->Username="prihlasovaci.jmeno.k.emailu"; $Mail->Password="heslo"; $Mail->SMTPAuth=true; $Mail->From = "prihlasovaci.jmeno.k.emailu@gmail.com"; $Mail->FromName = $jmeno; $Mail->AddAddress("prihlasovaci.jmeno.k.emailu@gmail.com"); if($_POST['kopie']=="on") { $Mail->AddBCC($email); } $Mail->IsHTML(true); $Mail->Subject = $predmet; $Mail->Body = $textZpravy; $cistyText=strip_tags($textZpravy); $Mail->AltBody=$cistyText; if($Mail->Send()) { $okHlaska="Zpráva byla úspěšne odesláná."; } else { echo "Zprávu se nepodařilo odeslat. Zkuste to znovu."; } } } if($okHlaska==""){ echo '<form action="" method="post"> <label for="jmeno">Vaše jméno:</label> <input type="text" name="jmeno" id="jmeno" value="'.$jmeno.'" /><br /> <label for="telefon">Telefon:</label> <input type="text" name="telefon" id="telefon" value="'.$telefon.'" /><br /> <label for="email">Email:</label> <input type="text" name="email" id="email" value="'.$email.'" /><br /> <label for="predmet">Předmět:</label> <input type="text" name="predmet" id="predmet" value="'.$predmet.'" /><br /> <label for="zprava">Zpráva / dotaz:</label> <textarea name="zprava" id="zprava" rows="3">'.$zprava.'</textarea><br /> <input type="checkbox" name="kopie" id="kopie"'; if($_POST['kopie']=="on"){ echo ' checked="checked"'; }; echo '/><label for="kopie" style="width:350px;">zaslat kopii zprávy na můj email</label><br /> <input type="submit" value="Odeslat dotaz" /> <input type="hidden" name="poslat" value="ano" /> </form>'; } else { echo $okHlaska; } ?> <?php /* Tento soubor je součástí ukázkových kódů ke knize Programování WWW stránek pro úplné začátečníky. Více informaci o knize naleznete na adrese http://knihy.cpress.cz/k1868. © 2011 Všechna práva vyhrazena. */ ?> |
||
Davex Profil |
#2 · Zasláno: 26. 12. 2012, 19:13:30
Je to tím, že je v konfiguraci PHP zapnuté zobrazování upozornění na drobné prohřešky a při samostatném spuštění není naplněno pole
$_POST .
Vypisování upozornění si můžeš vypnout v souboru php.ini na řádku error_reporting = nebo přímo ve skriptu
error_reporting(E_ALL & ~E_NOTICE & ~E_STRICT); Kdyby ta kniha byla deset let stará, tak bych to chápal, ale jestli je z loňského roku a všechny příklady vypadají podobně, tak bude mít vhodnější použití třeba jako podložka pod monitor. |
||
f.soft Profil * |
#3 · Zasláno: 26. 12. 2012, 19:32:06 · Upravil/a: f.soft
Díky, ale to nepomáhá.
a doporučil bys mi nějakou jinou knihu? Díky |
||
Davex Profil |
f.soft:
„Díky, ale to nepomáhá.“ Na úplném začátku skriptu by to mělo fungovat 100%. <?php error_reporting(E_ALL & ~E_NOTICE & ~E_STRICT); Jinak koukám, že nejsi první, kdo má s příklady z této knihy úplně stejné problémy a můžeš se poučit i tam - Nefunkční materiály ke knize, PHP začátečník - undefined index problém. „doporučil bys mi nějakou jinou knihu?“ Problém papírových knih o programování v PHP je ten, že hrozně rychle zastarávají. Zkus prohledat tuto diskusi. Už se tu několikrát vhodná kniha pro začátečníka hledala. • Jak začít s PHP • Doporučení knihy na učení PHP • Výběr knihy pro začátečníka Nebo si můžeš počkat, až Joker a pár ostatních z této diskuse dopíše novou učebnici PHP. |
||
Časová prodleva: 11 let
|
0