PHP Switch

Praat mee over van alles en nog wat!
Forumregels
Dit forum is voor alle zinnige gesprekken buiten phpBB om. Discussies en gesprekken over interessante onderwerpen.

Een nieuw onderwerp moet..:
  • uiteraard voldoen aan de algemene voorwaarden
  • niet passen in de gewone supportfora
  • interessante zijn voor het overgrote deel van onze gebruikers
  • een neutrale of positieve ondertoon hebben
  • anders zijn dan bestaande onderwerpen
Plaats reactie
Russ
Berichten: 118
Lid geworden op: 07 dec 2003, 13:17

PHP Switch

Bericht door Russ » 09 dec 2004, 21:23

Yo,

Ik ben bezig met een PHP switch alleen wil ik een default inbouwen maar weet niet hoe dat moet.

Ik heb tot nu toe dit:

Code: Selecteer alles

<?php 
$page = "php/" . strtolower($_GET['page']) . ".php";
if (file_exists($page)) { 
} 
include($page)
?>
Als er fouten inzitten hoor ik dat natuurlijk ook graag :bier:

Gebruikersavatar
farmerwood
Berichten: 6
Lid geworden op: 09 dec 2004, 20:22
Locatie: Almen
Contacteer:

Bericht door farmerwood » 09 dec 2004, 21:26

Code: Selecteer alles

<?php
$page = "php/" . strtolower($_GET['page']) . ".php";
if (file_exists($page)) 
{
  include($page);
}
else
{
  include("php/index.php");
}
?>
Zoiets?
Als de pagina niet gevonden kan worden pakt hij index.php
Btw let op de { } Je doet nu niks met je IF en include altijd $page. Wanneer die niet bestaat krijg je dus altijd een error nu.

Russ
Berichten: 118
Lid geworden op: 07 dec 2003, 13:17

Bericht door Russ » 09 dec 2004, 21:27

Ok, bedankt

Maar ik bedoelde eigenlijk een default, een pagina die die zoieso pakt behalve als de url ".php?page=home" is bijv.

Gebruikersavatar
farmerwood
Berichten: 6
Lid geworden op: 09 dec 2004, 20:22
Locatie: Almen
Contacteer:

Bericht door farmerwood » 09 dec 2004, 21:34

Russ schreef:Ok, bedankt

Maar ik bedoelde eigenlijk een default, een pagina die die zoieso pakt behalve als de url ".php?page=home" is bijv.
Dat doet ie nu toch?
Hij probeert nu de pagina te includen die opgegeven is. Als die niet gevonden kan worden gaat hij naar index.php.....

Russ
Berichten: 118
Lid geworden op: 07 dec 2003, 13:17

Bericht door Russ » 09 dec 2004, 21:38

Sorry, ik had het even verkeerd begrepen.

Werkt uitstekend

Nogmaals bedankt :D

Gebruikersavatar
mosymuis
Berichten: 6940
Lid geworden op: 05 feb 2003, 14:00
Locatie: Amsterdam
Contacteer:

Bericht door mosymuis » 09 dec 2004, 23:23

Dit is een ONTZETTEND ONVEILIG script!! Hiermee geef je de bezoeker de mogelijkheid elk bestand te includen dat hij maar wil. Als je het pad dan ook nog eens onhandig opstelt is de weg open voor zeer eenvoudige script insertion, oftewel het uitvoeren van eigen scripts door anderen op jouw website. Dat dat gevaarlijk zijn hoef ik je vast niet uit te leggen.

Doe het liever zo:

Code: Selecteer alles

<?php
$page = strtolower($_GET['page']);

if ( in_array($page, array('index', 'chatbox', 'contact')) )
{
  include('php/' . $page . '.php');
}
else
{
  include('php/index.php');
}
?>
en pas de array aan naar de namen waarvan jij zeker weet dat ze mogen worden geinclude.

Russ
Berichten: 118
Lid geworden op: 07 dec 2003, 13:17

Bericht door Russ » 10 dec 2004, 07:39

Ok, maar dan zou ik elke pagina moeten includen. Het zijn er een stuk of dertig :?. In de map PHP zet ik geen belangrijke bestanden, alleen bestanden die mogen geinclude worden. Is het dan nog steeds een probleem?

Gebruikersavatar
Bas
Berichten: 2741
Lid geworden op: 02 dec 2003, 17:38
Locatie: Omgeving Goslar (Duitsland)
Contacteer:

Bericht door Bas » 10 dec 2004, 08:01

Ja, je kunt altijd nog .. doen om andere bestanden op je server te krijgen, en dat was eerst ook niet wat ik wou...
Maar, als je file_exists gebruikt op PHP4, dan kan hij niet omgaan met Remote URLs...

Gebruikersavatar
mosymuis
Berichten: 6940
Lid geworden op: 05 feb 2003, 14:00
Locatie: Amsterdam
Contacteer:

Bericht door mosymuis » 10 dec 2004, 13:47

bast schreef:Maar, als je file_exists gebruikt op PHP4, dan kan hij niet omgaan met Remote URLs...
Zelfs het includen van pagina's op de eigen server kan onveilig zijn, denk aan je forum config of admin pagina's, gecombineerd met XSS of PHP bugs.

Russ
Berichten: 118
Lid geworden op: 07 dec 2003, 13:17

Bericht door Russ » 10 dec 2004, 18:00

Ok, bedankt voor de uitleg

Nog een vraagje, is het mogelijk om page= weg te werken in de url zodat het index.php?home wordt?

ElbertF
Berichten: 5803
Lid geworden op: 12 okt 2004, 08:34
Contacteer:

Bericht door ElbertF » 10 dec 2004, 18:45

Je zou er "http://www.url.com/home" van kunnen maken, met een bestand genaamd "index.htm" in een map "home" (in de root). In dit html bestand maak je een redirect naar die pagina (met JavaScript).

"index.php?home" Werkt niet..

Gebruikersavatar
mosymuis
Berichten: 6940
Lid geworden op: 05 feb 2003, 14:00
Locatie: Amsterdam
Contacteer:

Bericht door mosymuis » 12 dec 2004, 08:54

Spambot schreef:Je zou er "http://www.url.com/home" van kunnen maken, met een bestand genaamd "index.htm" in een map "home" (in de root). In dit html bestand maak je een redirect naar die pagina (met JavaScript).
Nu zoekt de server naar de map "home", niet naar een index bestand. Met mod_rewrite in een htaccess kan dit wel. Koppel dan automatisch naar index.php?page=home.

Russ
Berichten: 118
Lid geworden op: 07 dec 2003, 13:17

Bericht door Russ » 12 dec 2004, 17:43

Ik houd het voorlopig wel even op index.php?page=...

Wel zo makkelijk

Bedankt voor jullie hulp :wink:

Russ
Berichten: 118
Lid geworden op: 07 dec 2003, 13:17

Bericht door Russ » 12 dec 2004, 17:45

Ik was even aan het zoeken op het internet en kwam deze code tegen:

Code: Selecteer alles

<?php 
switch (strtolower($_GET['page']))  
{  
case "tutorial": 
  include("tutorial.php"); 
  break; 
case "scripts": 
  include("scripts.php"); 
  break; 
default: 
  include("default.php"); 
  break; 
}
?>
Maakt het kwa veiligheid uit of je deze code gebruikt of die van mosymuis?

Gebruikersavatar
WebSiteNet
Berichten: 6524
Lid geworden op: 20 okt 2003, 16:56
Locatie: Wieringerwerf
Contacteer:

Bericht door WebSiteNet » 13 dec 2004, 06:17


Gebruikersavatar
mosymuis
Berichten: 6940
Lid geworden op: 05 feb 2003, 14:00
Locatie: Amsterdam
Contacteer:

Bericht door mosymuis » 13 dec 2004, 11:25

Russ, je gevonden code is net zo veilig als die van mij, maar is minder handig als je veel pagina's gebruikt.

Russ
Berichten: 118
Lid geworden op: 07 dec 2003, 13:17

Bericht door Russ » 13 dec 2004, 15:48

Ok, bedankt, de code van mosymuis is idd veel handiger

Russ
Berichten: 118
Lid geworden op: 07 dec 2003, 13:17

Bericht door Russ » 19 dec 2004, 13:46

Maakt het uit kwa veiligheid of je naar "index.php?page=test" linkt of "?page=test"?

Gebruikersavatar
mosymuis
Berichten: 6940
Lid geworden op: 05 feb 2003, 14:00
Locatie: Amsterdam
Contacteer:

Bericht door mosymuis » 20 dec 2004, 12:50

Nee.

Plaats reactie