PHP contact form
 
pocukrani 20. jan 2011 16:23:05 Pridružen od:
24. apr 2010
101 objav
17 0 0
#1

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)
{
?>
všeč(0) ni všeč(0) spam(0)
 
DiTi 20. jan 2011 16:31:33 Pridružen od:
3. apr 2010
324 objav
218 7 1
#2

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.


všeč(0) ni všeč(0) spam(0)
 
juresl 20. jan 2011 17:23:03 Pridružen od:
16. avg 2007
209 objav
74 23 4
#3

Narediš en pogoj.. če pošlješ podatke se php koda izvrši, takoj za <?php daj:


if (isset($_POST['poslji'])) {

in pred ?> daj }


všeč(0) ni všeč(0) spam(0)
 
bostjan 20. jan 2011 21:31:09 Pridružen od:
31. jul 2008
643 objav
689 30 9
#4

samo za info: uporaba <label> je čisto napačna


všeč(1) ni všeč(0) spam(0)
 
pocukrani 20. jan 2011 22:08:41 Pridružen od:
24. apr 2010
101 objav
17 0 0
#5

DiTi, juresl hvala za pomoč. Dal sem pogoj, da ko se koda izvrši se stran refreša in deluje ;)

bostjan: hvala za warning, odpravljeno :)


všeč(0) ni všeč(0) spam(0)
 
 

🔒 Za odgovor na to temo se moraš prijaviti.

Prijavi se