Gå til innhold

Plassere et php-script inne i et php-script?


Anbefalte innlegg

Siden min siste tråd i html-delen av forumet gled over til php, og ingen gav meg noe svar, prøver jeg meg her.

 

Tingen er sånn at jeg vil plassere et/flere phpscript inne en <?PHP ?>.

Kanskje litt vanskelig å forstå sånn først, men index.php er et stor php-script som setter inn en annen fil, der selve sida ligger.

 

Det ser noe sånt ut;

 

Index.php

<?php
// Main page for Siteframe.

$page_start = microtime();
include "siteframe.php";

// check for optional command-line variables
if ($_GET['category'])
 $PAGE->set_property('category',$_GET['category']+0);

// if the site name is not specified, then the site has not been
// configured properly
if ($SITE_NAME=='')
 header("Location: admin/globals.php");

$PAGE->set_property('page_title',$SITE_NAME);

if ($HOME_PAGE!='') {
 $PAGE->set_property('_index_', parse_text($PAGE->get_template_body($HOME_PAGE)));
}
else {
 $PAGE->load_template('_index_',$TEMPLATES[Index]);
}

[med mer......]

?>

 

get_template_body er da lagret i databasen. Der oppdaterer jeg den som jeg vil (med doctype og alt). Index.php er til for hente inn andre sider, behandle pop-ups osv..

 

Scriptet som ligger i koden (midt i en tabell, og henter bare inn tilfeldige bilder) som er inkludert fra databasen;

 

<?php

$font ="Verdana"; // 
$fontsize ="3"; // 
$textfile ="http://www.pur---------bler/460.txt"; 

//Resten av scriptet
echo "<font face=\"$font\" size=\"$fontsize\">";
$quotes = file("$textfile");
$quote = rand(0, sizeof($quotes)-1);
echo $quotes[$quote];
echo "</font>";
?>

 

Hvis dette var uklart, bare spør ;)

Jeg vil ha et php-script inne i feks document.php, som er hentet inn av index.php...

Lenke til kommentar
Videoannonse
Annonse
Forstår ikkje problemstillingen, vist du inkluderer filer med "include" så skulle det ikkje våre nokre problem.

 

Vist du henter det fra databasen så bruker du "eval" som jorgenindahouse sa.

Se her, og se på hva som skjer med php-scriptene. Ikke tenkt på det der med databasen...

Lenke til kommentar

Hmm, korleis er parseren din bygd opp ? Feilen ligger nok der ein plass. Vist den ikkje takler fleire <?php ?> då er jo ein løysning å fjerne dei fra dei andre filene.

 

Veit ikkje korlei din parser virker, men vanlegvis så blir alle felta som skal ha variabel informasjon i templatene bare lagret som { INFO } (etc) deretter så skifter parseren ut informasjonen som skal stå i det feltet.

Lenke til kommentar

Huff, hvor vanskelig dette skulle gjøres da.

 

Index.php ser slik ut;

<?PHP   <---- DETTE ER STARTEN!!
Nå kommer masse script om pop-ups, reklamer, diverse, og så DET SOM SKAL INKLUDERES, eksempelvis en fil fra databasen. Og når index.php blir lest av i en browser, kommer den fila jeg inkluderte cirka midt i index.php og som inneholder selve sida, og ikke sjekking av bruker id, pop-up innstilinger osv. Og det er denne fila som inkluderes, som er interessant; fordi at det er [i]den[/i] som innheholder <html><body>. Og midt i dette, inne i en tabell, inne i body'en, inne i fila som nettopp ble inkludert og innenfor index.php's sine allmektige grenser <?PHP ?> ligger mitt php-script... Det blir jo da et php-script inne i et php-script, og problemet ligger i at php-scriptet, inne i php-scriptet ikke blir "parset", men kommer ut som tekst og masse tull.

?>        <---- DETTE ER SLUTTEN PÅ INDEX.PHP!!

Skjønner?

 

Enkelt blir det; <?PHP <?PHP ?> ?>.

 

Noen som har løsning på dette? :omg:

Endret av Ingardj
Lenke til kommentar

Først eit spørsmål til deg, koffor i granskauen bruker du nye php tagger i filene uten å avslutte den forrige ?

 

Vist den andre fila hadde blitt inkludert på ein "rett" måte så blir ikkje dei andre <?php ?> taggene includert i selve "scripted" siden dei blir executed når du inkluderer filen.

 

Kvifor du får denne feilen er umuleg for oss å vite, du har fått tips om plassene som det kan være feil, har du i det heile tatt sjekket ut desse ?

Lenke til kommentar
Først eit spørsmål til deg, koffor i granskauen bruker du nye php tagger i filene uten å avslutte den forrige ?

 

Vist den andre fila hadde blitt inkludert på ein "rett" måte så blir ikkje dei andre <?php ?> taggene includert i selve "scripted" siden dei blir executed når du inkluderer filen.

 

Kvifor du får denne feilen er umuleg for oss å vite, du har fått tips om plassene som det kan være feil, har du i det heile tatt sjekket ut desse ?

Se NØYE på dette;

 

<?php
// Main page for Siteframe.

$page_start = microtime();
include "siteframe.php";

// check for optional command-line variables
if ($_GET['category'])
 $PAGE->set_property('category',$_GET['category']+0);

// if the site name is not specified, then the site has not been
// configured properly
if ($SITE_NAME=='')
 header("Location: admin/globals.php");

$PAGE->set_property('page_title',$SITE_NAME);

if ($HOME_PAGE!='') {
 $PAGE->set_property('_index_', parse_text($PAGE->get_template_body($HOME_PAGE)));
}
else {
 $PAGE->load_template('_index_',$TEMPLATES[Index]);
}

[med mer......]

?>

 

Du fikk med deg hva som skjedde?

if ($HOME_PAGE!='') {
 $PAGE->set_property('_index_', parse_text($PAGE->get_template_body($HOME_PAGE)));
}

 

Og ja, HOME_PAGE er definert, og skal her inkluderes. Fortell meg en ting ved dette, du ikke forstår?

Lenke til kommentar
Du fikk med deg hva som skjedde?

CODE 

 

if ($HOME_PAGE!='') {

$PAGE->set_property('_index_', parse_text($PAGE->get_template_body($HOME_PAGE)));

}

 

Og ja, HOME_PAGE er definert, og skal her inkluderes. Fortell meg en ting ved dette, du ikke forstår?

 

Ok..., får quote det igjen då...

Hmm, korleis er parseren din bygd opp ? Feilen ligger nok der ein plass. Vist den ikkje takler fleire <?php ?> då er jo ein løysning å fjerne dei fra dei andre filene.
Lenke til kommentar
Du fikk med deg hva som skjedde?

CODE 

 

if ($HOME_PAGE!='') {

$PAGE->set_property('_index_', parse_text($PAGE->get_template_body($HOME_PAGE)));

}

 

Og ja, HOME_PAGE er definert, og skal her inkluderes. Fortell meg en ting ved dette, du ikke forstår?

 

Ok..., får quote det igjen då...

Hmm, korleis er parseren din bygd opp ? Feilen ligger nok der ein plass. Vist den ikkje takler fleire <?php ?> då er jo ein løysning å fjerne dei fra dei andre filene.

Du kan jo fortelle meg hvordan en parser skal være bygd opp, siden jeg ikke vet hva en parser er... Men det ser uansett ikke ut som om du helt fatter hva som skjer her..

Lenke til kommentar

if ($HOME_PAGE!='') {
$PAGE->set_property('_index_', parse_text($PAGE->get_template_body($HOME_PAGE)));
}

 

Vist variablen "HOME_PAGE" ikkje er tom så kjøres if setningen.

Der blir to verdier sent videre til funksjonen "set_property" som ligger i ein klasse som du har startet tidligere i skriptet med "PAGE" som peker mot den.

Den første verdien er navnet "_index_" deretter så inkluderes "HOME_PAGE" den blir inkludert først i funksjonen "get_template_body" (som har samme klasse som set_property) deretter kjøres ein til funksjon kallet parse_text.

 

Høyrtes det rett ut ?

 

Det du må forstå, er at ingen her veit kva variablen "$HOME_PAGE" inneheld. For alt me veit så kan det være alt fra fil navnet til alt innholdet i den filen. Og korleis skal me kunne vite kva klassen (funksjonene) du inkludere dei inn i gjør ?

Du kan gjør alt fra å bare kjøre ein "include($HOME_PAGE);" der fra å parse innhaldet i filen....

 

Ein parser er eit skript som tar innholdet fra andre filer, for deretter å forandre på desse i tilfelle dei har variabel informasjon, og deretter vise dei for brukeren. (templates etc)

Lenke til kommentar

Ok, $HOME_PAGE inneholder altså, som tildligere sagt, selve sida. Dvs, fra <html> til </html>. Og inne i $HOME_PAGE vil jeg bruke php. Men dette går ikke, siden alt allerede er inne i et php-script.. Har ikke peiling på hvordan jeg kan få deg til å forstå dette.. men men...

Lenke til kommentar

Ingardj: .....

Du er klar over at den første posten forklarte korleis du skulle løyse dette ?

 

Du bør komme ned fra din sky høye hest og faktisk prøve nokon av det du er blitt forklart. Ser heller ut som det er du som ikkje forstår så mye...

 

Bruk EVAL() vist det er ein text string som inneholder php kode og, eller skriv om skriptet ditt slik at det blir som eit normalt parse skript.

Lenke til kommentar

Kontaktet mannen som har laget siteframe, og han tok problemet med en gang ;)

 

Men er litt grønn, og han foreslå at jeg skulle putte php-scriptet i et annet script (javascript??), og så kjøre det scriptet på sida mi, sånn at selve php-scriptet blir parset i scriptet, og så plassert på sida mi..

 

Noe som vet om en script-type hvor jeg kan gjøre slik?

 

-------- E-post ---------

 

Ah, yes - in Smarty, you have tags like this:

 

{php}

...php code goes here ...

{/php}

 

so that you can put whatever PHP code you like into the templates.

 

In Siteframe 3.x, the templates are interpreted AFTER the php

processing has taken place in the web server, so there's no real way to

execute code from within the templates; you'd need to add it into

index.php or another script, and then put the results into the

template.

 

-------- E-post ----------

Lenke til kommentar

Dersom PHP-koden i scriptet du skal inkludere skal kjøres separat, kan du bruke

include(fullstendig url til fila med http:// og alt);

Da henter include fila fra webserveren og den blir kjørt før den blir inkludert i det andre skriptet....

 

Mulig jeg misforsto problemet da men...

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å
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...