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
kevin00:
Co třeba tohle:
<?
Header("Location: http://www.jakpsatweb.cz");
?> 
Yuhů
Profil
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
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 *
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
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]).
kevin00
Profil
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">&nbsp;</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
Problém vyřešen. Stačilo v html kódu správně nastavit hodnoty input name
KAmzík
Profil *
Prosímtě co jsi tedy změnil aby ti to fungovalo ? Díky moc

Vaše odpověď


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: