Autor | Zpráva | ||
---|---|---|---|
kevin00 Profil |
Ahoj,
vytvořil jsem si kontaktní formulář s možností odeslání na email (odesílání pomocí PHP). Vše funguje. Nemohu pouze nikde najít, jak zaručit, aby se po odeslání emailu uživatel vrátil zpět na formulář či hl. stránku a nezůstal "vyset" na stránce s informací, že mail se odeslal. Děkuji Formulář HTML: <form action ="posta.php"> <p> <input name="jmeno" size="30"> </p> <p><br> <input name="email" size="30"> </p> <p><br> <textarea name="zprava" cols="22" rows="5"></textarea> </p> <p><br> <input type="reset" name="Obnovit" id="odeslat" value="Obnovit" /> <label> <input type="submit" name="reset" id="reset" value="Odeslat" /> </label> </p> </form> PHP soubor: <?php if ( Mail("kevin.kvik@gmail.com", $jmeno, $zprava, "From: " . $email) ) echo "Mail byl odeslán"; else echo "Mail se nepodařilo odeslat"; ?> |
||
Mistr Profil |
#2 · Zasláno: 28. 12. 2009, 02:49:56
|
||
Yuhů Profil |
#3 · Zasláno: 28. 12. 2009, 02:58:11
Ona ta zpráva s informací, že se mail odeslal, je docela důležitá. Protože se taky může neodeslat. Já bych dal pod informací, že se odeslalo, nebo neodeslalo, normální odkaz, třeba "Přejít na hlavní stránku".
Ovšem přesměrování ze stránky, která odesílá mail, je celkem dobrý nápad. Zabrání dvojímu odeslání mailu. Takže ideální postup je přesměrovat na stránku, která vypíše, jestli se to povedlo (to se dozví podle parametru v URL). |
||
kevin00 Profil |
#4 · Zasláno: 28. 12. 2009, 03:24:54
Děkuji za odpověď.
S tím tlačítkem to není také špatný nápad. Možná si již moc vymýšlím (omlouvám se jsem opravdu začátečník a na tomto se učím), ale šlo by buď tlačítko Zpět na hlavní stránku časovat na např. 10s a poté automaticky přesměrovat (s viditelností ubíhajícího času) a nebo nastavit, že při odeslání zprávy se vrátím na hlavní stránku a při neodeslání zprávy se zobrazí obrazovka s informací o neodeslání emailu a tlačítkem Zpět ? |
||
Webonym Profil * |
#5 · Zasláno: 28. 12. 2009, 07:12:22
Co takhle skloubit HTML kód formuláře a PHP kód do jednoho souboru posta.php a kontrolovat, zda bylo kliknuto na Odeslat a načetla se stránka - pak se skript provede, nebo se stránka jen načetla - pak bude část skriptu s funkcí Mail ignorována.
Stačí do kódu mezi <form> a </form> přidat jeden <input> navíc: <input type="hidden" name="jeodeslano" value="ano"> A na začátek PHP kódu přidat podmínku: <?php if ($_POST['jeodeslano'] == 'ano') { tvuj puvodni PHP kod bez <?php na zacatku a ?> na konci } ?> Mimochodem, doporučuju používat metodu odeslání POST. <form action="posta.php" method="post"> |
||
Mistr Profil |
#6 · Zasláno: 28. 12. 2009, 12:36:35
kevin00:
„nebo nastavit, že při odeslání zprávy se vrátím na hlavní stránku“ Avšak uživatel, jemuž se odeslání mailu zdaří, nebude mít informaci o svém úspěšném počínání. Bude se jen domnívat, že to se mu to snad zdařilo (viz Yuhůův příspěvek [#3]). |
||
Časová prodleva: 15 dní
|
|||
kevin00 Profil |
#7 · Zasláno: 12. 1. 2010, 20:26:27 · Upravil/a: kevin00
Trošku to oživím, snad se na mě nebudete zlobit.
Mám vytvořený formulář: <table border="0" cellspacing="0" cellpadding="0"> <tr> <td width="82" height="253" valign="top"> Jméno:<br> <br style="line-height:30px "> Email:<br> <br style="line-height:30px "> Zpráva:<br> <br style="line-height:12px "> </td> <td valign="top" width="168" height="253"> <form action="posta.php" method="post" enctype="multipart/form-data" style="margin:0px; padding:0px " id="form"> <input type="hidden" name="jeodeslano" value="ano"> <table border="0" cellspacing="0" cellpadding="0"> <tr> <td valign="top" width="168" height="40"><input name="input" type="text" class="input"></td> </tr> <tr> <td valign="top" width="168" height="40"><input name="" type="text" class="input"></td> </tr> <tr> <td valign="top" width="168" height="24"><textarea name="textarea" class="textarea" rows="0" cols="0"></textarea></td> </tr> <tr> <td valign="top" width="168" height="24"> </td> </tr> <tr> <td valign="top" width="168" height="30"><div style="margin-left:40px; margin-top:2px;"> <img src="images/pointer.gif" alt="" style="margin-right:3px "><a href="#" class="y" onClick="document.getElementById('form').reset()"><strong>obnovit</strong></a><img src="images/pointer.gif" alt="" style="margin-right:3px; margin-left:14px " ><a href="#" class="y" onClick="document.getElementById('form').submit()"><strong>odeslat</strong></a><br> </div> </td> </tr> </table> </form> který bych chtěl odesílat na email pomocí scriptu php: <?php if ($_POST['jeodeslano'] == 'ano') { if ( Mail("kevin.kvik@gmail.com", $Jméno, $Zpráva, "From: " . $Email) ) echo "Mail byl odeslán"; else echo "Mail se nepodařilo odeslat"; Header("Location: http://kevin00.ic.cz"); } ?> Na email mi ovšem chodí prázdný mail, bez jména, emailu i zprávy. Nemohu najít kde dělám chybu :( |
||
kevin00 Profil |
#8 · Zasláno: 13. 1. 2010, 21:43:22
Problém vyřešen. Stačilo v html kódu správně nastavit hodnoty input name
|
||
Časová prodleva: 1 rok
|
|||
KAmzík Profil * |
#9 · Zasláno: 2. 4. 2011, 13:59:01
Prosímtě co jsi tedy změnil aby ti to fungovalo ? Díky moc
|
||
Časová prodleva: 13 let
|
0