/ Forside / Teknologi / Udvikling / PHP / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
PHP
#NavnPoint
rfh 3959
natmaden 3372
poul_from 3310
funbreak 2700
stone47 2230
Jin2k 1960
Angband 1743
Bjerner 1249
refi 1185
10  Interkril.. 1146
"include" til en variabel?
Fra : Kim Emax


Dato : 06-09-03 22:24

Hey

Jeg har brug for at hive en phpfil ind i en variable, lidt ala $x = inlude
"header.inc";, men syns ikke jeg kan få det til at spille som jeg vil. Med i
historien er så at jeg sætter nogle variabler, som header.inc skal reagere
på.

Any ideas?

--
Take Care
Kim Emax - master|minds: http://www.masterminds.dk
http://www.emax.dk - http://www.ayianapa.dk
Køb din vin online på http://www.gmvin.dk,
Danmarks måske mest avancerede VinWebShop



 
 
Dennis Møllegaard Pe~ (06-09-2003)
Kommentar
Fra : Dennis Møllegaard Pe~


Dato : 06-09-03 23:15

On Sat, 06 Sep 2003 23:24:15 +0200, Kim Emax wrote:

> Jeg har brug for at hive en phpfil ind i en variable, lidt ala $x = inlude
> "header.inc";, men syns ikke jeg kan få det til at spille som jeg vil. Med i
> historien er så at jeg sætter nogle variabler, som header.inc skal reagere
> på.

Skal filen parses af php?

Nej: Brug file()+join eller (kræver php 4.3.0) file_get_contents()

Ja: Når du har filen i din string, kan du blot eval()'e din kode. Brug evt
ob_start() før eval() og ob_get_contents() + ob_end_clean() efter for at
"fange" outputtet:

$nogetphp = file_get_contents('enfil.php');
ob_start();
eval($nogetphp);
$output = ob_get_contents();
ob_end_flush();

Voilá, nu indeholder $output outputtet af koden i enfil.php. Koden er
utestet.

--
Dennis Møllegaard Pedersen,
PGP fingerprint = 5A23 2E7D 7F4F 7FBE 39AC CDEF 55A0 FF70 87C0 59D9


Kim Emax (09-09-2003)
Kommentar
Fra : Kim Emax


Dato : 09-09-03 16:06

Dennis Møllegaard Pedersen wrote:

> Skal filen parses af php?

ja

> Nej: Brug file()+join eller (kræver php 4.3.0) file_get_contents()
>
> Ja: Når du har filen i din string, kan du blot eval()'e din kode.
> Brug evt ob_start() før eval() og ob_get_contents() + ob_end_clean()
> efter for at "fange" outputtet:
>
> $nogetphp = file_get_contents('enfil.php');
> ob_start();
> eval($nogetphp);
> $output = ob_get_contents();
> ob_end_flush();
>
> Voilá, nu indeholder $output outputtet af koden i enfil.php. Koden er
> utestet.

Nu havde jeg endelig tid til at teste det, fejlen, der kommer siger mig
intet, giver den dig et fingerpeg?

Parse error: parse error, unexpected '<' in /....test.php(11) : eval()'d
code on line 1

Linie 1 i min includefil indeholder "<HTML>", så det er nok ik det, der
menes med line 1

--
Take Care
Kim Emax - master|minds: http://www.masterminds.dk
http://www.emax.dk - http://www.ayianapa.dk
Køb din vin online på http://www.gmvin.dk,
Danmarks måske mest avancerede VinWebShop




Mads Lie Jensen (09-09-2003)
Kommentar
Fra : Mads Lie Jensen


Dato : 09-09-03 16:29

On Tue, 9 Sep 2003 17:05:59 +0200, "Kim Emax" <newsgroup@remove-emax.dk>
wrote:

>Nu havde jeg endelig tid til at teste det, fejlen, der kommer siger mig
>intet, giver den dig et fingerpeg?
>
>Parse error: parse error, unexpected '<' in /....test.php(11) : eval()'d
>code on line 1
>
>Linie 1 i min includefil indeholder "<HTML>", så det er nok ik det, der
>menes med line 1

Jo.
Fra manualen (http://dk.php.net/manual/en/function.eval.php):

eval -- Evaluate a string as PHP code

og det ser ud som om du smider "almindelig" html efter den.
<HTML> er i hvert fald ikke php-kode, så derfor brokker den sig.
Se evt. kommentarerne til eval på ovenstående link.

--
Mads Lie Jensen - mads@gartneriet.dk - ICQ #25478403
http://www.gartneriet.dk

Kim Emax (09-09-2003)
Kommentar
Fra : Kim Emax


Dato : 09-09-03 21:36

Mads Lie Jensen wrote:

> Jo.
> Fra manualen (http://dk.php.net/manual/en/function.eval.php):
>
> eval -- Evaluate a string as PHP code
>
> og det ser ud som om du smider "almindelig" html efter den.
> <HTML> er i hvert fald ikke php-kode, så derfor brokker den sig.
> Se evt. kommentarerne til eval på ovenstående link.

Øvkay, så kan jeg ikke benytte den funktion _eller_ jeg skal lave min header
om til at være print hele vejen igennem. Har du en anden ide til en løsning
på mit problem?

--
Take Care
Kim Emax - master|minds: http://www.masterminds.dk
http://www.emax.dk - http://www.ayianapa.dk
Køb din vin online på http://www.gmvin.dk,
Danmarks måske mest avancerede VinWebShop



Bertel Lund Hansen (09-09-2003)
Kommentar
Fra : Bertel Lund Hansen


Dato : 09-09-03 22:17

Kim Emax skrev:

>Øvkay, så kan jeg ikke benytte den funktion _eller_ jeg skal lave min header
>om til at være print hele vejen igennem. Har du en anden ide til en løsning
>på mit problem?

Jeg er ikke nogen haj til PHP, og jeg har muligvis ikke forstået
problemet, men du kan snildt blande HTML og PHP i samme fil uden
at lave det hele til print. Eksempel:

<HTML>
<HEAD>
<TITLE>
<? print $titel."\n" ?>
</TITLE>
</HEAD>
<? include($content) ?>
<BODY>
</BODY>
</HTML>

Hvis det gemmes som en PHP-fil eller inkluderes i én, virker det
fint.

Fidusen er at al PHP skal omklamres af <? ?> mens resten bare
står som ren tekst.

Hvis du indleder filen med <? og slutter til sidst med ?>, går
det galt.

--
Bertel
http://bertel.lundhansen.dk/   FIDUSO: http://fiduso.dk/

Mads Lie Jensen (12-09-2003)
Kommentar
Fra : Mads Lie Jensen


Dato : 12-09-03 18:12

On Tue, 9 Sep 2003 22:36:06 +0200, "Kim Emax" <newsgroup@remove-emax.dk>
wrote:

>> eval -- Evaluate a string as PHP code
>>
>> og det ser ud som om du smider "almindelig" html efter den.
>> <HTML> er i hvert fald ikke php-kode, så derfor brokker den sig.
>> Se evt. kommentarerne til eval på ovenstående link.
>
>Øvkay, så kan jeg ikke benytte den funktion _eller_ jeg skal lave min header
>om til at være print hele vejen igennem. Har du en anden ide til en løsning
>på mit problem?

Har du læst kommentarerne til eval() ? (Prøv det....)

Php går ud fra, at en streng som overgives til eval() er php-kode. Den
forstår fint <?php og ?> til at hoppe ind og ud af php/html. dvs. hvis
du er sikker på at din streng med kode altid husker at starte php-kode
med <? (eller <?php ) og slutte det igen med ?>, så gør du sådan:

eval('?>' . $streng_med_kode . '<?php');

Så er du sikker på den starter med at hoppe ud af php og dermed bare
spytte html eller anden tekst ud, hvis der så er php-kode i
$streng_med_kode, så starter det jo med <?/<?php og dermed hoppes der
igen ind i php-mode.

Om der så er nogle problemer med f.eks sikkerhed i ovenstående tør jeg
ikke helt sige.


--
Mads Lie Jensen - mads@gartneriet.dk - ICQ #25478403
http://www.gartneriet.dk

Kim Emax (13-09-2003)
Kommentar
Fra : Kim Emax


Dato : 13-09-03 00:29

Mads Lie Jensen wrote:
> Har du læst kommentarerne til eval() ? (Prøv det....)

Jeps, kan ikke se at koden _skal_ starte med php specifik kode (<? )

> Php går ud fra, at en streng som overgives til eval() er php-kode. Den
> forstår fint <?php og ?> til at hoppe ind og ud af php/html. dvs. hvis
> du er sikker på at din streng med kode altid husker at starte php-kode
> med <? (eller <?php ) og slutte det igen med ?>, så gør du sådan:
>
> eval('?>' . $streng_med_kode . '<?php');
>
> Så er du sikker på den starter med at hoppe ud af php og dermed bare
> spytte html eller anden tekst ud, hvis der så er php-kode i
> $streng_med_kode, så starter det jo med <?/<?php og dermed hoppes der
> igen ind i php-mode.

Nej, det gør den ikke. Det er en header fil, så den starter med
<HTML><HEAD><TITLE><?= $title ?> osv...

Jeg har løst problemet på en anden måde, men kan lige prøve at lave en <? #
nothing ?> inden <HTML> og se om det spiller...

--
Take Care
Kim Emax - master|minds: http://www.masterminds.dk
http://www.emax.dk - http://www.ayianapa.dk
Køb din vin online på http://www.gmvin.dk,
Danmarks måske mest avancerede VinWebShop



Mads Lie Jensen (13-09-2003)
Kommentar
Fra : Mads Lie Jensen


Dato : 13-09-03 18:32

On Sat, 13 Sep 2003 01:29:23 +0200, "Kim Emax"
<newsgroup@remove-emax.dk> wrote:

>> Har du læst kommentarerne til eval() ? (Prøv det....)
>
>Jeps, kan ikke se at koden _skal_ starte med php specifik kode (<? )

Det skal den - men _uden_ et <?php / <?.
Derimod kan man starte med en stump php-kode, gerne en kommentar og en
?> for at hoppe ud af php:

eval('// ?>' . $var_med_php_og_html_i_skøn_forening);

>> Php går ud fra, at en streng som overgives til eval() er php-kode. Den
>> forstår fint <?php og ?> til at hoppe ind og ud af php/html. dvs. hvis
>> du er sikker på at din streng med kode altid husker at starte php-kode
>> med <? (eller <?php ) og slutte det igen med ?>, så gør du sådan:
>>
>> eval('?>' . $streng_med_kode . '<?php');

Nu testede jeg så lidt - der _skal_ være en stump php-kode før den
første ?>, men en tom kommentar er nok, og der behøver ikke være den
sidste <?php, så det kan se ud som angivet længere oppe.


--
Mads Lie Jensen - mads@gartneriet.dk - ICQ #25478403
http://www.gartneriet.dk

Kim Emax (14-09-2003)
Kommentar
Fra : Kim Emax


Dato : 14-09-03 15:19

Mads Lie Jensen wrote:

> > Jeps, kan ikke se at koden _skal_ starte med php specifik kode (<? )
>
> Det skal den - men _uden_ et <?php / <?.

men _står_ det noget steds i manualen? Jeg kan som sagt ikke se det.

> Nu testede jeg så lidt - der _skal_ være en stump php-kode før den
> første ?>, men en tom kommentar er nok, og der behøver ikke være den
> sidste <?php, så det kan se ud som angivet længere oppe.

Fint, så er jeg fri for det

--
Take Care
Kim Emax - master|minds: http://www.masterminds.dk
http://www.emax.dk - http://www.ayianapa.dk
Køb din vin online på http://www.gmvin.dk,
Danmarks måske mest avancerede VinWebShop



Mads Lie Jensen (14-09-2003)
Kommentar
Fra : Mads Lie Jensen


Dato : 14-09-03 16:12

On Sun, 14 Sep 2003 16:18:56 +0200, "Kim Emax"
<newsgroup@remove-emax.dk> wrote:

>> > Jeps, kan ikke se at koden _skal_ starte med php specifik kode (<? )
>>
>> Det skal den - men _uden_ et <?php / <?.
>
>men _står_ det noget steds i manualen? Jeg kan som sagt ikke se det.

Ja. Klart og tydeligt endda på
<http://dk.php.net/manual/en/function.eval.php>:

eval -- Evaluate a string as PHP code.

"<html>" er ikke php-kode. Men står der
echo "<html>";
så virker det - for det er gyldig php-kode.


--
Mads Lie Jensen - mads@gartneriet.dk - ICQ #25478403
http://www.gartneriet.dk

Kim Emax (14-09-2003)
Kommentar
Fra : Kim Emax


Dato : 14-09-03 16:52

Mads Lie Jensen wrote:

> Ja. Klart og tydeligt endda på
> <http://dk.php.net/manual/en/function.eval.php>:

Ja, så er jeg sgu blevet blind

"Description
mixed eval ( string code_str)


eval() evaluates the string given in code_str as PHP code. Among other
things, this can be useful for storing code in a database text field for
later execution.

There are some factors to keep in mind when using eval(). Remember that the
string passed must be valid PHP code, including things like terminating
statements with a semicolon so the parser doesn't die on the line after the
eval(), and properly escaping things in code_str.

Also remember that variables given values under eval() will retain these
values in the main script afterwards.

A return statement will terminate the evaluation of the string immediately.
In PHP 4, eval() returns NULL unless return is called in the evaluated code,
in which case the value passed to return is returned. In PHP 3, eval() does
not return a value. "

Jeg kan sgu ikke få øje på at der står at strengen _skal_ starte med et php
tag. Måske ligger det i opfattelsen af, hvad der er "valid PHP code? Jeg
anser dette:

<BODY BGCOLOR="<?= $bgcolor ?>"> <? // eneste linie i denne fil ?>

for at være valid php kode.

Er jeg blevet blind Mads?

--
Take Care
Kim Emax - master|minds: http://www.masterminds.dk
http://www.emax.dk - http://www.ayianapa.dk
Køb din vin online på http://www.gmvin.dk,
Danmarks måske mest avancerede VinWebShop



Mads Lie Jensen (14-09-2003)
Kommentar
Fra : Mads Lie Jensen


Dato : 14-09-03 17:11

On Sun, 14 Sep 2003 17:51:53 +0200, "Kim Emax"
<newsgroup@remove-emax.dk> wrote:

>Mads Lie Jensen wrote:
>
>> Ja. Klart og tydeligt endda på
>> <http://dk.php.net/manual/en/function.eval.php>:
>
>Ja, så er jeg sgu blevet blind
>
>"Description
>mixed eval ( string code_str)

Linien lige over den Description, der står det.

>eval() evaluates the string given in code_str as PHP code. Among other

Og i den linie står det også. Evaluates the string given af PHP code.


>Jeg kan sgu ikke få øje på at der står at strengen _skal_ starte med et php
>tag. Måske ligger det i opfattelsen af, hvad der er "valid PHP code? Jeg
>anser dette:
>
><BODY BGCOLOR="<?= $bgcolor ?>"> <? // eneste linie i denne fil ?>
>
>for at være valid php kode.

Det er jo først php-kode når du kommer indenfor <?-tagget. '<BODY
BGCOLOR' i ovenstående er jo ren html som slet ikke ville blive parset
af php, fordi det står udenfor <? ?>-tags.

>Er jeg blevet blind Mads?

Hvis jeg var fræk ville jeg svare ja, men nu forsøget jeg jo at være en
flinker fyr, såee

--
Mads Lie Jensen - mads@gartneriet.dk - ICQ #25478403
http://www.gartneriet.dk

Kim Emax (14-09-2003)
Kommentar
Fra : Kim Emax


Dato : 14-09-03 17:33

Mads Lie Jensen wrote:

> Det er jo først php-kode når du kommer indenfor <?-tagget. '<BODY
> BGCOLOR' i ovenstående er jo ren html som slet ikke ville blive parset
> af php, fordi det står udenfor <? ?>-tags.

okay, jeg prøver sgu lige at smide en <? // nothing ?> ind i min header fil
og ser om det gør en forskel

> > Er jeg blevet blind Mads?
>
> Hvis jeg var fræk ville jeg svare ja, men nu forsøget jeg jo at være
> en flinker fyr, såee



--
Take Care
Kim Emax - master|minds: http://www.masterminds.dk
http://www.emax.dk - http://www.ayianapa.dk
Køb din vin online på http://www.gmvin.dk,
Danmarks måske mest avancerede VinWebShop



Jacob Bunk Nielsen (09-09-2003)
Kommentar
Fra : Jacob Bunk Nielsen


Dato : 09-09-03 22:19

Bertel Lund Hansen <nospamius@lundhansen.dk> writes:
> Kim Emax skrev:
>
>>Øvkay, så kan jeg ikke benytte den funktion _eller_ jeg skal lave min header
>>om til at være print hele vejen igennem. Har du en anden ide til en løsning
>>på mit problem?
>
> Jeg er ikke nogen haj til PHP, og jeg har muligvis ikke forstået
> problemet, men du kan snildt blande HTML og PHP i samme fil uden
> at lave det hele til print.

Du har ikke forstået problemet

Problemet er at Kim gerne vil have skidtet igennem eval(), og den
bliver sur når der er HTML med i argumentet.

--
Jacob - www.bunk.cc
Most burning issues generate far more heat than light.

Kim Emax (09-09-2003)
Kommentar
Fra : Kim Emax


Dato : 09-09-03 23:22

Jacob Bunk Nielsen wrote:

> Problemet er at Kim gerne vil have skidtet igennem eval(), og den
> bliver sur når der er HTML med i argumentet.

Ikke helt korrekt, jeg vil ha filen ind i en variabel. Nogen har så forslået
eval()

--
Take Care
Kim Emax - master|minds: http://www.masterminds.dk
http://www.emax.dk - http://www.ayianapa.dk
Køb din vin online på http://www.gmvin.dk,
Danmarks måske mest avancerede VinWebShop



Jacob Bunk Nielsen (09-09-2003)
Kommentar
Fra : Jacob Bunk Nielsen


Dato : 09-09-03 23:38

"Kim Emax" <newsgroup@remove-emax.dk> writes:
> Jacob Bunk Nielsen wrote:
>
>> Problemet er at Kim gerne vil have skidtet igennem eval(), og den
>> bliver sur når der er HTML med i argumentet.
>
> Ikke helt korrekt, jeg vil ha filen ind i en variabel. Nogen har så forslået
> eval()

Undskyld - jeg havde ikke læst hele tråden, blot de par indlæg der
knyttede sig til Bertels svar. Jeg forstod heller ikke dit problem ud
fra dit oprindelige indlæg. Derfor afholdte jeg mig fra at svare på
det.

Nu tror jeg nok at jeg har forstået dit problem, men har ikke lige
nogen god løsning på det.

Hvad med at lade filen indeholde en funktion, foo(), som så returnerer
en streng? Så kan du lave:

include flof.inc.php;
$x = foo();

--
Jacob - www.bunk.cc
There are running jobs. Why don't you go chase them?

Morten Toft (07-09-2003)
Kommentar
Fra : Morten Toft


Dato : 07-09-03 00:02

$incfile = file ("include_file_path");
eval ($incfile);

"Kim Emax" <newsgroup@remove-emax.dk> wrote in message
news:bgs6b.66104$Kb2.3035969@news010.worldonline.dk...
> Hey
>
> Jeg har brug for at hive en phpfil ind i en variable, lidt ala $x = inlude
> "header.inc";, men syns ikke jeg kan få det til at spille som jeg vil. Med
i
> historien er så at jeg sætter nogle variabler, som header.inc skal reagere
> på.
>
> Any ideas?
>
> --
> Take Care
> Kim Emax - master|minds: http://www.masterminds.dk
> http://www.emax.dk - http://www.ayianapa.dk
> Køb din vin online på http://www.gmvin.dk,
> Danmarks måske mest avancerede VinWebShop
>
>



Søg
Reklame
Statistik
Spørgsmål : 177559
Tips : 31968
Nyheder : 719565
Indlæg : 6408935
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste