Php Eval icm fwrite

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Remco van der Heijden

Remco van der Heijden

28/02/2011 12:04:40
Quote Anchor link
Beste,

Ik heb een probleem met Eval in combinatie met fwrite.
Dit is mijn code:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
<?php
$fp
= fopen($this->sCacheDir, 'w');

foreach($this->aContent as $row)
{

fwrite($fp, eval('? >'.$row.'< ?'));                
}
          
fclose($fp);
?>


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
 
PHP hulp

PHP hulp

12/04/2021 21:57:42
 
Chris -

Chris -

28/02/2011 13:04:07
Quote Anchor link
De output van eval in een variabele zetten zou kunnen helpen :-)
 
Remco van der Heijden

Remco van der Heijden

28/02/2011 13:49:46
Quote Anchor link
Dat heeft helaas geen effect.

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
 
Mark L

Mark L

28/02/2011 15:56:07
Quote Anchor link
Wat staat er precies in $row?

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.
 
Remco van der Heijden

Remco van der Heijden

28/02/2011 17:26:45
Quote Anchor link
Er kan bijvoorbeeld dit in staan '<div>hallo dit < ?php echo('is een'); ? > voorbeeld.</div>'
Gewijzigd op 28/02/2011 17:27:12 door Remco van der Heijden
 
Mark L

Mark L

28/02/2011 17:35:22
Quote Anchor link
Ja, dat is dus FOUT.
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!
 

28/02/2011 19:45:48
Quote Anchor link
Waarvoor heb je die eval eigenlijk nodig?
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.