PHP contact form

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 }

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

1

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 :)