Versio

include lukt niet...

Overzicht Reageren

Bob van der Valk

Bob van der Valk

02/01/2011 02:19:13
Quote Anchor link
Beste Lezers,

Ik loop hier mee een beetje vast..
Quote:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
<?php
    $section
    = "sections/".$_GET['section'];
    $page       = $_GET['page'];
    if (file_exists($section.$page.'.php')) {
    include $section.$page;
    }
else{ ?>

<h3>ERROR 404</h3>
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<?php }; ?>


En ik vraag de pagina aan met http://url.nl/?section=home&page=home
Ziet iemand hier wat ik verkeerd doe?

Alvast heel erg bedankt!
 
PHP hulp

PHP hulp

25/05/2012 04:11:54
Gesponsorde koppelingen:
BHosted Hosting al vanaf € 1,- per maand

Controleer nu gratis jouw domeinnaam:

  
 
- SanThe -

- SanThe -

02/01/2011 02:29:00
Quote Anchor link
Je vraagt nu deze include: sections/homehome.php
 
Bob van der Valk

Bob van der Valk

02/01/2011 02:30:19
Quote Anchor link
Owja natuurlijk!

Hardstikke bedankt!
 
TJVB tvb

TJVB tvb

02/01/2011 11:21:15
Quote Anchor link
Hoe ga je dit verder controleren? Want zoals het er nu staat is het lek.
 
Mike Smit

Mike Smit

02/01/2011 11:23:08
Quote Anchor link
Inderdaad, wat TJVB tvb al zegt. Dit script is zo lek als het maar kan. Je stelt de gebruiker in staat om elk bestand uit de opgegeven map te includen.
Gewijzigd op 02/01/2011 11:23:30 door Mike Smit
 
TJVB tvb

TJVB tvb

02/01/2011 11:25:28
Quote Anchor link
Niet alleen uit die map, je kunt alles includen waar het script bij kan.
En als als je ../index gebruikt kom je in een loop (tenminste als index het bestand is waar dit in staat) Je include dan steeds zichzelf.
 
Pim -

Pim -

02/01/2011 11:46:58
Quote Anchor link
Zo maak je het veilig:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<?php
$baseDir
= __DIR__.'/sections';

// Check op niet ingestelde vars
$section = isset($_GET['section']) ? $_GET['section'] : '';
$page    = isset($_GET['page']) ? $_GET['page'] : '';

// Los .. en andere narigheid op
$file = realpath(sprintf("%s/%s/%s.php", $baseDir, $section, $page));

// Check of de file bestaat en of deze onder de baseDir valt
if(file_exists($file) && strpos($file, $baseDir) === 0)
    include $file;
else
    error404(); // Een foutmelding

// De meest basic 404 melding. Geeft de standaardpagina van de browser weer
// Als je een eigen pagina wil maken, doe dat dan tussen de 2 regels in

function error404() {
    header('HTTP/1.0 404 Not Found');
    exit;
}

?>

Duidelijk?
Gewijzigd op 02/01/2011 14:41:57 door Pim -
 



Overzicht Reageren

Get Adobe Flash player