Avatar billede pelyja Nybegynder
27. november 2003 - 17:17 Der er 9 kommentarer og
2 løsninger

problemer med form submit og if($submit)

Jeg laver et simpelt program som:

if($submit){
  echo "Submit";
}

<form method="post" action="<? echo $PHP_SELF ?>">
<input type="text" name="hej">
<input type="submit" name="submit" value="tryk">
</form>


Første gang jeg går ind på siden, er submit ikke sat, hvilket er helt fint. Men hvis jeg forsøger et "refreshe" siden, bliver submit ved med at være sat.
Hvordan undgår jeg det??
Avatar billede billen Nybegynder
27. november 2003 - 17:44 #1
refresher ved hjælp af F5 (explorer... CTRL+R mozilla)? Hvordan går du ind på siden? bare ved hjælp af at skrive min_side.php?

Har du prøvet at omdøbe din submitknap til noget andet, såsom submit2?
Avatar billede pelyja Nybegynder
27. november 2003 - 17:56 #2
Jeg har forsøgt at omdøbe den. Det virker ikke.
Forestiller mig, at det måske har med cachen at gøre?
Avatar billede pelyja Nybegynder
27. november 2003 - 18:44 #3
Jeg refresher med F5 explorer
Avatar billede squashguy Nybegynder
27. november 2003 - 18:46 #4
Dit problem er klassisk. Efter submit skal du lave en redirect, for at få slettet formdata. Noget i denne stil:

if($submit){
  // behandle data
  header("location: side.php");
  exit();
}

...

der må ikke sendes noget output til browseren ved redirect.
Avatar billede googolplex Novice
27. november 2003 - 18:48 #5
if(isset($submit)){
  echo "Submit";
}

Prøv lige det.
Avatar billede googolplex Novice
27. november 2003 - 18:48 #6
Ja, squashguy har ret :)
Avatar billede gil-galad Nybegynder
27. november 2003 - 18:52 #7
hvad med at fyre denne ind i toppen af dit dokument?:
<?php
if(isset($_POST['hej'])){
header("LOCATION: " . basename(__FILE__));
}
?>
Avatar billede billen Nybegynder
27. november 2003 - 19:08 #8
Det kan godt være jeg har misforstået dig, men jeg gik ikke ud fra, at du havde trykket på submit knappen efter, at du var kommet ind på siden, men bare refreshet den med det samme.
Avatar billede pelyja Nybegynder
27. november 2003 - 22:07 #9
Hvor latterligt.
Havde lige skrevet et langt svar, og ville give point vha af avanceret. Da forsvandt hele mit svar og var ikke længere tilgængeligt. Det er da ikke brugervenligt :)

squashguy >> Jeg får denne fejl, når jeg bruger header():
Warning: Cannot add header information - headers already sent by (output started at C:\apache\htdocs\public_html\php\primitivphp.php:7) in C:\apache\htdocs\public_html\php\primitivphp.php on line 27

billen >> Jeg havde vist ikke formuleret mig tydelig. Det var EFTER, at jeg havde submittet én gang, at den blev ved med at bevare submit-parameteren. Jeg havde bare forestillet mig, at siden ville blive nulstillet og man startede forfra, efter at have opdateret siden.

Jeg har løst problemet vha: <a href = <? echo $PHP_SELF ?>>[ Prøv igen ]</a>
(selvom det måske ikke er det problem, som jeg har skitseret.
Tak for hjælpen ...
Avatar billede squashguy Nybegynder
27. november 2003 - 22:14 #10
Warning: Cannot add header information - headers already sent by...

kommer fordi du får sendt noget output til browseren inden du kalder header()

det kan være så lidt som et linieskift i toppen inden <?php ... ?>
Avatar billede pelyja Nybegynder
27. november 2003 - 22:17 #11
Vil det sige, at jeg skal have if($submit) som det allerførste? helt i toppen eller hvad, eller en slags header i toppen af dokumentet?
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester