Hallo,

Ik ben bezig met een scriptje voor mijn site en ben er achtergekomen je een get-variable invult die niet bestaat niets verschijnt. Dt wil ik voorkomen. Ik heb gepuzzeld met

if (file_exists($_GET['page']))
include($_GET['page']);

Je gebruikt geen $text = bij een include. Verder maak het path relatief. En je checked ook niet of de file wel bestaat of niet.
Dat $text heb ik voor een ander deel in het script nodig. Het path is relatief, maar heb het hier effe veranderd in absoluut.

- En je checked ook niet of de file wel bestaat of niet.
Ja, dat wil ik nu toevoegen -_-
Dat $text heb ik voor een ander deel in het script nodig.
Weet je dat zeker? $text zal namelijk niets meer zijn dan een boolean die true of false is, hij verder echt geen waarde hebben...

ps. Controleren of de file bestaat:
<?php
if(file_exists($_GET['id'].'.php'))
?>
Je zult dan echter wel het relatieve pad op moeten geven...
if (isset($_GET['id']) && !empty($_GET['id']) and file_exists(........) {

Maar zo kan dus elk bestand worden geinclude.
Probeer maar eens 'index.php'.
ik gebruik het volgende:


<?php

//opgeven welke pagina's toegestaan zijn
$paginas = array("home","leden","downloads_fun","fotos","gastenboek","links");

//opgeven van een map en een extensie
$dir = 'includes/pagina/';
$ext = '.inc.php';

//opgeven van de "home" pagina
$home = 'includes/pagina/home.inc.php';

//controleren of er een pagina is meegegeven
if(isset($_GET['page']))
{
	$pad = $dir.$_GET['page'].$ext;
		
//controleren of de pagina is toegestaan en bestaat
	if(in_array($_GET['page'], $paginas) && file_exists($pad))
	{
		include"$pad";
	}
	else
	{
		echo'Deze pagina bestaat niet';
	}
}
else
{
	include"$home";
}

?>
@Erwin:
include"$home";

Gebruik daarvoor:
include($home);

Dat is een stuk netter.
ik zal het aanpassen, maar ik zie er de logica nog niet echt in.
Er zijn namelijk enkele quotes, dubbele quotes, haakjes en niks..

kun je me misschien uitleggen wanneer ik wat moet gebruiken?
Een $var gewoon niet tussen quotes zetten.
() haakjes zijn voor functies, zoals include() en eigen gemaakte zoals bereken_aantal()
'' enkele quotejes zijn voor het echoen of in output zetten van een string.
"" dubbele quotejes zijn voor het gebruik in HTML
niets, zoals je dat zelf zegt is wat je gebruikt om het outputten van $vars.

dus bijvoorbeeld:

<?php

echo '<div id="test_ding">dit is een voorbeeld met '.$var.' als variabele hierin, dat kan ook een '.functie_zijn($var).' die iets terug geeft</div>';

?>
erwin, bedankt. Ik heb zitten puzzelen en de rest van mijn script werkt nog :)

Weet iemand hoe ik

<?else
{
echo'Deze pagina bestaat niet';
}
?>

in erwins script kan vervangen door een header 404 redirect? Als ik een header location 404 instel, krijg ik een bericht 'header already sent by line 1... '

Reageren