Newsgroup: it.comp.www.php
Titolo: variabilli e include

Slave a tutti,
ho scartabellato tra manuale del PHP, libri e newgroup per tutto il giorno 
senza venirne a capo.
Sto imparando in questo periodo ad usare il PHP e mi sono incagliato con un 
problam che riguarda la lettura di variabili all'interno di un file incluso.
Mi spiego con il codice:
in un file Config.inc ho le seguenti variabili messe a mo' di array:
$par['metatitolo'] = "titolo del sito";
$par['metadescrizione'] = "descrizione";
$par['metaautore'] = "beho";
$par['metaparolechiave'] = " parolechiave";
$par['metaindirizzo'] = "
http://www.miosito.it
";
richiamo il file in una pagina presente nella maindirectory con
include("/config/config.inc");
il file è depositato nella directory config e poi lo richiamo nella pagina 
con <?= $par['metatitolo']; ?>
Finchè eseguo tutto all'interno dei tag di php non ho problemi, ma se 
inserico del codice html in mezzo, ad es:
<?= "<?xml version=\"1.0\" encoding=\"iso-8859-1\"?".">";
include("../config/config.inc");
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
"
http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd
">
<html xmlns="
http://www.w3.org/1999/xhtml
">
<head>
<title><? echo $par['metatitolo']; ?></title>
mi scappa fuori sempre un errore di variabile indefinita.
Non riesco proprio a capire dove è l'errore e non ho trovato riferimenti 
utili per arrivarci da solo.
Mi sapete spiegare dove sbaglio?
-- 
Bye
Beho
_____________________
Associazione Culturale Ars Ludika
http://www.arsludika.it
--
http://www.neverwinter.it
http://www.alteregonline.it

 ha scritto nel messaggio 
news:bvZHg.83530$_J1.7...@twister2.libero.it... 

 mi scappa fuori sempre un errore di variabile indefinita.
hai impostato error_reporting a E_ALL ?
sei sicuro che il file venga incluso correttamente? prova:
$f = 'config/config.inc';
if (file_exists($f)) include ($f);
inoltre, cosa ti dice il file di log degli errori del web server?
Ciao,
Tristan

 inoltre, cosa ti dice il file di log degli errori del web server?
Si il file è incluso correttamente perchè se lo metto in una posizione 
differente nel HTML, aggiungendo semplice testo, si legge tutto alla 
perfezione.
Come dicevo sopra, lavoro in locale, quindi non mi sono messo a installare e 
configuare Apache e il Log di IIS non dice praticamente nulla di utile.



L'errore continua a persistere perchč il file non viene processato
dall'interprete PHP.
Metti:
include("config/config.inc.php");
e vedrai che tutto dovrebbe funzionare.
Nick Carter

 e vedrai che tutto dovrebbe funzionare.
Ciao,
ma l'include non dovrebbe leggere il file indipendentemente dalla sua 
estensione?
In fondo che sia php, inc, txt, tpl o altro sono sempre file testuali che 
non non dovrebbero avere problemi ad essere processati finchè il codice è 
contenuo nei tag <?-?>
In ogni caso ho provato sia a rinominare il file a livello di estensione, 
sia ad usare il metodo con fopen(), sia con implode() e ancora continua a 
darmi l'errore.
Per dovere di cronaca il tutto è integrato ad un template engine che sto 
cercando di creare, inizialmente ho pensato che potesse essere un errore 
nella Regex che ho usato per gestire le accezioni dei tag php 
(preg_replace_callback("/(<\?php|<\?)(.*)\?>/usi","buffer",$output); ), ma
anche creando una pagina php ex-novo che contiene al suo interno il semplice 
include, continua a darmi l'errore di variabile indefinita.


 ha scritto nel messaggio 
news:bvZHg.83530$_J1.7...@twister2.libero.it...
<SNIP>
Risolto.
A quanto pare, non chiedetemi il perchč, č bastato scrivere cosě il codice 
per farlo funzionare:
<?php echo '<?xml version=\"1.0\" encoding=\"iso-8859-1\"?'.'>';?>
<? include("config/config.inc"); ?>
Perň il problema persiste nell'engine che sto creando, quindi ne approfitto 
per continuare a domandare senza aprire un altro thread.
Dato che il file (template.html) viene processato e sparato attravarso la 
funzione implode, che precedenza c'č tra il file ed eventuali include 
presenti nella funzione?
Anche qui mi spiego con il codice:
Nel file config.inc ho i paramteri di accesso al database e le routine 
apertura del db.
Il file viene richiamato da Index.php in questo modo
Index.php
<?
include("config/config.inc");
function pagebuffer($output) {
   ob_start();
   eval("$output[2];");
   $ret = ob_get_contents();
   ob_end_clean();
   return $ret;
}
function eval_html($output) {
   return 
preg_replace_callback("/(<\?php|<\?)(.*)\?>/usi","pagebuffer",$output);
   addslashes();
}
connettiDb();
$sql = "SELECT * FROM layout";
## ESECUZIONE DELLA QUERY
$query = @mysql_query($sql) or die("Esecuzione Query fallita!");
$file_content = implode("",file("layout/arsludika.html"));
//$filename = "layout/arsludika.html";
//$handle = fopen($filename, "r");
//$file_content = fread($handle, filesize($filename));
//fclose($handle);
while($row = mysql_fetch_array($query)) {
  $output = eregi_replace("{HEADER}", $row["header"], $file_content);
  $output = eregi_replace("{BODY}", $row["body"], $output);
  $output = eregi_replace("{TOP}", $row["top"], $output);
  $output = eregi_replace("{MENUSX}", $row["menusx"], $output);
  $output = eregi_replace("{MENUDX}", $row["menudx"], $output);
  $output = eregi_replace("{FOOTER}", $row["footer"], $output);
  //eval($output);
  echo eval_html($output);
  }
@mysql_close($connessione);
?>
Tutto quello che č contenuto nel db viene processato correttamente, ma le 
variabili contenute in config.inc non vengono riconosciute se sono inserite 
direttamente nella pagina html.
