Avatar billede cool_casper Nybegynder
14. november 2003 - 15:23 Der er 9 kommentarer og
1 løsning

PHP virker ikke ordentligt?

Hej,


Jeg har en Windows XP PRO kørende med IIS som en test-server for mine hp's. Jeg har lige inst. PHP og MySQL på den. Der ser ud til at funke. Dog opfører PHP sig lidt mærkeligt..!

Jeg er LIGE begyndt på php så det lidt nyt for mig (tidligere asp-nørd! ;P)
Hvis jeg laver et dokument og skriver echo 'PHP virker!';
Udskriver den fint nok. Men hvis jeg f.eks. skal kalde en variabel og den ikke findes får jeg fejl. Jeg prøver med dette eks:

<HTML>
<BODY>
<?php
if($mode=='save'){
    echo 'Hello ' . $Name . ',<br><br>';
    echo 'You\'ve inserted these data:<br>';
    echo 'Last name: ' . $LastName . '<br>';
    echo 'Favourite computer: ' . $FavouriteComputer . '<br>';
}
?>
<form action="?mode=save" method="post">
Your name: <input name="Name" type="text"><br>
Last name: <input name="LastName" type="text"><br>
Favourite Computer: <select name="FavouriteComputer" size="1">
    <option>1</option>
    <option>2</option>
    <option>3</option>
  </select><br>

  <input name="" type="submit" value="Send!">
</form>
</BODY>
</HTML>

Men får følgende fejl: Notice: Undefined variable: mode in G:\webroot\projekter\php\wrox\forms.php on line 4

Det sjove er så at hvis jeg uploader den til f.eks. cliches server så virker det!! http://visitme.dk/php/wrox/forms.php

Tydeligvis må der være noget galt med min inst. og/eller opsætning - MEN hvad??
Avatar billede spunk13 Nybegynder
14. november 2003 - 15:34 #1
For at PHP kan finde ud af hvad dine variabler indeholder, må du definere det et eller andet sted. Det gør du ved at skrive $variabel = $_GET['variabel']; hvis variablen skal hentes fra adresselinjen(GET), og $variabel = $_POST['variabel']; hvis variablen er sendt via en form med POST metoden.

I dit tilfælde skal du så bare indsætte dette, øverst i dit script:

$mode = $_GET['mode'];
$Name = $_POST['name'];
$LastName = $_POST['LastName'];
$FavouriteComputer = $_POST['FavouriteComputer'];

Problemet er at der i tidligere versioner af PHP, var slået en funktion til, som åbnede 'genveje' til forudbestemte variabler og nogle af de metoder til at arbejde med dem på. Altså hvor man førhen skulle skrive $REMOTE_ADDR for at få klienten's IP, skal man nu skrive $_SERVER['REMOTE_ADDR'] - hvis register_globals altså er slået fra i 'php.ini'.
Avatar billede cool_casper Nybegynder
14. november 2003 - 15:35 #2
okai, takker, men kan jeg ikke gøre sådan at det selv finder ud af det - ligesom på f.eks. http://visitme.dk/php/wrox/forms.php (Cliche.dk's server) ??
Avatar billede cool_casper Nybegynder
14. november 2003 - 15:38 #3
Det hjalp at sætte register_globals = On !
Problem solved!
Takker for lidt kodehjælp og opsætning af php.ini ! :)
Avatar billede cen Nybegynder
14. november 2003 - 15:39 #4
sæt
register_globals = Off
til
register_globals = On
i php.ini, som ligger i dit windows dir.
Avatar billede cen Nybegynder
14. november 2003 - 15:40 #5
hmm forsent...
Avatar billede spunk13 Nybegynder
14. november 2003 - 15:41 #6
Jo, du redigerer bare i 'php.ini', søger efter register_globals og sætter den til ON der hvor der >ikke< er sat et semikolon ; i den første linje.

Jeg vil dog KRAFTIGT fraråde dig at gøre dette, da dine scripts så kun vil virke med register_globals on - hvilket IKKE er standard længere. Dvs. at du skal rette >alle< dine filer, hvis du en gang skulle få brug for at overføre dem til et andet sted. Så hvorfor ikke bare lave dem ordentligt fra starten af?
Avatar billede cool_casper Nybegynder
14. november 2003 - 15:41 #7
Hvad er fordele/ulemper ved register_globals = On ?
Avatar billede cool_casper Nybegynder
14. november 2003 - 15:42 #8
hehe.. Der fik jeg svar på det.. Men jeg sætter register globals til Off then! ;)
Avatar billede spunk13 Nybegynder
14. november 2003 - 15:44 #9
Det er ikke standard længere, og det åbner åbenbart huller, kig evt. her:

http://dk.php.net/register_globals
Avatar billede cool_casper Nybegynder
17. november 2003 - 14:34 #10
Takker...
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
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

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