Autor | Zpráva | ||
---|---|---|---|
Klainer Profil |
#1 · Zasláno: 12. 8. 2007, 10:59:09
Dobrý den,
mám tu asi pro vás banální, ale pro mě velký problémek s formulářem. Když příjdete na stránku s formulářem pod ním se automaticky vypíše : E-mail se nepodařilo odeslat příčinou asi bude nevyplnění kontaktních udajů, nebo špatné znění otázky ! Mno a já potřebuji, že když člověk příjde na stránku s formulářem tak pod ním napsané nic nebude ( nic se nevypíše ), ale po odeslání formuláře potřebují aby se pod ním objevilo: Zpráva byla úspěšně odeslána. A pokud byly špatně vyplněny udaje by se mělo vypsat : E-mail se nepodařilo odeslat příčinou asi bude nevyplnění kontaktních udajů, nebo špatné znění otázky ! Díky Tady přilážím kod mého formuláře: <?php $predmet = $_POST['predmet']; $email = $_POST['email']; $spam = $_POST['kontrola']; $zprava = $_POST['zprava']; if ($predmet!="" and $email!="" and $zprava!="" and $kontrola=="2") { Mail("martinhascak@gmail.com", $predmet, $zprava, "From: " . $email); $oznam = "<p>Zpráva byla úspěšně odeslána.</p>"; } else { $oznam = "<p>E-mail se <strong>nepodařilo odeslat</strong> příčinou asi bude nevyplnění kontaktních udajů, nebo špatné znění otázky !.</p>"; } ?> <div id="mailform"> <form action="" method="post"> <fieldset> <legend>Kontaktní formulář</legend> <label for="email">Váš email:</label> <input class="text" name="email" size="25" class="textpole" /><br /> <label for="predmet">Předmět:</label> <input class="text" name="predmet" size="25" class="textpole" /><br /> <label for="kontrola">Kontrola: 1+1 se rovná ?</label> <input class="text" name="kontrola" size="25" class="textpole" /><br /> <label for="zprava">Zpráva:</label> <textarea name="zprava" rows="6" class="textpole" cols="40"></textarea><br /> <input class="submit" type="submit" value="Odeslat" /> <?php if ($predmet!="" and $email!="" and $zprava!="" and $kontrola!=="2") { echo $oznam; } else { echo $oznam; } ?> </fieldset> </form> </div> |
||
Alphard Profil |
#2 · Zasláno: 12. 8. 2007, 11:02:45
<input class="submit" type="submit" value="Odeslat" name="odeslano" />
if (isset ($_POST['odeslano'])) { // celý script } |
||
Klainer Profil |
#3 · Zasláno: 12. 8. 2007, 12:21:18 · Upravil/a: Klainer
vyřešeno
|
||
tiso Profil |
#4 · Zasláno: 12. 8. 2007, 13:29:10
Klainer - ten skript má zlú logiku, reišenie od Alphard-a je iba čiastočné.
Princíp: if(isset($_POST['odeslano'])){//form odoslany, mozem ho spracovat |
||
Klainer Profil |
#5 · Zasláno: 12. 8. 2007, 14:53:39 · Upravil/a: Klainer
diky mozná to pak skusím pokud dojdu na to jak to napojit
|
||
Klainer Profil |
Mám tu pořád ještě problémek s ověřováním vysledku součtu číslic proti spamu ….
Procházím to celý den a nemůžu najít chybku urcite tam je viditelna ale jelikoz php mocnerozumím, tak se mi to hledáhůře. Pokud tedy máte čas podívejtese a případně skuste opravit dotyčnou chybku ve scriptu. Děkuji <?php $cislo1 = rand(0, 9); $cislo2 = rand(0, 9); $vysledek = $cislo1 + $cislo2; ?> <div id="mailform"> <form action="" method="post"> <fieldset class="ramecek"> <legend>Kontaktní formulář</legend> <fieldset> <label for="email">Váš email:</label> <input class="text" name="email" size="25" class="textpole" value="<?echo $_POST["email"]?>" /> </fieldset> <fieldset> <label for="predmet">Předmět:</label> <input class="text" name="predmet" size="25" class="textpole" /> </fieldset> <fieldset> <label for="kontrola">Kolik je: <?php echo $cislo1.' + '.$cislo2.' ?';?></label> <input class="text" name="kontrola" size="25" class="textpole" /> <input type="hidden" name="cislo1" value="<?php echo $cislo1;?>" /> <input type="hidden" name="cislo2" value="<?php echo $cislo2;?>" /> </fieldset> <fieldset> <label for="zprava">Zpráva:</label> <textarea name="zprava" rows="6" class="textpole" cols="40"></textarea> <input class="submit" type="submit" value="Odeslat" name="odeslano" /> </fieldset> <?php $predmet = $_POST['predmet']; $email = $_POST['email']; $zprava = $_POST['zprava']; if (isset($_POST['odeslano'])){ $vysledek = $_POST['cislo1']+$_POST['cislo2']; if ($predmet!='' AND $email!="" and $zprava!='' and $vysledek = $_POST['cislo1']+$_POST['cislo2']){ //Mail("martinhascak@gmail.com", $predmet, $zprava, "From: " . $email); mail("martinhascak@gmail.com", $predmet, $zprava, "From: webmaster@$SERVER_NAME Reply-To: webmaster@$SERVER_NAME X-Mailer: PHP/" . phpversion()); $akce = 1; }else $akce = 0; } switch ($akce){ case '1': echo '<p>Zpráva byla úspěšně odeslána.</p>'; break; case '0': echo '<p>E-mail se <strong>nepodařilo odeslat</strong> příčinou pravděpodobně bude špatné vyplnění kontaktních údajů nebo číselný výsledek.</p>'; break; } ?> </fieldset> </form> |
||
Alphard Profil |
#7 · Zasláno: 13. 8. 2007, 17:41:30
výsledek od uživatele máš v $_POST['kontrola']
and $vysledek = $_POST['cislo1']+$_POST['cislo2']){ bude to vždy správně a to hned ze dvou důvodů :-) 1. o řádek výše jsi to spočítal, teď provádíš ten stejný výpočet a porovnáš z předchozím výsledkem, jinak to být nemůže, HPH nedělá chyby v počítání do 20 :-) 2. porovnává se pomocí ==, ty jenom přiřazuješ a to vrátí TRUE bez ohledu na výsledek |
||
Klainer Profil |
#8 · Zasláno: 13. 8. 2007, 20:01:39 · Upravil/a: Klainer
Aha diky za tip uz to sviští :)
|
||
v6ak Profil |
#9 · Zasláno: 14. 8. 2007, 11:23:48
Klainer
Mail("martinhascak@gmail.com", $predmet, $zprava, "From: " . $email); Tomu říkám injekce hlaviček! Co takhle do emailu napsat?: jan.novak@gmail.com Alphard přiřazuješ a to vrátí TRUE To IMHO vrací přiřazenou hodnotu. |
||
Alphard Profil |
#10 · Zasláno: 14. 8. 2007, 11:30:53
v6ak
která bude vyhodnocená jako TRUE (pravděpodobnost toho, že rand() určí 2x 0 je nízká, proto zanedbávám) ale jo, napsal jsem to špatně, máš pravdu |
||
Časová prodleva: 3 roky
|
|||
Sanjay Profil * |
#11 · Zasláno: 20. 10. 2010, 20:33:56
ahoj zkusil jsem tento kod protže php moc nerozumím a pokusil jsem se to opravit podle vašich rad ale nejak mi to nejde poradíte v čom mam chybu prosím
<?php $cislo1 = rand(0, 9); $cislo2 = rand(0, 9); ?> <div id="mailform"> <form action="" method="post"> <fieldset class="ramecek"> <legend>Kontaktní formulár</legend> <fieldset> <label for="email">Váš email:</label> <input class="text" name="email" size="25" class="textpole" value="<?echo $_POST["email"]?>" /> </fieldset> <fieldset> <label for="predmet">Predmet:</label> <input class="text" name="predmet" size="25" class="textpole" /> </fieldset> <fieldset> <label for="kontrola">Kolik je: <?php echo $cislo1.' + '.$cislo2.' ?';?></label> <input class="text" name="kontrola" size="25" class="textpole" /> <input type="hidden" name="cislo1" value="<?php echo $cislo1;?>" /> <input type="hidden" name="cislo2" value="<?php echo $cislo2;?>" /> </fieldset> <fieldset> <label for="zprava">Zpráva:</label> <textarea name="zprava" rows="6" class="textpole" cols="40"></textarea> <input class="submit" type="submit" value="Odeslat" name="odeslano" /> </fieldset> <?php $predmet = $_POST['predmet']; $email = $_POST['email']; $zprava = $_POST['zprava']; if (isset($_POST['odeslano'])){ if ($predmet!='' and $email!="" and $zprava!='' and $_POST['cislo1']+$_POST['cislo2'] == $cislo1+$cislo2){ Mail("slreklamavemail.cz", $predmet, $zprava, "From: " . $email); $akce = 1; }else $akce = 0; } switch ($akce){ case '1': echo '<p>Zpráva byla úspešne odeslána.</p>'; break; case '0': echo '<p>E-mail se <strong>nepodarilo odeslat</strong> prícinou pravdepodobne bude špatné vyplnení kontaktních údaju nebo císelný výsledek.</p>'; break; } ?> </fieldset> </form> |
||
Sanjay Profil * |
#12 · Zasláno: 20. 10. 2010, 20:40:14
Ještě se vracím k tomu te chybi z emailem si nevšímejte jen překlep ale chyba je vtom že mne to nenecha odeslat zpravu počád píše "E-mail se nepodarilo odeslat prícinou pravdepodobne bude špatné vyplnení kontaktních údaju nebo císelný výsledek."
|
||
Časová prodleva: 14 let
|
0