Newsgroup: it.comp.www.php
Titolo: neofita alle prime armi

Sto facendo esercitazioni ed ho costruito questo piccolo script:
<?php
$file_ricevuto = 1;
?>
<?php
//$file_ricevuto NON � uguale ad 1 ma a TRUE (===)
if ($file_ricevuto === TRUE){
?>
<p align="left">Grazie per il tuo contributo</p>
<?php
} else {
?>
<p align="left"><font color="red"><b>Errore: il file non � stato 
correttamente ricevuto</b></font></p>
<?php
}
?>
il quale mette in evidente relazione html con php. Al di l� del fatto che 
uno stile del genere � poco leggibile, cercavo di capire come si comportano 
php e html insieme e come viene letto il flusso di codice dal motore php e 
dal browser. La particolarit� del codice qui sopra sta nel fatto che nel 
controllo di flusso si apre la parentesi graffa e si interrompe lo script 
php, per inserire il codice html. So che il motore php ignora l'html, ma 
allora lo script interpretato dovrebbe essere:
<?php
$file_ricevuto = 1;
?>
<?php
//$file_ricevuto NON � uguale ad 1 ma a TRUE (===)
if ($file_ricevuto === TRUE){
} else {
}
?>
Ed invece nel controllo di flusso php visualizza una parte di html piuttosto 
che l'altra. Posso capirlo a livello intuitivo, ma non capisco esattamente 
come avviene la lettura del codice php da parte dell'interprete php e la 
lettura di html da parte del browser. Ad esempio: chi per primo legge il 
codice? il motore php o il browser? Io penso che, essendo php un linguaggio 
lato server, il primo a leggere il codice sia il motore php stesso. E' 
corretto? In tal caso, nell'esempio di sopra, l'interprete php scarta l'if e 
passa all'else per poi per riprendere il codice nell'ultimo script che 
richiama soltanto una parentesi graffa... L'else allora dovrebbe essere 
vuoto al momento, perch� abbiamo detto che � l'interprete php a leggere per 
primo il codice. Ora dovrebbe intervenire il browser ma il browser non sas 
leggere il php quindi dovrebbe ignorarlo e semplicmente visualizzare sia la 
prima parte che la seconda, cos�:
<p align="left">Grazie per il tuo contributo</p>
<p align="left"><font color="red"><b>Errore: il file non � stato 
correttamente ricevuto</b></font></p>
Invece NON � cos�, infatti a seconda del flusso di codice, nell'output 
abbiamo O la prima parte di html O la seconda. Why?
ciao Sirdalud

 corretto?
certo. E' un processo a due fasi: l'interprete PHP fa il parsing e
l'esecuzione della sua parte di codice, e manda al browser SOLO l'html
risultante dall'esecuzione stessa.
bye!

 risultante dall'esecuzione stessa.
Ok, ma lo potrei capire se lo script fosse questo:
<?php
$file_ricevuto = 1;
?>
<?php
//$file_ricevuto NON � uguale ad 1 ma a TRUE (===)
if ($file_ricevuto === TRUE){
echo "<p align="\left\">Grazie per il tuo contributo</p>";
?>
<?php
} else {
echo "<p align=\"left\"><font color=\"red\"><b>Errore: il file non � stato 
correttamente ricevuto</b></font></p>";
?>
<?php
}
?>
in cui il codice html si trova all'interno degli script php espresso dalla 
funzione echo. Ma nel mio esempio inziale, il codice html � fuori dagli 
script. E' qui che non capisco! L'interprete php perch� mai dovrebbe 
occuparsi del codice html al di fuori degli script?
ciao Sirdalud 

 risultante dall'esecuzione stessa.
Ok, ma lo potrei capire se lo script fosse questo:
<?php
$file_ricevuto = 1;
?>
<?php
//$file_ricevuto NON è uguale ad 1 ma a TRUE (===)
if ($file_ricevuto === TRUE){
echo "<p align="\left\">Grazie per il tuo contributo</p>";
?>
<?php
} else {
echo "<p align=\"left\"><font color=\"red\"><b>Errore: il file non è stato 
correttamente ricevuto</b></font></p>";
?>
<?php
}
?>
in cui il codice html si trova all'interno degli script php espresso dalla 
funzione echo. Ma nel mio esempio inziale, il codice html è fuori dagli 
script. E' qui che non capisco! L'interprete php perché mai dovrebbe 


 occuparsi del codice html al di fuori degli script?
Non è "fuori dagli script". E' incluso in una coppia di parentesi
graffe. Non è che la parte al di fuori dei tag <?php ?> sia
inaccessibile all'interprete, eh!
E' vero che al client viene inviato solo HTML puro dopo che la parte
in php è stata elaborata, ma non è vero il viceversa.
bye!

 ...
Considera che l'istruzione
?>abc<?php
è perfettamente equivalente alla istruzione
echo 'abc';
L'unica differenza è che un eventuale a-capo dopo il tag di chiusura codice
PHP ?> viene ignorato, e quindi
?>
abc<?php
produce lo stesso output.
Ciao,
 ___ 
/_|_\  Umberto Salsi
\/_\/  
www.icosaedro.it

 php ignora l'html
E' qua che sbagli.
Il php non "lo ignora", lo manda in output così come lo trova.
ciao
Mauro

"Innuendo" <prova@b.c> ha scritto nel messaggio 
news:wFPnn.36014$Ua....@twister2.libero.it...

Ciao, adesso mi è chiaro il concetto. Io pensavo che l'interprete php 
leggesse _soltanto_ ciò che è all'interno dei tag <?php ?> ed invece prende 
in considerazione anche l'html, sebbene l'interprete di quest'ultimo sia il 
browser ovviamente. Lo prende in considerazione nel senso che lo legge o lo 
ripropone così com'è, anziché ignorarlo completamente come pensavo.
Colgo l'occasione per ringraziare tutti voi che mi avete risposto e aiutato 
a capire.
Sirdalud