[PHP] highlighting pagina met require_once file

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • xantos
  • Registratie: Juni 1999
  • Niet online
Ik ben een zoekfunctie aan het maken die tevens gebruik moet maken van highlighting. Als ik dus zoek op de string 'tweakers.net' dan moet deze string een ander kleurtje krijgen. Opzich geen enkel probleem zou je denken....

De php file die normaal gesproken wordt aangeroepen om een pagina te laten zien, heet '/show_page.php?page=pagina10.php'. Deze pagina doet een aantal dingen (is niet belangrijk om hier te melden) en doet vervolgens een require_once ('pagina10.php').

De pagina10.php is een file die zich fysiek bevindt op de schijf van de server. Deze file (pagina10.php) bevat naast html code ook soms enkele regels php code. Dat is tevens de reden waarom deze pagina wordt getoond middels een require_once functie (anders wordt de php code namelijk niet uitgevoerd).

Dit werkt opzich allemaal prima alleen weet ik nu niet hoe ik de tekst die show_page.php uitspuugt kan highlighten wanneer deze wordt getoond als zoek-resultaat. Ik kan wel de file 'pagina10.php' openen en een replace functie erop loslaten maar dan kan ik het alleen nog naar de browser sturen met een echo (tenzij ik natuurlijk eerst weer een file ervan maak, maar dat wil ik niet!). Bovendien werkt dan mijn php code die in deze pagina zit ook niet meer.

Het makkelijkste zou natuurlijk zijn (weet niet of dat mogelijk is) om de output van 'show_page.php' eerst volledig te parsen zonder deze naar de browser te sturen en vervolgens met een replace te highlighten. Daarna natuurlijk het resultaat naar de browser sturen.

Ik hoop dat mijn verhaal een beetje duidelijk is. In de search heb ik veel kunnen vinden over highlighting, etc.. maar dit probleem ben ik nog niet tegengekomen.

Acties:
  • 0 Henk 'm!

  • drm
  • Registratie: Februari 2001
  • Laatst online: 09-06 13:31

drm

f0pc0dert

Output buffering

offtopic:
Verder hoop ik dat je die page parameter wel goed checkt, en dat je niet bijvoorbeeld iets moois krijgt als je naar /show_page.php?page=show_page.php of show_page.php?page=/etc/passwd gaat ...

[ Voor 3% gewijzigd door drm op 05-01-2004 16:15 ]

Music is the pleasure the human mind experiences from counting without being aware that it is counting
~ Gottfried Leibniz


Acties:
  • 0 Henk 'm!

  • Altaphista
  • Registratie: Juli 2001
  • Laatst online: 12:50

Altaphista

1. check manual, 2. ask

hoe zoek je in die file dan? dan weet je toch dat en waar de voorkomen van het woord is? dan kan je die direct highlighten.

Je gaat het pas zien als je het doorhebt.


Acties:
  • 0 Henk 'm!

  • xantos
  • Registratie: Juni 1999
  • Niet online
Kan ik dat hiermee oplossen? Ik zal er eens naar kijken, thnx!!
drm schreef op 05 januari 2004 @ 16:14:
Verder hoop ik dat je die page parameter wel goed checkt, en dat je niet bijvoorbeeld iets moois krijgt als je naar /show_page.php?page=show_page.php of show_page.php?page=/etc/passwd gaat ...
Dat zit wel goed 8)
Altaphista schreef op 05 januari 2004 @ 16:16:
hoe zoek je in die file dan? dan weet je toch dat en waar de voorkomen van het woord is? dan kan je die direct highlighten.
Ik snap je vraag niet echt...

[ Voor 20% gewijzigd door xantos op 05-01-2004 16:21 ]


Acties:
  • 0 Henk 'm!

  • Altaphista
  • Registratie: Juli 2001
  • Laatst online: 12:50

Altaphista

1. check manual, 2. ask

xantos schreef op 05 januari 2004 @ 16:20:

Ik snap je vraag niet echt...
Nou hoe weet je welke file je moet includen? Je moet toch eerst zoeken op 'tweakers.net' om te kijken of dit voorkomt in dat bestand?
(of ga je db-niveau alles bijhouden? In dat geval misschien een optie om een tempfile aan te maken met highlight erin verwerkt en die te includen?)

Je gaat het pas zien als je het doorhebt.


Acties:
  • 0 Henk 'm!

  • xantos
  • Registratie: Juni 1999
  • Niet online
De file die ik ga includen haal ik uit de variabele show_page?page=blablabla.
In dit geval is blablabla dus mijn file.

Acties:
  • 0 Henk 'm!

  • _Sunnyboy_
  • Registratie: Januari 2003
  • Laatst online: 19-09 14:58

_Sunnyboy_

Mooooooooooooooooo!

wat gebeurd er als ik show_page?page=show_page.php doe?

Ik vind het doorgeven van include-bestanden via de querystring maar een enge bezigheid. btw, met eval() kan je php-code in een string ook laten uitvoeren, dan hoeft die content van jou helemaal niet met een require ingevoegd worden, maar kan je hem ook uit bijv een database halen.

Build a man a fire, and he'll be warm for a day. Set a man on fire, and he'll be warm for the rest of his life


Acties:
  • 0 Henk 'm!

  • xantos
  • Registratie: Juni 1999
  • Niet online
_Sunnyboy_ schreef op 05 januari 2004 @ 16:51:
wat gebeurd er als ik show_page?page=show_page.php doe?

Ik vind het doorgeven van include-bestanden via de querystring maar een enge bezigheid. btw, met eval() kan je php-code in een string ook laten uitvoeren, dan hoeft die content van jou helemaal niet met een require ingevoegd worden, maar kan je hem ook uit bijv een database halen.
Als je show_page?page=show_page.php aanroept, gebeurd er helemaal niks. Deze laadt namelijk pagina's uit een vaste directory en showpage.php staat niet op deze locatie.

Met eval kun je wel php-code uitvoeren maar geen html zover ik weet. Deze bestanden zijn eigenlijk html-pagina's met een beetje php-code. Eval is hier dus niet op z'n plaats.

Ik ben momenteel aan het experimenteren met output buffering. Ik laat iets weten als het werkt.

[ Voor 7% gewijzigd door xantos op 05-01-2004 20:25 ]


Acties:
  • 0 Henk 'm!

  • drm
  • Registratie: Februari 2001
  • Laatst online: 09-06 13:31

drm

f0pc0dert

Met eval kun je wel php-code uitvoeren maar geen html zover ik weet. Deze bestanden zijn eigenlijk html-pagina's met een beetje php-code. Eval is hier dus niet op z'n plaats.
eval heeft sowieso geen enkele meerwaarde boven het includen/requiren van een pagina. Waarom je PHP in je database zou willen hebben is mij een enorm raadsel.

Trouwens, afaik wordt de eval-code intern ook gebruikt voor het requiren/includen van pagina's.

Music is the pleasure the human mind experiences from counting without being aware that it is counting
~ Gottfried Leibniz


Acties:
  • 0 Henk 'm!

Verwijderd

xantos schreef op 05 januari 2004 @ 20:24:
[...]


Als je show_page?page=show_page.php aanroept, gebeurd er helemaal niks. Deze laadt namelijk pagina's uit een vaste directory en showpage.php staat niet op deze locatie.
Zeker voor de gein nog niet geprobeerd om het volgende bestand in te lezen :?
code:
1
../../../../../../../../../etc/passwd


Leuk dat je een vaste directory opgeeft, maar bovenstaande zorgt er toch echt voor dat je directories omhoog gaat t.o.v. die directory van jou (als je tenminste niet nog extra controles uitvoert).

Acties:
  • 0 Henk 'm!

  • xantos
  • Registratie: Juni 1999
  • Niet online
Verwijderd schreef op 05 januari 2004 @ 20:28:
[...]

Zeker voor de gein nog niet geprobeerd om het volgende bestand in te lezen :?
code:
1
../../../../../../../../../etc/passwd


Leuk dat je een vaste directory opgeeft, maar bovenstaande zorgt er toch echt voor dat je directories omhoog gaat t.o.v. die directory van jou (als je tenminste niet nog extra controles uitvoert).
Nee hoor.. dat gaat niet werken. Het voorbeeld hierboven is slechts een vereenvoudigde weergave van de werkelijkheid :*)

Toch bedankt voor de tip.

Acties:
  • 0 Henk 'm!

Verwijderd

offtopic:
Volledig offtopic:
Ik snap niet waarom op GoT zeer vaak de discussie voorkomt of men nou wel- of niet een include via een GET waarde mag doen. Ieder denkt daar het zijne van. Mijn mening is overigens dat dat prima 'dicht' te zetten is.

Acties:
  • 0 Henk 'm!

  • xantos
  • Registratie: Juni 1999
  • Niet online
Ik ben er trouwens uit. ;) Output buffering is inderdaad het juiste antwoord. Bedankt voor jullie reacties..

Acties:
  • 0 Henk 'm!

  • Tomsworld
  • Registratie: Maart 2001
  • Niet online

Tomsworld

officieel ele fan :*

Verwijderd schreef op 05 januari 2004 @ 20:28:
[...]

Zeker voor de gein nog niet geprobeerd om het volgende bestand in te lezen :?
code:
1
../../../../../../../../../etc/passwd


Leuk dat je een vaste directory opgeeft, maar bovenstaande zorgt er toch echt voor dat je directories omhoog gaat t.o.v. die directory van jou (als je tenminste niet nog extra controles uitvoert).
Goeie admin vangt zoiets op met openbasedir restrictie in de vhost.

"De kans dat een snee brood op een nieuw tapijt valt met de beboterde zijde onderaan, is recht evenredig met de prijs van het tapijt"


Acties:
  • 0 Henk 'm!

Verwijderd

Tomsworld schreef op 06 januari 2004 @ 13:51:
[...]


Goeie admin vangt zoiets op met openbasedir restrictie in de vhost.
En dus houd je er als programmeur geen rekening meer mee :? :X
Verwijderd schreef op 06 januari 2004 @ 08:34:
offtopic:
Volledig offtopic:
Ik snap niet waarom op GoT zeer vaak de discussie voorkomt of men nou wel- of niet een include via een GET waarde mag doen. Ieder denkt daar het zijne van. Mijn mening is overigens dat dat prima 'dicht' te zetten is.
Er wordt hier ook wederom zeer duidelijk gezegd dat het best te gebruiken is (of het mooi is is een tweede), maar dat er wel aandacht besteed moet worden aan de veiligheid van het geheel. Daarnaast is dit een van de meest simpele beveiligingspunten die continu misgaan. Niet alleen bij newbies, maar ook op wat grotere websites.

[ Voor 9% gewijzigd door Verwijderd op 06-01-2004 13:55 ]

Pagina: 1