Newsgroup: it.comp.www.php
Titolo: Integrazione php html: "Benvenuto USERNAME"...

Salve a tutti.
Spero di riuscire a comprendere bene, prima o poi in che modo 
interagiscono php e html...
Vorrei realizzare, come intestazione della mia pagina, qualcosa del tipo:
"Ciao NOME UTENTE! (se non sei tu, CAMBIAUTENTE)"
ho quindi realizzato la mia pagina html, ed ho scritto questo codice:
[...]
<p align="center" style="margin-top: 0; margin-bottom: 0">
<font face="Arial Rounded MT Bold" size="4">Benvenuto
<?php
session_start();
echo $_SESSION['user'];
php?>
</font></p>
<p align="center" style="margin-top: 0; margin-bottom: 0">
<font face="Arial Rounded MT Bold">(se non sei tu <a 
href="logout.php">cambia utente</a>)
</font></p>
Ma ovviamente mi stampa a video solo "Benvenuto (se non sei tu cambia 
utente)"... E' ancor più ovvio che nella pagina di login eseguita prima 
di questa, ho popolato la sessione con $_SESSION['user']=$user;
La spiegazione me la son data: il browser elabora prima i blocchi php e 
poi quelli html... è vero?
In ogni caso ho provato anche, interpretando ciò che mi è stato 
suggerito in qualche post precedente, con:
[...]
<?php
session_start();
php?>
[...]
<font face="Arial Rounded MT Bold" size="4">Benvenuto <?php 
print($_SESSION['user']);?>
Ma il risultato è lo stesso:(
Grazie a tutti!

 e poi quelli html... è vero?
Non e' il browser ad elaborare il codice PHP, ma il server.
Inserisci all'inizio del tuo script (come prima riga) il seguente
codice:
<?php
error_reporting(E_ALL);
ini_set('display_errors', 1);
?>
In modo da visualizzare gli errori. Cosi', a naso penso che il problema
risieda nella posizione in cui richiami la funzione session_start().
Modifica il tuo codice spostando session_start() all'inizio della
pagina (prima di qualsiasi output).
-- 
Vuoi distribuire il tuo sito web su CD/DVD?
Prova 
http://www.dwebpro.com/
Vuoi diventare un esperto analista PHP/MySQL?
Vieni a fare uno stage con noi: 
http://www.creativepark.it/stage/

 pagina (prima di qualsiasi output).
Eppure non è normale, non è che ha abilitato il buffering dell'output 
che non ricordo come si chiama?

 che non ricordo come si chiama?
Se fosse abilitato l'output buffering il problema non sarebbe relativo
a session_start() ma a qualche cos'altro.


 
Purtroppo, il problema mi è rimasto...
Faccio alcune premesse:
La pagina in cui si verifica l'errore è "homepage.htm" che viene 
chiamata dallo script "login.php" mediante
[...]
  $url = "
http://localhost//edit/homepage.php
";
[...]
<html>
<META http-equiv="REFRESH" content="3; url=<?php print($url); ?>">
</html>
In essa, sotto suggerimento di filippo, ho scritto, come prime righe:
<?php
error_reporting(E_ALL);
ini_set('display_errors', 1);
session_start();
php?>
<html>
<head>
<meta http-equiv="Content-Language" content="it">
[...] (a seguire il codice html della pagina)
<font face="Arial Rounded MT Bold" size="4">Benvenuto
<?php
echo($_SESSION['user']);
?>
</font>
Ma ovviamente il risultato è sempre lo stesso. :(
Allora ho provato a fare il redirect verso una pagina differente, 
homepage.php invece che .htm, il cui contenuto è semplicemente
<?php
error_reporting(E_ALL);
ini_set('display_errors', 1);
session_start();
echo($_SESSION['user']);
?>
E in questo caso invece funziona senza problemi!
Proprio non capisco... è come se nella pagina .htm non mi si 
considerasse proprio il codice php....

 
Disperazione..!!!
ho provato anche a scrivere, alle prime righe della pagina homepage.htm
<?php
error_reporting(E_ALL);
ini_set('display_errors', 1);
session_start();
if(isset()$_SESSION['user']))
      echo($_SESSION['user']);
   else
      echo(variabile non settata)
?>
Ma le uniche cose che vedo sono quelle generate dal codice html che 
viene dopo.....
Proprio non capisco, c'è qualche impostazione che, per una singola 
pagina, non faccia elaborare il codice php?
Grazie mille a tutti!

 echo($_SESSION['user']);
In generale, prima di usare una variabile che potrebbe non esistere è
meglio verificare che esista.
if (isset($_SESSION['user'])) {
    echo($_SESSION['user']);
}
Ciao.
-- 
Federico

Federico ha scritto:

Hai ragione, infatti ho inviato poco dopo un messaggio in cui inserivo 
queste alcune modifiche...
Certamente, ho impostato il server (in questo caso il webserver Apache 
che gira sul mio stesso pc) per includere il modulo php e quindi 
interpretarne le istruzioni, inoltre, dato che funziona per tutte le 
altre pagine, non capisco perchè qui non dovrebbe interpretarne le 
istruzioni).
il tag di chiusura è il risultato di un copia/incolla errato, ma nelle 
mie prove era cmq corretto con ?>.
Purtroppo, la situazione non evolve :(

 istruzioni).
A meno che tu non glielo indichi esplicitamente le pagine .htm non 
verranno interpretate dal modulo php.

 verranno interpretate dal modulo php.
Scusa, a questo punto taglia la testa al toro. Modifica l'estensione e
verifica se in .php funziona.
Se sì, il problema è che non c'è l'interprete e almeno hai individuato
la causa.

Mirko ha scritto:

L'ho già scritto in un messaggio precedente, ho provato anche con un 
.php invece che htm e questo mi ha funzionato senza problemi.
Quindi suppongo di non aver attivato l'interprete?...
ma...
Come si fa?? Dove lo devo indicare?
Grazie mille!!!

 Come si fa?? Dove lo devo indicare?
L'interprete l'hai già attivato, stando a quanto hai scritto, il 
problema è che il server capisce di dover chiamare l'interprete 
guardando l'estensione del file in cui è contenuto il sorgente, se tu lo 
chiami .html e non dici al server che i file il cui nome termina con 
.htm contengono codice php il server non chiamerà l'interprete.
C'è una riga del file di configurazione del server, apache se non 
ricordo male, in cui c'è scritto ".php" puoi aggiungere lì l'estensione 
che ti interessa ma NON sono sicuro che non crei casini visto che .htm è 
di norma usato per i file con HTML.
La soluzione più semplice è assegnare ai file con contenuto php 
l'estensione ".php", tra l'altro perché vuoi agire diversamente?

Andrea D'Amore ha scritto:

In effetti, io ho impostato così, ed è chiaro che non conviene forzare 
l'interprete php ad elaborare anche i .htm.
Ciò che volevo era una pagina html in cui si visualizzasse il nome 
dell'utente che si era collegato.
Per questo credevo di dover utilizzare php nella pagina html per 
recuperare i dati dalla sessione, ma non capisco perchè non ci ho 
pensato prima al fatto che se la stessa pagina la chiamo .php, con le 
dovute attenzioni ai tag di apertura e chiusura dovrebbe funzionare 
tutto perfettamente!:)
L'uovo di colombo... Grazie!!!

 mille a tutti!
Prova scrivendo la sintassi corretta:
<?php
error_reporting(E_ALL);
ini_set('display_errors', 1);
session_start();
if(isset($_SESSION['user'])) {
     echo($_SESSION['user']);
} else {
     echo('variabile non settata');
}
?>
E controlla il sorgente della pagina restituita dal server, non solo la
versione renderizzata dal browser.
Dovresti anche provare uno script come il seguente:
<?php phpinfo(); ?>
