Avatar billede naquer Nybegynder
11. marts 2004 - 07:36 Der er 6 kommentarer og
1 løsning

Hvad læser php først?

Hej

Hvis jeg har en side som denne:

<form action="<? echo "$_SERVER['PHP_SELF']"; ?>" method="post">
  Her kan du tilføje nyheder<p />
  <div class="bold">Overskrift</div>
    <input type="text" name="overskrift" /><p />
  </div>
  <div class="bold">Nyhed</div><textarea name="nyhed" rows="10" cols="40"></textarea><p />
  <input type="submit" name="submit" value="Tilføj">
</form>

<?

$submit = $REQUEST['subimt'];
$overskrift = $_REQUEST['overskrift'];
$nyhed = $_REQUEST['nyhed'];

if(!isset($submit)) {
    echo "Du skal trykke på submit knappen først";
}

?>


Vil echoet: Du skal trykke på submit knappen først, blive udskrevet hvis brugeren kommer til siden, uden at have trykket på submit knappen, eller venter den helt med at læse PHP'en før submit er trykket på?
Altså kort og godt: Læser browseren hele siden, inklusiv PHP'et og udskriver derefter det HTML der bliver ud af det eller hvordan gør den det?
Avatar billede anhansen Nybegynder
11. marts 2004 - 07:55 #1
Den læser hele siden - hvis jeg forstår dig ret. Det der kommer efter formen vil også blive fortolket og lavet til html - når du så trykker på submit vil siden blive læst ind igen på samme måde - du har nu bare dine post variabler med.

Hvad er problemet med siden da?
Avatar billede taskmgr Nybegynder
11. marts 2004 - 07:58 #2
Hele din side bliver indlæst, men funktionerne i din if-sætning bliver kun eksekveret, hvis (if) dine kriterier (!isset($submit)) er opfyldt.

Dvs. ja, din echo() vil blive udskrevet når brugeren kommer til siden, hvis der ikke er trykket på submit knappen.
Avatar billede taskmgr Nybegynder
11. marts 2004 - 07:59 #3
og så ret lige til $_REQUEST['submit'];
Avatar billede taskmgr Nybegynder
11. marts 2004 - 08:10 #4
og din første linie, ret den til:
<form action="<? echo $_SERVER['PHP_SELF']; ?>" method="post">
Avatar billede taskmgr Nybegynder
11. marts 2004 - 08:21 #5
Lige for at få det på det rene:

PHP parser det som du har fortalt at den skal parse og "omdanner" det f.eks. til HTML.
Browseren læser kun det den får serveret af serveren.
Avatar billede naquer Nybegynder
11. marts 2004 - 14:19 #6
Ok. Hvad sker der så hvis jeg nu laver scriptet om således at der står:

<form action="<? echo "$_SERVER['PHP_SELF']"; ?>" method="post">
  Her kan du tilføje nyheder<p />
  <div class="bold">Overskrift</div>
    <input type="text" name="overskrift" value="$overskrift"/><p /> // Her er tilføjet en 'value' til overskrift formen!
  </div>
  <div class="bold">Nyhed</div><textarea name="nyhed" rows="10" cols="40"></textarea><p />
  <input type="submit" name="submit" value="Tilføj">
</form>

<?

$submit = $REQUEST['subimt'];
$overskrift = $_REQUEST['overskrift'];
$nyhed = $_REQUEST['nyhed'];

if(!isset($submit)) {
    echo "Du skal trykke på submit knappen først";
}

?>


Hvad sker der så hvis brugeren bare kommer til siden, uden at have trykket på submit knappen?
Der står jo    <input type="text" name="overskrift" value="$overskrift"/>
men variablen $overskrift, er jo ikke blevet sat. Melder den så fejl, eller tæller variablen som var den tom? ( "" )
Avatar billede jakoba Nybegynder
11. marts 2004 - 19:11 #7
Din .php fil bliver læst (og fortolket) fra en ende af.

Det jeg tror du jar overset er at den der side bliver fortolket TO gange.

1)  Når brugeren følger et link hen til siden.
  Så følger der ikke nogen data med den reques  isset($submit) er false

2)  når brugeren har tryjjet på submitknappen.
  Så følger de data brugeren indtastede med    isset($submit) er true

De data der evt følger med bliver læst af php inden scriptet overhodedet starter, så det er rimeligt ligegyldigt hvor i dit script du udfører den test.

mvh JakobA
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