Hallo,

Ik zit met een probleem dat als ik op f5 druk/ de pagina ververs, dat ik een berichtje krijg of ik nogmaals data wil verzenden. Hier op PHPhulp komt dat niet voor. Hoe?
Zonder verdere duidelijke informatie/relevante code zou misschien een mogelijkheid kunnen zijn: zorg dat je waarde in de url wordt aangepast (na verwerken in db), zodat het script niet weer voor verwerking gaat.

Albert de Wit op 19/08/2012 13:35:38

wat je zegt klopt ongeveer wel ja. probleem is, er is maar 1 pagina: index.php

Het klopt of het klopt niet. Niet ongeveer.

Albert de Wit op 19/08/2012 13:35:38

met functie.php kijk wat welke $_GET er is geset dus welke file ik moet includen

Het ging offtopic over grammatica, maar kan het niet laten: lees die zin zelf nog eens en vraag je af of dat goed Nederlands is/duidelijk is.

Je zult er dus voor moeten zorgen dat die $_GET een zodanige waarde bevat, dat het formulier niet opnieuw gepost zal/kan worden.
ik kan het makkelijker schematisch laten zien:

een script/pagina loopt van boven naar beneden



| (index.php)
|
| <formulier $_POST>
|__________________________________
|
| (index.php)
|
| database verwerkt $_POST data
|
| header("Location: index.php");
| exit();
|__________________________________
|
| (index.php)
|
| database verwerkt niets want er is niets gepost
|__________________________________
V

als je redirect naar een pagina, dan geef je de $_POST waardes toch niet mee? Ook niet van een button/submit toch?
Even een nog duidelijker voorbeeld:
index.php

<?php 
session_start();
if( !isset($_GET['page'] ) )
{ 
    $html = 'default.php';
}
else 
{
    $html = $_GET['page'].'.php';
}
?>

<!DOCTYPE html>
 <html lang="nl">
  <head>
    <meta charset="UTF-8" />
    <title>test</title>
  </head>

  <body>
    <?php include $html; ?>  
  </body>
</html>

default.php

<a href="index.php?page=contact">contact</a>

contact.php

<h1>Contact</h1>

<form action="functie.php" method="POST">
<input type="text"  name="email" value="" />
<input type='submit' name="submit" value="posten">
</form>

functie.php

<?php
if( $_SERVER['REQUEST_METHOD'] == 'POST' )
{
  // post waardes afhandelen..

  header('Location:index.php?page=bedankt' );
  exit();
}
?>

bedankt.php

<h1>Bedankt!</h1>
Nee, met header(location....) roep je een 'nieuwe' pagina aan, dus wordt er niets gepost.
ok, ik denk dat ik het iets duidelijker kan uitleggen.

Ik heb ongeveer het volgende


<form action='index.php' method='POST'>
<input type='text' name='Naam'>
<input type='submit' name='send'>


index.php

<?php
if (isset($_POST['send'])){
  $query = mysql_query("INSERT INTO test (id,Naam) VALUES ('','".$_POST['Naam']."')");

  if ($query){
    header("Location: index2.php?".$_SERVER['QUERY_STRING'];)
    exit();
  }
}
?>


dit zou toch moeten werken?
Albert de Wit op 19/08/2012 14:50:55

ok, ik denk dat ik het iets duidelijker kan uitleggen.

Vermoedelijk wel ;-)

Albert de Wit op 19/08/2012 14:50:55

Ik heb ongeveer het volgende

Niet ongeveer. Wat heb je _precies_??!!??!!

Ten aanzien van je code (maar mogelijk heb je dat al):

controleren of een formulier verzonden is doe je met if($_SERVER['REQUEST_METHOD'] == 'POST') en niet met if (isset($_POST['send']))

Je controleert nergens of $_POST['naam'] is ingevuld/bestaat.

Je query is lek (onbeveiligd).

Je past geen foutafhandeling toe.

if ($query) en dan header lijkt me onnodig; zodra het formulier verzonden is en na het verwerken volgt een header.

Waarom naar index2.php? Je hebt toch maar 1 pagina??

Wat zit er in $_SERVER['QUERY_STRING'] en heb je dat wel nodig bij de redirect???
Bart V B op 19/08/2012 10:00:40


Bart, leuk dat je alles voorkauwt, maar daar leert hij totaal niks van. Ik snap dat het goed bedoeld is, maar laat hem eerst zelf eens het een en ander uitvogelen.

Ozzie, mag ik vragen houd jij bent?
Misschien een wat vreemde vraag maar toch.
Een begrijpelijke opmerking hoor, maar ik denk dat ik een zeer ruime levenservaring heb en een olifanten geheugen om in te schatten wat de kunde en onkunde/ beperkingen van iemand is/zijn.

Als ik Albert's geschiedenis terug neem, dan geeft hij ergens aan dat hij het prettig vind als je heel duidelijk tegen hem bent.
Dan moet je hem niet laten spartelen omdat hij iets niet helemaal door heeft, en al zeker niet over hem heen gaan lopen want dat komt niet aan.

Als ik dat niet zou hebben geweten, dan had ik ook niet meer hint's gegeven.
Wat jij doet is het tegenovergestelde wat je met zijn beperking zou moeten doen.
Prikkelbaar maken, en onzeker. Niet doen dus! Stimuleren, duidelijk zijn en op een positieve manier brengen.


Steeds als ik een post van jou zie denk ik dat je avatar een hakenkruis is.
Is dat je bedrijfslogo?

Waar slaat dit nou toch in hemelsnaam op!
Heeft dit enig toevoeging aan dit topic?
Kan een mod dit even richting /dev/null/ sturen.

Toch even reageren op wat hier gezegd wordt...

Bart, ik ben ouder dan de meesten hier en ga er maar vanuit dat ik een ruime levenservaring heb. Daarnaast had mijn opmerking weinig te maken met levenservaring, maar met het stimuleren van zelf dingen doen. Als je altijd dingen blijft vragen, dan kom je zelf geen stap verder. Toen ik begon met PHP en toen ik in het begin hier op het forum zat was ik ook geneigd om heel veel te vragen. Totdat andere, meer ervaren PHP'ers mij erop wezen dat het goed is om ook zelf dingen uit te zoeken. Jij zegt dat Albert aangeeft dat je heel duidelijk tegen hem moet zijn. Daar is niks mis mee, maar staat wat mij betreft los van het feit dat je iemand moet stimuleren om zelf op onderzoek uit te gaan en dingen te leren.

Dan wat betreft de opmerking over het hakenkruis... Misschien was het niet de juiste plek om daar zomaar in een een topic over te beginnen, maar N K had wel gelijk. Je hebt helemaal niet veel fantasie nodig om daar een hakenkruis in te zien, want mij was het ook al opgevallen vanaf dag 1, alleen heb ik er verder niks over gezegd. Ik snap niet waarom iedereen daar zo enorm over struikelt dat N K daar een opmerking over maakt. Dit was goed bedoeld. Wees blij dat sommige mensen kritische opmerkingen durven te maken en niet alles voor zoete koek slikken. En blijkbaar was Albert zich er niet van bewust en hij heeft nu dan ook netjes z'n avatar dan ook aangepast. Prima toch?
Obelix en Idefix op 19/08/2012 15:02:39

[quote="Albert de Wit op 19/08/2012 14:50:55"]
ok, ik denk dat ik het iets duidelijker kan uitleggen.

Vermoedelijk wel ;-)

Albert de Wit op 19/08/2012 14:50:55

Ik heb ongeveer het volgende

Niet ongeveer. Wat heb je _precies_??!!??!!

Ten aanzien van je code (maar mogelijk heb je dat al):

controleren of een formulier verzonden is doe je met if($_SERVER['REQUEST_METHOD'] == 'POST') en niet met if (isset($_POST['send']))

Je controleert nergens of $_POST['naam'] is ingevuld/bestaat.

Je query is lek (onbeveiligd).

Je past geen foutafhandeling toe.

if ($query) en dan header lijkt me onnodig; zodra het formulier verzonden is en na het verwerken volgt een header.

Waarom naar index2.php? Je hebt toch maar 1 pagina??

Wat zit er in $_SERVER['QUERY_STRING'] en heb je dat wel nodig bij de redirect???

[/quote]

Dit is niet waar ik mee bezig ben, dit is een testpagina. Klopt dit, ja of nee?
Ik heb nu index2.php een redirect gestuurd naar index.php en als ik daar refresh krijg ik nog steeds een waarschuwing


[size=xsmall]Toevoeging op 19/08/2012 16:10:41:[/size]

kan ik vanaf index.php mij doorsturen naar index.php?
Albert de Wit op 19/08/2012 15:35:20

[size=xsmall]Toevoeging op 19/08/2012 16:10:41:[/size]

kan ik vanaf index.php mij doorsturen naar index.php?


Als je het goed doet, kan het. Anders kom je in een oneindige loop.....
Probeer het eens ;-)
dat vraag ik mij nu de hele tijd af.

als ik op index.php?mijnaccount een formulier verzend naar index.php?mijnaccount (zelfde dus) en op aankomst worden $_POST['send'] en $_POST['naam'] gelezen, word in database gezet. Daarna doorsturen naar index.php?mijnaccount, nu komt de vraag, bestaat $_POST['send'] nu nog?

Reageren