Newsgroup: it.comp.www.php
Titolo: Gestione degli errori

Ciao a tutti,
nel database della mia applicazione posso memorizzare il nome di una 
funzione custom e il file php in cui andarla a caricare con un include.
Se nel file caricato dinamicamente con include_once c'e' un errore di 
sintassi, non mi viene segnalato in alcun modo... ma certo e' che quel 
momento in poi le cose non funzionano piu' come dovevano.
Ecco il pezzo di codice incriminato
	if (!empty($Form["WACustomScript"]))
	{
		include_once($Form["WACustomScript"]);
	}
	$bCustomEventHandler = False;
	if ((!empty($Form["WAEventHandler"])) &&
		(function_exists($Form["WAEventHandler"])) )
		$bCustomEventHandler = $Form["WAEventHandler"]($Form,
				$HTTP_POST_VARS, $aMessage,
				 $iCurrentForm, $TableRel);
	restore_error_handler();
Ovviamente la domanda sorge spontanea... :-)
C'e' nessuno che abbia avuto problemi del genere e ne sia venuto a capo?
Ciao,
Vincenzo

 momento in poi le cose non funzionano piu' come dovevano.
[da 
http://it.php.net/manual/it/function.include-once.php
]
include_once()
L'istruzione include_once() include e valuta il file specificato durante 
l'esecuzione dello script. È un comportamento simile all'istruzione 
include(), con la sola differenza che se il codice di un file è stato 
già incluso, esso non sarà incluso nuovamente. Come suggerisce il nome, 
esso sarà incluso solo una volta. 
[da 
http://it.php.net/manual/it/function.include.php
]
include()
L'istruzione include() include e valuta il file specificato.
La documentazione seguente si applica anche a require(). I due costrutti 
sono identici in ogni aspetto eccetto per come essi trattano gli errori. 
include() produce un Warning mentre require() restituisce un Fatal 
Error. In altre parole, usate require() se volete che un file mancante 
fermi l'esecuzione della pagina. include() non si comporta in questo 
modo, lo script continuerà nonostante tutto. Assicuratevi di avere un 
appropriato include_path impostato a dovere. 
-- 
Roberto Lupi

> include_once($Form["WACustomScript"]);
prova
require_once($Form["WACustomScript"])

	}
Questa e' una istruzione abbastanza traggica, perche' in pratica puoi
fare includere qualsiasi cosa. Potenzialmente e' un rischio.
Leonardo creativo
-- 
Time's angles, mages tell, conceal a place
incredible, beyond the mundane mind;
night-shrouded and between the seas of space
dread creatures drift in the ageless winds.

realta' l'overhead e' molto ridotto (l'include soltanto ti costa 100,
Bhe, lo Zend Optimizer c'è anche per Win32 (poi se metto php come
isapi su IIS4 funziona solo se il vento soffia da sud-sud-est, è vero
anche questo..)
fe...@delenda.net
-- 
"Any sufficiently advanced technology is indistinguishable
from a rigged demo."

anche questo..)
LOL. Un IIS che ha letto Amleto :-)
Leonardo

Grazie a tutti per i consigli, scusatemi ma sono stato fuori per qualche 
giorno e non ho potuto seguire il thread, che inaspettatamente ha 
scatenato qualche piccola diatriba.
Ciao,
Vincenzo

 Leonardo creativo
Ciao creativo,
Vincenzo

Ed e' proprio quello che voglio.
AAAAGGGHHH!!! SACRILEGIO!!!
Leonardo sconvòrto

 check sulla sintassi devi continuare a farlo via http.
Perchè ? A parte il fatto che come dico io sei già sicuro che gli script
sono quelli, perchè è inutile tamperare la POST, puoi benissimo mettere
nella funzione inclusa un tuo error handler definito con set_error_handler()
che puo' fare quello che vuoi, anche inviare una mail. Funziona anche
includendo lo script con require().
Inoltre come fai te il tontanka passa su http e quindi in chiaro.
fe...@delenda.net
--
For a successful technology, reality must take precedence over public
relations, for nature cannot be fooled. (R.P.Feynman report on STS-51)

Inoltre come fai te il tontanka passa su http e quindi in chiaro.
Sicuro, ma quello serve solo come diagnostica e l'unica cosa che
conta e' che sia una stringa abbastanza 'strana'. E' chiaro che,
se hai l'accesso al sorgente PHP, vedi come farti rispondere con
una stringa comunque fissa. Dé, bel guadagno avresti fatto :-)))
Leonardo

Leonardo Serni wrote:
 >
[ megaconsigliomissis ]
Grazie, l'illuminazione è arrivata meglio di una lampada da 100 W :-)
Metto subito in pratica la parte per il controllo della sintassi 
anzitempo, che mi sembra fichissima.
 >
 >>>Questa e' una istruzione abbastanza traggica, perche' in pratica puoi
 >>>fare includere qualsiasi cosa. Potenzialmente e' un rischio.
 >
 >
 >>Ed e' proprio quello che voglio.
 >
 >
 > AAAAGGGHHH!!! SACRILEGIO!!!
Ah ah ah ah, a leona', maccome sacrilegio?!?!
Grazie per il tempo che mi hai dedicato ma permettimi: ho l'impressione 
che tu raggiunga troppo in fretta conclusioni senza avere un'idea 
precisa di quello che sto facendo.
L'obiettivo che ho e' quello di scrivere un framework che si possa
personalizzare, in questo contesto e' l'amministratore o il
programmatore a decidere il nuovo comportamento della form, inserendo
nel repository di configurazione il nome del file da includere.
Nel repository sono specificati anche i nomi delle funzioni che devono
essere presenti e che hanno un elenco di parametri standard.
Con queste premesse l'amministratore deve avere la possibilità di
personalizzare il comportamento dell'applicazione, non posso imporgli
limitazioni.
Inoltre pensandoci mi piacerebbe anche approfondire l'argomento "PHP:
performance nell'interpretazione e nell'esecuzione del codice sorgente"
per capire fin dove mi posso spingere.
 >
 > Leonardo sconvòrto
ciao mitico.
P.S. Mi sembra d'averti letto parecchio tempo addietro su Fidonet.

Leonardo
fe...@delenda.net
-- 
It happened in Monterey, without thinking twice
I left her and I threw away the key to paradise
My indiscreet heart, longs for a sweetheart, 
That I left in ol' Monterey! 

script dei suoi include e cercare di farli autenticare come validi.. 
Mmm. Rimedio facile: si mettono gli include, schermati con .htaccess o
anche non schermati se contengono solo funzioni, nella stessa dir :-)
Ma in realta' e' difficile che succeda: in genere la directory con gli
include avra' protezioni uguali (o anche maggiori) della principale.
Leonardo

P.S. Mi sembra d'averti letto parecchio tempo addietro su Fidonet.
Pol'čssere. 2:332/109.0 :-)
Leonardo