Avatar billede jeff.d Nybegynder
22. januar 2003 - 02:42 Der er 1 kommentar og
1 løsning

Include ud fra variabel

Jov jeg tænkte om det var muligt at lave et script der includere ud fra hvad en variabel er.

altså
hvis man nu går ind på www.domæne.dk/side.php?data=info
så inkludere scriptet www.domæne.dk/data/info.inc

<?
if (!$data) { include("data/fejl.inc"); }
else { include("data/$data.inc"); }
?>

virker desværre ikke...

hvad gør jeg?
Avatar billede Slettet bruger
22. januar 2003 - 03:13 #1
Ser da eller nogenlunde rigtigt ud. Afhængig af din PHP version.

Har du en nyere version af PHP skal du (afhængig af serveropsæt) bruge $_GET['data'] i stedet for $data i ovenstående. Læs mere herom:
http://dk.php.net/manual/en/language.variables.predefined.php

Kan godt være du var klar over ovenstående, men nu står det her så bare engang til :)

Iøvrigt skal du passe på bare at inkludere en variabel du modtager på den måde. Brugeren kan jo skrive i denne, hvad han vil.

Du er sikret lidt, fordi du kun kigger i mappen /data/ og har .inc som faste dele af din sti. Men ellers foretil dig $_GET['data'] af brugeren (via URL'en) sættes til ".htaccess" eller "../.htaccess" el. lign, og du så bare uden at checke noget laver include($_GET['data']). Det ville ikke være heldigt.

Enten er du modig og gør, som du har gang i:

if (!isset($_GET['data']))
  include("data/fejl.inc");
else
  include("data/".$_GET['data'].".inc");

(Funktionen isset() checker bare om en variabel er sat eller ej)

Eller så checker du explicit indhold af $_GET['data'] i stil med:

if (isset($_GET['data']) && ($_GET['data'] == 'side_a' || $_GET['data'] == 'side_b')) {
  # nu ved vi at vi kun inkluderer side_a eller side_b
  include("data/".$_GET['data'].".inc");
} else
  include("data/fejl.inc");
Avatar billede jeff.d Nybegynder
22. januar 2003 - 14:59 #2
Mange tak :)
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