Archief - PHP: Include probleem

Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.

orez

Legacy Member
Ben een cpanelke aant schrijven... ma tprobleem is, om em volledig te doen werken mogen zenne includes wel macheren eh :p

PHP:
	<div id="menu">
		<?php require_once("menu.php"); ?>
	</div>
	
	<div id="content">
		<!-- cpanel content -->
		<?php
			if($c != "") {
				require_once($c . ".php");
			} else {
				require_once("indexc.php");
			}
		?>
	</div>

menu:
Code:
<ul>
	<li><a href="cpanel.php?c=stats">statistics</a></li>
	<li><a href="cpanel.php?c=dancers">dancers</a></li>
	<li><a href="cpanel.php?c=news">news</a></li>
	<li><a href="cpanel.php?c=events">events</a></li>
	<li><a href="cpanel.php?c=contact">contacts</a></li>
	<li><a href="cpanel.php?c=newsletter">newsletter</a></li>
</ul>

Krijg schoon me linkskes cpanel.php?c=stats

mor em wilt dieje $c gelijk ni opvragen?
Ziek ier iets over et hoofd? mo na mijn gedacht is da toch altijd this way geweest?

Col.Kurtz

Legacy Member
Ah, je gaat ff een cpannelke schrijven, ok... :)

soit, voor die $c,
via $_GET haal je variabele op uit de url ALS register_globals UIT staat, staan ze toch aan, zet ze onmiddelijk af

hoe controleren / uitschakelen :
http://be2.php.net/manual/nl/function.ini-get.php

PHP:
if (isset($_GET['c']) && file_exists("$_GET[c].php")) {
	require "$_GET[c].php";
} else {
  // ...
}

Soit, dit is onveilig, stel ik geef in
c=www.weetikveel.com/eenpagina

gevolg : c is geset en de pagina www.weetikveel.com/eenpagina.php bestaan,
dus wordt geïnclude

Lees meer over veiligheid op :
http://82.150.156.163/artikelen.php?aid=106

Met nadruk op dit :
http://82.150.156.163/artikelen.php?aid=106&page=10

Geen zin om te lezen ? Makkelijkste oplossing :

PHP:
$menu = array('stats', 'dancers');

if (isset($_GET['c'])) {
  if (in_array($_GET['c'], $menu) && file_exists("$_GET[c].php")) {
    // ok, includen die handel !
  } else {
    // ze zijn aan't foefelen, of ge hebt u pagina nog niet aangemaakt ;)
  }
} else {
  // standaard pagina
}

orez

Legacy Member
tnx, works:)

En tnx vo de security tipkes, I admit, daar ebk nog veel over te leren tbh :p

orez

Legacy Member
e simpel cpannelke é :p
moe nu ni iets verwachten a la cpanel.net :p

Imp

Legacy Member
dat is goed en veilig, maar je kan het ook op de manier doen die ik altijd gebruik :
switch($page)
{
case 'home' : include('index_shop.php'); break;
case 'contact_us' : include('contact_us.php'); break;
case 'more_details' : include('shop_more_details.php'); break;
case 'configure' : include('shop_configure.php'); break;
case 'search' : include('search.php'); break;
case 'preorder' : include('preorder.php'); break;
case 'order' : include('order.php'); break;
default: include('index_shop.php');
}

als ze dan bv. ?page=www.google.be ingeven wordt gewoon de default geinclude, wel geen error message. dit is hadiger voor mij, omdat ik dan mijn pagina's niet hoef te noemen naar de ?page=naam in url balk.
En zover ik weet is dit ook veilig ?

Dece

Legacy Member
Imp zei:
dat is goed en veilig, maar je kan het ook op de manier doen die ik altijd gebruik :
switch($page)
{
case 'home' : include('index_shop.php'); break;
case 'contact_us' : include('contact_us.php'); break;
case 'more_details' : include('shop_more_details.php'); break;
case 'configure' : include('shop_configure.php'); break;
case 'search' : include('search.php'); break;
case 'preorder' : include('preorder.php'); break;
case 'order' : include('order.php'); break;
default: include('index_shop.php');
}

als ze dan bv. ?page=www.google.be ingeven wordt gewoon de default geinclude, wel geen error message. dit is hadiger voor mij, omdat ik dan mijn pagina's niet hoef te noemen naar de ?page=naam in url balk.
En zover ik weet is dit ook veilig ?
mijn voorkeur gaat hier ook naar uit.
tis mss iets meer aanpassingswerk als er een nieuwe pagina moet bijkomen, maar schematisch gezien vind ik het interesanter om zo te werken

servi

Legacy Member
dan is het wel eenvoudiger om dit zo te doen :

$toegelaten_paginas = array('index','contact','info');

if ( ! in_array($parameter,$toegelaten_paginas) ) {
$parameter = $toegelaten_paginas[0];
}

include($parameter'.php');

dit vereist immers minder aanpaswerk wanneer je een pagina toevoegt en is even veilig.
Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.
Terug
Bovenaan