PHP contact form
4 naročniki
4 naročniki
LP, na neki strani sem izdelal php form, ki pač pošlje določene podatke na email. naredil sem tako, da se form izvrši na isti strani kot je ta form. Do sem je vse lepo in prav, pojavi pa se problem, ko recimo stran refrešam se forma zopet izvrši - email se zopet pošlje. Kako odpraviti ta problem? Prilagam še kodo: HTML
<form action="<?php $_SERVER['PHP_SELF'] ?>" method="post" name="form1" id="form1" onsubmit="MM_validateForm('ime','','R','email','','RisEmail','telefonska','','RisNum','vsebina','','R');return document.MM_returnValue">
Vaše ime:
<label>
<input type="text" name="ime" id="ime" class="formbutton" />
</label>
email:
<label>
<input type="text" name="email" id="email" class="formbutton" />
</label>
tel:
<label>
<input type="text" name="telefonska" id="telefonska" class="formbutton" />
</label><br />
sporočilo:<br /> <label>
<textarea name="sporocilo" id="sporocilo" cols="45" rows="5" class="formbutton"></textarea>
</label>
<input type="submit" name="poslji" id="poslji" value="Pošlji" class="formbutton" />
<label>
<input type="reset" name="reset" id="reset" value="Počisti" class="formbutton" />
</label>
</form>
in pa php kodo:
<?php
/* Nastavitev maila */
$myemail = "info@iiiiiiiiiiii.si";
$naslov = "Novo sporočilo! Poslano z spletne strani.";
$charset = "Content-type: text/html; charset=UTF-8\r\n";
/* Check all form inputs using check_input function */
$ime = check_input($_POST['ime'], "Vpišite svoje ime");
$telefonska = check_input($_POST['telefonska'], "Telefon");
$email = check_input($_POST['email']);
$sporocilo = check_input($_POST['sporocilo'], "Napišite sporočilo");
/* If e-mail is not valid show error message */
if (!preg_match("/([\w\-]+\@[\w\-]+\.[\w\-]+)/", $email))
{
show_error("E-mail address not valid");
}
/* Let's prepare the message for the e-mail */
$message = "Sporočilo!
Novo sporočilo:
Ime: $ime
Iz e-mail naslova: $email
Telefonska: $telefonska
Sporočilo:
$sporocilo
End of message
";
/* Send the message using mail() function */
mail($myemail, $naslov, $message, $charset);
/* Functions we used */
function check_input($data, $problem='')
{
$data = trim($data);
$data = stripslashes($data);
$data = htmlspecialchars($data);
if ($problem && strlen($data) == 0)
{
show_error($problem);
}
return $data;
}
function show_error($myError)
{
?>
4 odgovori
ko izpišeš da je bil email poslan avtomatsko v 2,3 sekundah preusmeriš stran nazaj na isto (forma se ne bo še enkrat poslala) dodaš pa tudi na primer besedilo Preusmerjam... takrat mislim, da nihče ne bo šel osveževat strani.
Narediš en pogoj.. če pošlješ podatke se php koda izvrši, takoj za <?php daj:
if (isset($_POST['poslji'])) {
in pred ?> daj }