Gå til innhold

Include($side) --> $variabel


Anbefalte innlegg

Har eit lite problem, då eg har nokre .php-sider som eg vil ha inkludert, men ikkje på den vanlege måten. Det er PHP-kode i desse filene, og eg vil at denne koden skal verte kjørt, og så får eg utdataane frå dette. Dette skal i sin tur lagrast i ein variabel som tekst.

 

Eg har tidlegare hatt problem med å få liknande ting til ved hjelp av output buffering, men eg har aldri fått OB til å virke skikkelig. Nokon som har nokre idear til korleis eg kan få gjort dette?

Lenke til kommentar
Videoannonse
Annonse

Jeg har tenkt litt mer på en løsning og jeg foreslår følgende:

 

Du er nødt til å få filen parset, derfor må du kalle den slik: http://webhost/script.php

 

Du kan med andre ord gjøre det slik:

 

<?PHP

$fd=fopen("http://webhost/script.php","r");

while ($line=fgets($fd,1000))

{

$tekstendin.=$linje;

}

fclose ($fd);

?>

 

Du kan også kjøre en test på hvem som kaller scriptet, og begrense det til at kun serveren får kalle det direkte.

Lenke til kommentar

christt, veldig godt forsøk, men det har ein "feil". Variablane i (t.d.) index.php må vere tilgjengelege i (t.d.) script.php. Det vil ikkje gå når ein køyrer ein fread, såvidt eg veit... Eg trur eigentlig eg er nødt til å finne ein mykje lurare løysing på problemet... :razz: Skal prøve å forklare det når eg har fått det til... :wink:

Lenke til kommentar

Quote:


Den 2002-11-12 10:44, skrev kilogram:

Har eit lite problem, då eg har nokre .php-sider som eg vil ha inkludert, men ikkje på den vanlege måten. Det er PHP-kode i desse filene, og eg vil at denne koden skal verte kjørt, og så får eg utdataane frå dette. Dette skal i sin tur lagrast i ein variabel som tekst.


Eg har tidlegare hatt problem med å få liknande ting til ved hjelp av output buffering, men eg har aldri fått OB til å virke skikkelig. Nokon som har nokre idear til korleis eg kan få gjort dette?


 

Jeg har for ikke lenge siden (før harddisken min fikk noen stygge bad sectors tull ball og mista alt, men det er en annen historie) laget det du snakker om. Men brukte output buffering.

 

Jeg leste inn en php fil med file() og kjørte noe implode av dette for å sveise sammen linjene. Kjørte en eval på php koden inni output bufferingen, lagret resultatet i en variabel og avbrøt buffringa så ikke noe kom på skjerm.

 

Husker ikke helt koden men skal prøve å summere opp noe her:

 

Jeg fant det jeg var ute etter på:

http://www.php.net/manual/en/function.eval.php

 

Eksempel fra en på den siden:

 

---

benjcarson at digitaljunkies dot ca

17-Jun-2002 07:25

Really, the only thing you have to do if you want to parse a mixed html/php block string is:

 

Code:
ob_start();
eval("?>" . $somestringwithcode . "<?php ");
$output = ob_get_contents();
ob_end_clean();

 

And that's all! No need to search for "<?php" or "?>" (except to check if the string is even worth eval'ing, for efficiency's sake), nor do you have to use addslashes.

 

This method works for parsed files, database fields, user input, whatever, and it's only *4* lines long... No need to be excessively complex here...

---

 

Jeg loaded f.eks inn fila slik

Code:
$somestringwithcode = implode('', file("file.php"));

 

Men jeg opplevde det å bytte ut eval koden med denne

Code:
eval("?>" . $somestringwithcode);

fungerte bedre for meg, men husker ikke, du får prøve både og :smile:

 

Mvh

Alexander L Holm

 

[ Denne Melding var redigert av: alexholm på 2002-11-16 02:23 ]

Lenke til kommentar
  • 4 måneder senere...

Har laget en funksjon til noe jeg trengte og fant ut at det var kjekkest slik. Grunnen er at når man eval'er blanding av html og php kode, så blir også variabler, klasser, osv opprettet og bli en del av ditt eget program. Men hvis man eval'er dette inne en funksjon, så vil dette bare bli opprettet inni den og ditt eget program vil ikke bli "forurenset" :smile:

 

function EvalFile($m_evalfile_path)

{

   $m_evalfile_content = file_get_contents($m_evalfile_path);

   

   ob_start();

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

   $m_evalfile_result = ob_get_contents();

   ob_end_clean();

   

   return $m_evalfile_result;

}

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...