[php] variable blijft true na page refresh

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
ik heb een pagina die een mailtje verstuurd als er op submit wordt gedrukt, echter als ik de pagina refresh, nadat het mailtje is gestuurd, blijft de value van $submit op true, waardoor op het moment van refreshen het mailtje nog een keer wordt verstuurd...


PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
<html>

<head>
<title>contact.php</title>
</head>
<body>
<?
$submit = $_POST["submit"];

if ($submit)

    {
        $emailadres = $_POST["emailadres"];
        $vraag = $_POST["vraag"];
        $mailcheck = mail($vullings, $onderwerp, $vraag,
                "From: $emailadres\r\n" .
                "Reply-To: $emailadres\r\n" .
                "X-Mailer: PHP/" . phpversion());
    }
    
?>

<form method="POST" action="contact.php">

//hier staan dus de inputformen

<p align="center"><input type="submit" value="Verstuur" name="submit"></p>

</form>
</body>
</html>


Ik heb al geprobeerd om $submit als waarde 0 mee te geven aan het eind van de if-lus, en ook met unset ($submit) lukt het me niet...

Iemand een idee??

Guus

[ Voor 15% gewijzigd door gorgi_19 op 25-06-2004 13:42 ]


Acties:
  • 0 Henk 'm!

  • 4Real
  • Registratie: Juni 2001
  • Laatst online: 14-09-2024
PHP:
1
2
3
4
5
<?

header("Location: contact.php");

?>


zo wordt hij doorgestuurd naar de zelfde pagina en ben je volgens mij van het probleem af

Acties:
  • 0 Henk 'm!

  • Lentje
  • Registratie: Juni 2001
  • Laatst online: 12-09 17:04
Doe je niet telkens als je hem refreshed de gegevens opnieuw verzenden?

Edit: Oplossing van 4real is het beste idd.

[ Voor 25% gewijzigd door Lentje op 25-06-2004 13:43 ]


Acties:
  • 0 Henk 'm!

  • Brakkie
  • Registratie: Maart 2001
  • Niet online

Brakkie

blaat

4Real schreef op 25 juni 2004 @ 13:41:
PHP:
1
2
3
4
5
<?

header("Location: contact.php");

?>


zo wordt hij doorgestuurd naar de zelfde pagina en ben je volgens mij van het probleem af
Bedenk wel dat er geen output mag worden verstuurd voordat je de header functie aanroept. Om dit probleem te voorkomen kun je ob_start() en ob_end_flush() aanroepen.

Uitgebreide docs:
http://nl.php.net/manual/nl/function.header.php

Systeem | Strava


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
maar als ik de gegevens heb ingevuld, en het mailtje is verstuurd, zijn vervolgens de invoervelden leeg, als ik dan de pagina refresh, dan blijkt dat de waardes die in de invoervelden STONDEN nog een keer gemailt worden, dit kan alleen als $submit true is, terwijl ik toch verwacht dat als ik de pagina rfresh, $submit dan weer leeg zou moeten zijn....

Guus

Acties:
  • 0 Henk 'm!

  • Skaah
  • Registratie: Juni 2001
  • Laatst online: 16-09 18:38
Ja, logisch, je post nog een keer. Zet in een sessie dat je al verzonden hebt. Of gebruik 2 pagina's. Of wat 4Real zegt.

[ Voor 53% gewijzigd door Skaah op 25-06-2004 13:51 ]


Acties:
  • 0 Henk 'm!

  • bigbeng
  • Registratie: Augustus 2000
  • Laatst online: 26-11-2021
Verwijderd schreef op 25 juni 2004 @ 13:49:
maar als ik de gegevens heb ingevuld, en het mailtje is verstuurd, zijn vervolgens de invoervelden leeg, als ik dan de pagina refresh, dan blijkt dat de waardes die in de invoervelden STONDEN nog een keer gemailt worden, dit kan alleen als $submit true is, terwijl ik toch verwacht dat als ik de pagina rfresh, $submit dan weer leeg zou moeten zijn....

Guus
Als je een refresh doet krijg je toch ook van je browser te horen dat dat alleen kan door opnieuw een post uit te voeren? Dat is toch een goede hint over wat er gebeurt?

Door de actie van 4Real verdwijnt de postactie uit de history van je browser (tenminste bij IE, ik weet niet hoe andere browsers dit doen)

Acties:
  • 0 Henk 'm!

  • xander88
  • Registratie: September 2003
  • Laatst online: 28-02-2007
Verwijderd schreef op 25 juni 2004 @ 13:49:
maar als ik de gegevens heb ingevuld, en het mailtje is verstuurd, zijn vervolgens de invoervelden leeg, als ik dan de pagina refresh, dan blijkt dat de waardes die in de invoervelden STONDEN nog een keer gemailt worden, dit kan alleen als $submit true is, terwijl ik toch verwacht dat als ik de pagina rfresh, $submit dan weer leeg zou moeten zijn....

Guus
nog een keer:

form.php (het formulier) => actie.php (stuur de mail) => en weer terug => form.php (of waar dan)
PHP:
1
2
3
4
<?php // in actie.php
if(mail()) header("Location: contact.php?msg=uw email is verstuurd dank u wel"); 
else header("Location: contact.php?msg=uw mail kon niet worden verstuurd!");
?>

o ja, in zo'n header() mogen geen \n of \r karakters voorkomen. Anders krijg je een leuke server error.
Hopelijk heb je er wat aan!

[ Voor 4% gewijzigd door xander88 op 25-06-2004 14:11 ]


Acties:
  • 0 Henk 'm!

Verwijderd

Het kan best in een document volgens mij, pseudo code:
PHP:
1
2
3
4
5
6
7
8
9
10
<?
//form check, mail send, header maken
else
?>
<html>
formulier
</html>
<?
eind
?>

[ Voor 38% gewijzigd door Verwijderd op 25-06-2004 14:18 ]


Acties:
  • 0 Henk 'm!

  • xander88
  • Registratie: September 2003
  • Laatst online: 28-02-2007
Verwijderd schreef op 25 juni 2004 @ 14:17:
Het kan best in een document volgens mij, pseudo code:
PHP:
1
2
3
4
5
6
7
8
9
10
<?
//form check, mail send, header maken
else
?>
<html>
formulier
</html>
<?
eind
?>
Ja, geen speld tussen te krijgen. Ik stop vaak al mijn database en mail handelingen in functies 1 file. Maakt het lekker overzichtelijk, maar dat is een persoonlijke keuze.

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Goed, ik ben eruit... met de header werkt het nu perfect...

BEdankt allemaal!
Pagina: 1