Gå til innhold

index.php?page=XXXXX ? ? ?


Anbefalte innlegg

Videoannonse
Annonse

Mange er nok ikke enige at dette er ett bra valg, men enkelt og greit :)

 

Legg dette scriptet der du vil sidene skal komme inn i designet;

 

<?php

/* KONFIGURASJON */
$default = "home";   /* forsiden */
$directory = "file";    /* mappen hvor undersidene ligger */
$extension = "php"; /* endelsen på sidene */

/* SCRIPTET STARTER HER *****************************************************/
$page = $_GET['page']; 

if(!empty($page)){ 
if (preg_match('/(http:\/\/|^\/|\.+?\/)/', $page)) { echo "Du har inkludert en side som er ugyldig!)"; // for å hindre at det includeres filer fra uønskede plasser 
} elseif (file_exists("$directory/$page.$extension")) include("$directory/$page.$extension"); 
} 

?>

 

Så lager du linker som dette index.php?page=kontakteksempel :)

Endret av HoaXed
Lenke til kommentar

Hoaxed... preg_match, er ikke det en veldig treg funksjon? Kan man ikke heller kvitte seg med de farlige tegnene:

 

<?php

/* KONFIGURASJON */
$default = "home";   /* forsiden */
$directory = "file";    /* mappen hvor undersidene ligger */
$extension = "php"; /* endelsen på sidene */

/* SCRIPTET STARTER HER *****************************************************/
$page = $_GET['page'];

$page = str_replace('.', '', $page);
$page = str_replace('/', '', $page);
$page = str_replace('\\', '', $page);

if(!empty($page)){
 if (file_exists("$directory/$page.$extension")) include("$directory/$page.$extension");
}

?>

 

:hmm: ?

Lenke til kommentar
Hoaxed... preg_match, er ikke det en veldig treg funksjon? Kan man ikke heller kvitte seg med de farlige tegnene:

 

<?php

/* KONFIGURASJON */
$default = "home";   /* forsiden */
$directory = "file";    /* mappen hvor undersidene ligger */
$extension = "php"; /* endelsen på sidene */

/* SCRIPTET STARTER HER *****************************************************/
$page = $_GET['page'];

$page = str_replace('.', '', $page);
$page = str_replace('/', '', $page);
$page = str_replace('\\', '', $page);

if(!empty($page)){
 if (file_exists("$directory/$page.$extension")) include("$directory/$page.$extension");
}

?>

 

:hmm: ?

5514326[/snapback]

Bee

 

Faktisk helt enig :) Kan godt være fler feil der. Brukte dette for lenge siden..

Endret av HoaXed
Lenke til kommentar

Når man først snakker om optimal kode:

 

<?php

/* KONFIGURASJON */
$default = "home";   /* forsiden */
$directory = "file";    /* mappen hvor undersidene ligger */
$extension = "php"; /* endelsen på sidene */

/* SCRIPTET STARTER HER *****************************************************/


$page = str_replace(array('.', '/', '\\'), array('', '', ''), $_GET['page']);

if(!empty($page)){
if (file_exists("$directory/$page.$extension")){ include("$directory/$page.$extension");
}
}

?>

 

Det er jo sefflig enda bedre å bytte ut " med ', og samme med variablene, men er for lat for det.

Endret av Zic0
Lenke til kommentar
Hoaxed... preg_match, er ikke det en veldig treg funksjon?

 

Nope, det er ikke en veldig treg funksjon. Dersom den hadde vært treg så må du ikke glemme hva den sjekker, en liten url variabel!

 

Det er viktig å tenke hva man bruker funksjoner til. I dette tilfellet vil det være meget enkelt å kun bruke preg_match til å lete etter et punktum. Dersom den finner det så er sjansen til stede for at noen bruker ../../ eller www.domene.no eller andre uheldige ting. Det eneste man behøver å tenke på da er at filnavnene ikke kan inneholde . på andre steder enn ved ext - så har man hindret at noen inkluderer andre filer på serveren eller fra andre steder på internett.

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...