Php Eval icm fwrite
Ik heb een probleem met Eval in combinatie met fwrite.
Dit is mijn code:
Code (php)
Op een of andere manier wordt het bestand geleegd. Als ik eval weglaat doet fwrite wel netjes zijn werk.
Als ik het 'lege' bestand includeer laat hij eenmaal wel de juiste content zien. Daarna is hij leeg.
Is dit een bug of die ik hier iets verkeerd?
Alvast bedankt.
Edit: Heb even de opening en closetag voorzien van spaties anders ziet het er niet uit.
Gewijzigd op 28/02/2011 12:06:33 door Remco van der Heijden
De output van eval in een variabele zetten zou kunnen helpen :-)
Edit: Ik heb het nu tijdelijk opgelost door het bestand eerst normaal weg te schrijven dan ob_get_contents(); op de include te gebruiken en vervolgens weer opnieuw weg te schrijven.
Dit neemt natuurlijk een behoorlijke tijd in beslag dus hoop dat er toch iemand met een andere oplossing kan komen.
Gewijzigd op 28/02/2011 13:54:17 door Remco van der Heijden
Citaat van PHP.net:
eval() returns NULL unless return is called in the evaluated code, in which case the value passed to return is returned.
Gewijzigd op 28/02/2011 17:27:12 door Remco van der Heijden
Zoals er al staat: eval stuurt alleen iets terug als het expliciet ge-returnt word. Nu echo jij het. Dit betekend dat het word ge-output. Het word gestuurd naar de browser, maar je vangt het niet op in een variabele ofzo.
Dan zou je 't allemaal om moeten zetten naar: "return '<div>hallo dit ' . 'is een' . ' voorbeeld.</div>';" Heb fijne is dan dat je ook niet per se ? > en < ? aan het begin en eind van je string hoeft te zetten.
Ik neem trouwens aan dat er wel iets variabel in die string zit (die jij evalt), want anders is het zinloos om het te evallen. Dan kun je beter direct de string kopiëren.
Ik hoop dat je dit begrijpt.
Trouwens; beveilig je eval wel goed. Zorg dat de gebruiker er met geen mogelijkheid bij kan komen! Dus gebruik geen input van de gebruiker, of scherm dit (d.m.v. slashes o.i.d.?) waterdicht af. Pas op met de gebruiker! Pas echt op, want anders kan de gebruiker je website in no-time hacken!
Waarvoor heb je die eval eigenlijk nodig?