Autor | Zpráva | ||
---|---|---|---|
Chlupp Profil |
Jsem pouze uživatel internetu, ale potřeboval bych si vytvořit skript na odesílání emailu. Mám formulář i skript, vše funguje, odesílá, ale odesílá i prázdné emaily. Proto se snažím zadat podmínky pro vyplnění polí, ale když začnu měnit skritp, hází mi to chybu. V čem dělám chybu?
Snažím se, aby se mi zkontrolovalo zadání kdy, jméno, email a telefon. Pomůže mi někdo? Díky za radu. skript php: Rezervace111.php <head> <meta http-equiv="Content-type" content="text/html; charset=windows-1250"> <title>Rezervace</title> </head> <body> <meta http-equiv="Content-type" content="text/html; charset=windows-1250"> <?php $headers = 'From: '.$_POST['email'] . "\r\n"; $headers .= 'Reply-To: '.$_POST['email'] . "\r\n"; $headers .= 'MIME-Version: 1.0' . "\r\n"; $headers .= 'Content-type: text/html; charset=windows-1250' . "\r\n"; if(strstr($kdy, "\n") !== false || strstr($kdy, "\r") !== false) { echo "Vyberte termín!"; exit; if(strstr($email, "\n") !== false || strstr($email, "\r") !== false) { echo "Zadejte svůj email!"; exit; } if(strstr($jmeno, "\n") !== false || strstr($jmeno, "\r") !== false) { echo "Zadejte své jméno!"; exit; } if(substr_count($email, '@') >= 2) { echo 'Do kolonky "Vas e-mail" lze zadat pouze jednu emailovou adresu.'; exit; } $to = "chlupp@seznam.cz"; $subject = "".$_POST['predmet'].""; $mess = "kdy: ".$_POST['kdy']."<br>Jméno: ".$_POST['jmeno']."<br>Telefon: ".$_POST['telefon']."<br>E-mail: ".$_POST['email']."<br>Poznamka:<br>".$_POST['poznamka'].""; if (mail ($to, $subject, $mess, $headers)); <meta http-equiv="refresh" content="0; url=http://www.rezervace.centrumpaprsek.cz/form/dekujeme.html"> else "Pri zpracovani vzkazu nastala chyba!"; ?> </body> <html> samotný formulář index111.html. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <meta http-equiv="Content-Style-Type" content="text/css"> <meta http-equiv="Content-type" content="text/html; charset=windows-1250"> <title>Rezervace</title> </head> <body bgcolor=#DCEDFD> <meta http-equiv="Content-type" content="text/html; charset=windows-1250"> <table style="height:100%;" width="100%" cellSpacing="0" cellPadding="0" border="0"> <tr><td align="center" valign="top"> <form action="rezervace111.php" method="post"> <input type="hidden" value="Stepy + posilování s činkami" name="predmet"> <input type="hidden" value="Pondělí 17:45-18:45" name="den_kurzu"> <input type="hidden" value="noreply@centrumpaprsek.cz" name="komu"> <fieldset> <h2><legend align="center">Stepy + posilování s činkami</legend></h2> <table> <tr> <th valign="top" align="right"> <label for="jmeno">Kdy:</label> </th> <td> <input type="radio" name="kdy" value="Pondělí 17:45-18:45">Pondělí 17:45-18:45<br> <input type="radio" name="kdy" value="Pátek 18:45-19:45">Pátek 18:45-19:45 </td> </tr> <tr> <th align="right"> <label for="jmeno">Jméno:</label> </th> <td> <input type="text" name="jmeno" size="24"> </td> </tr> <tr> <th align="right"> <label for="telefon">Telefon:</label> </th> <td> <input type="text" name="telefon" size="24"> </td> </tr> <tr> <th align="right"> <label for="email">E-mail:</label> </th> <td> <input type="text" name="email" size="24"> </td> </tr> <tr> <td colspan="2" align="right"> !Při rezervaci více cvičících, uveďte prosím jejich jména! </td> </tr> <tr> <th align="right" class="comment"> <label for="poznamka">Poznámka:</label> </th> <td> <textarea name="poznamka" cols="30" rows="5"></textarea> </td> </tr> <tr> <td colspan="2" align="center"><input type="submit" name="odeslano" class="button" value="Odeslat"> </td> </tr> </table> </form> </td></tr> </table> </body> </html> |
||
Camo Profil |
#2 · Zasláno: 24. 2. 2013, 16:31:45
Chlupp:
Odhliadnuc od toho, že je to deravé ako sito, by tá chyba(ktorú si mal pridať k otázke) mohla byť v tom, že nemáš koncovú zátvorku v prvej podmienke. |
||
Chlupp Profil |
#3 · Zasláno: 24. 2. 2013, 22:54:09
Camo:
díky, za odpověď závorku jsem doplnil, ale stále nic - hlásí mi to chybu. Jak to myslíš, že je to děravé jak síto? Mohl by jsi mi poradit, jak to upravit? |
||
Davex Profil |
#4 · Zasláno: 24. 2. 2013, 23:18:58
Chlupp:
„hlásí mi to chybu“ Jakou chybu? |
||
Chlupp Profil |
Davex:
Chyba protokolu HTTP 500 (Internal Server Error): Při pokusu o splnění požadavku došlo na serveru k neočekávané situaci. Když jsem se ptal na hostingu tak mi řekli, že je chyba někde v PHP. Ale neřekli mi kde :-( |
||
ehm Profil * |
#6 · Zasláno: 25. 2. 2013, 08:25:08
ten meta tag nie je echnutý..
|
||
Chlupp Profil |
#7 · Zasláno: 25. 2. 2013, 09:01:02
[#6] ehm,
myslíš napsat před něj echo? to jsem udělal - výsledek stále stejný |
||
ehm Profil * |
#8 · Zasláno: 25. 2. 2013, 09:13:49
echo '';
|
||
Chlupp Profil |
#9 · Zasláno: 25. 2. 2013, 11:23:45
ehm:
[#8] také nic :-( |
||
peta Profil |
#10 · Zasláno: 25. 2. 2013, 15:52:29
Chlupp:
Pokud udelas nejakou zmenu, je dobre, poslat tu cast kodu 5 radku niz, 5 pod tou zmenou. 500 (Internal Server Error) - googlem bys nasel, ze se jedna o chybu serveru. index111.html - na radku 9 nemas hodnotu v uvozovkach "#DCEDFD" - na radku mas meta tag, ktery patri do head a ne do body - na radku 20 mas pouzite legent, ktere vyhradne patri jen do tagu fieldset - na radku 20, pouziti align u tagu typu inline je vec zbytecna, on je siroky jen na delku textu v nem, takze text je vzdy zarovnany na stred, vlevo i vpravo - na radku 76 hlasi validator, ze nemas ukonceny tag fieldset - na radku 50, "for" se propojuje na "id" inputu na radku 53 a ne na "name", for bud zrus nebo inputu pridej id rezervace111.php Parse error: syntax error, unexpected '<' in C:\wamp\www\x\xxmail\rezervace111.php on line 35 - na radku 35 neni php kod. Tam asi melo byt echo ' <meta .... /dekujeme.html"> '; - na radku 36 hlasi problem s else, protoze na radku 34 mas if ukonceno strednikem. if (mail ($to, $subject, $mess, $headers)); - na radku 39 hlasi schazejici ukonceni, zavorku a navic tam nemas opet echo. else echo "Pri ... chyba!"; echo 'text'; je prikaz, aby do html kodu vypsal text
A tu zavorku si snadno dohledas treba v pspadu. Na radku 14 oteviras { ale na radku 17 ji neuzaviras |
||
Davex Profil |
#11 · Zasláno: 25. 2. 2013, 18:59:14
Chlupp:
„Chyba protokolu HTTP 500 (Internal Server Error)“ Na serveru máš vypnuté zobrazování chyb PHP, takže se dozvíš pouze tuto nekonkrétní chybu. Po nasekání chyb ve skriptech doporučuji zapnout jejich zobrazování, abys o nich alespoň věděl. |
||
Chlupp Profil |
#12 · Zasláno: 26. 2. 2013, 11:12:45 · Upravil/a: Chlupp
peta:
Díky za odpověď a pár typů. upravil jsem index111.html <body bgcolor="#DCEDFD"> - na radku 20 mas pouzite legent, ktere vyhradne patri jen do tagu fieldset - na radku 20, pouziti align u tagu typu inline je vec zbytecna, on je siroky jen na delku textu v nem, takze text je vzdy zarovnany na stred, vlevo i vpravo - používám fieldset, jen jsem ho zapoměl na konci ukončit. - to zarovnání je použito z důvodu fildset. (sice se mi to v chromu nezobrazuje správně, ale taková byla alespoň myšlenka. - na radku 76 hlasi validator, ze nemas ukonceny tag fieldset ukončeno - to jsem přehlédl </fieldset> toto jsem nepochopil. mám to tak udělané u všech polí Změny jsem provedl, ale formulář se i tak před změnamy zobrazoval správně. rezervace111.php Parse error: syntax error, unexpected '<' in C:\wamp\www\x\xxmail\rezervace111.php on line 35 - na radku 35 neni php kod. Tam asi melo byt echo ' <meta .... /dekujeme.html"> '; Parse error: syntax error, unexpected T_ELSE in C:\wamp\www\x\xxmail\rezervace111.php on line 36 - na radku 36 hlasi problem s else, protoze na radku 34 mas if ukonceno strednikem. if (mail ($to, $subject, $mess, $headers)); Parse error: syntax error, unexpected $end in C:\wamp\www\x\xxmail\rezervace111.php on line 39 - na radku 39 hlasi schazejici ukonceni, zavorku a navic tam nemas opet echo. else echo "Pri ... chyba!"; echo 'text'; je prikaz, aby do html kodu vypsal text A tu zavorku si snadno dohledas treba v pspadu. Na radku 14 oteviras { ale na radku 17 ji neuzaviras Změny jsem provedl. Tady je konec php kterého se to týkalo: $to = "chlupp@seznam.cz"; $subject = "".$_POST['predmet'].""; $mess = "kdy: ".$_POST['kdy']."<br>Jméno: ".$_POST['jmeno']."<br>Telefon: ".$_POST['telefon']."<br>E-mail: ".$_POST['email']."<br>Poznamka:<br>".$_POST['poznamka'].""; if (mail ($to, $subject, $mess, $headers)) echo '<meta http-equiv="refresh" content="0; url=http://www.rezervace.centrumpaprsek.cz/Dekujeme_Vam.html">'; else echo "Pri zpracovani vzkazu nastala chyba!"; Výsledek je, že mi to už proběhne a nehází to chybu, ale i tak mi to dovolí poslat prázdný nevyplněný formulář. A zobrazit děkující stránku. Tomu nerozumím :-( přeci tam jsou podmínky, tak by se to podle nich mělo řídit. Leda, že bych je špatně nadefinoval. Davex: Díky za radu, to by se mi hodilo. Přečetl jsem si celý článek. Zavolal na hosting, ale k dispozici mám pouze náhled do složek a kopírování souborů. Sám se do jiných souborů nedostanu. A když zadám ini_set('display_errors',1); error_reporting(E_ALL); |
||
Davex Profil |
#13 · Zasláno: 26. 2. 2013, 12:38:29
Chlupp:
„stále mi to hází chybu 500“ Pokud máš syntaktické chyby ve skriptu, tak zapnutí chyb ve skriptu nepomůže, protože se ještě nespustil. Musí se to zapnout dřív - třeba v souboru .htaccess, v php.ni nebo zkusit hledat v administraci hostingu, jestli se to nezapíná tam. |
||
Chlupp Profil |
#14 · Zasláno: 26. 2. 2013, 13:44:21
Davex:
syntaktická chyba je chyba kde mi chybí jako závorka...? Jinak v hostingu to nikde zapnout nejde. a .htaccess tam nikde není a vytvořit ho neumím. Po upravení skriptu od návodu od Peta už to chybu nehází, ale podmínky mi to přejede jako by tam nebyly a odešle to děkovnou zprávu, která je až na konci. Čím by to mohlo být? |
||
Davex Profil |
Chlupp:
„i tak mi to dovolí poslat prázdný nevyplněný formulář“ Protože testuješ vyplnění proměnných, které nejsou definované? Viz Nejčastější potíže s PHP (FAQ) » Nefungují proměnné z formuláře nebo z URL (vypnuté register globals). Kdybys měl zapnuté zobrazování chyb, tak bys možná viděl informaci o tom, že používáš nedefinované proměnné. Tzn., že to nemá cenu ladit poslepu s vypnutými chybovými hláškami. Ty podmínky udělej nějak normálně. Například podle vzoru if (empty($_POST['kdy'])) { echo "Vyberte termín!"; exit; } |
||
Chlupp Profil |
#16 · Zasláno: 26. 2. 2013, 14:30:42
Davex:
Děkuji mnohokrát, už to funguje. Ještě jsem se chtěl zeptat, jak to udělat, aby ta hlaška se zobrazovala u pole, kdaž ho neviplníš. Mám to vymyšlené, jako vyskakovací okno s formulářem. S chybovou hláškou jako jsme to měli na naší původní stránce: http://paprsek.webuje.cz/prihlaska-cvicebni-kurzy.aspx Ale když člověk něco nezadá, tak mu to nedovolí se vrátit. Když to vyskakovací okno nechám velké, tak se musí vracet směrem zpět. Teď to funguje takto: http://anglictina.centrumpaprsek.cz/test Můžu toho nějak jednoduše docílit? |
||
Časová prodleva: 11 let
|
0