PDA

View Full Version : [PHP] Sessioni...


sblantipodi
30-07-2007, 00:27
Salve,
sto cercando di capire come funzionano le sessioni in PHP...
Ho scritto 3 file.

Il primo ss1.php

<?php
# ss1.php

session_start();
$num_impiegato =session_id();
session_register("nome","dipartimento"); ?>

<HTML>
<BODY>
<?php
$form="<CENTER><H2>Consegne Spa - Nuovo Impiegato</H2></CENTER>
<FORM ACTION=\"ss2.php\" METHOD=\"POST\">
<B>Nome impiegato:</B><BR>
<INPUT TYPE=\"text\" NAME=\"nome\" SIZE=20>
<BR><B>Dipartimento</B><BR>
<SELECT NAME=\"dipartimento\" >
<OPTION SELECTED>Autista consegne
<OPTION>Magazzino
<OPTION>Vendite
<OPTION>Amministrazione
</SELECT>
<BR>
<INPUT TYPE=\"submit\" VALUE=\"Pagina seguente\">
<INPUT TYPE=\"reset\" VALUE=\"Cancella!\">
</FORM>";
?>
</BODY></HTML>
<?php
echo $form;
?>

il secondo ss2.php
<?php
session_start();
session_register("indirizzo","telefono");
?>
<HTML>
<BODY>
<?php
$form="<CENTER><H2>Consegne Spa - Nuovo Impiegato</H2></CENTER>
<FORM ACTION=\"http://bumper/ss3.php\" METHOD=\"POST\">
<B>Indirizzo impiegato:</B><BR>
<INPUT TYPE=\"text\" NAME=\"indirizzo\" SIZE=30>
<BR><BR><B>Numero telefono impiegato:</B><BR>
<INPUT TYPE=\"text\" NAME=\"telefono\" SIZE=30>
<BR>
<HR>
<INPUT TYPE=\"submit\" VALUE=\"Pagina seguente\">
<INPUT TYPE=\"reset\" VALUE=\"Cancella!\">
</FORM>";
?>
</BODY></HTML>

<?php
echo "$form";
?>

il terzo ss3.php
<?php
session_start();
?>
<HTML>
<BODY>
<CENTER><B><H3> Ecco le informazioni sul nuovo impiegato</H3></B></CENTER>
<?php
$visualizza="<PRE>
Nome impiegato: $nome<BR>
Dipartimento: $dipartimento<BR>
Livello retributivo: $stipendio<BR>
Sede: $sede<BR>
Indirizzo casa: $indirizzo<BR>
Telefono: $telefono<BR>
ID impiegato: $num_impiegato<BR></PRE>";
?>
</body>
</html>
<?
echo "$visualizza";
$destinatario="[email protected]";
$header="Inserimento nuovo impiegato";
$info="Ecco le informazioni...
NOME: $nome
DIPARTIMENTO: $dipartimento
LIVELLO RETRIBUTIVO: $stipendio
INDIRIZZO CASA: $indirizzo
NUM TELEFONO: $telefono
ID IMPIEGATO: $num_impiegato";
mail($destinatario,$header,$info);

session_destroy();
?>

Arrivati al terzo file tutte le variabili sembrano essere vuote.
Potete aiutarmi?

andbin
30-07-2007, 09:39
Salve,
Arrivati al terzo file tutte le variabili sembrano essere vuote.
Potete aiutarmi?Perché una cosa sono le variabili di sessione e un'altra cosa sono le variabile ricevute a seguito di un POST.

Quando nella prima pagina (ss1.php) invii il form, lo script ss2.php riceve una serie di valori che sono memorizzati nell'array superglobal $_POST.

Quindi avrai dei valori, ad esempio $_POST['nome']. Queste non sono variabili di sessione. Se vuoi che lo script ss3.php riceva i dati inviati da ss1.php, allora hai 2 strade:
A) Nello script ss2.php memorizzi in apposite variabili di sessione i dati presenti in $_POST.
B) Nello script ss2.php mandi in output dei campi 'hidden' che contengono i valori contenuti in $_POST.

Per fare un esempio concreto che utilizza un campo hidden:

a.php
<html>
<body>

<form action="b.php" method="post">
<input type="text" name="campo1" size="30">
<br>
<input type="submit" value="Pagina seguente">
</form>

</body>
</html>b.php
<html>
<body>

<form action="c.php" method="post">
<input type="hidden" name="campo1" value="<?php echo htmlspecialchars(stripslashes($_POST['campo1'])); ?>">
<input type="text" name="campo2" size="30">
<br>
<input type="submit" value="Pagina seguente">
</form>

</body>
</html>c.php
<html>
<body>

<p>Campo1 = <?php echo htmlspecialchars(stripslashes($_POST['campo1'])); ?></p>
<p>Campo2 = <?php echo htmlspecialchars(stripslashes($_POST['campo2'])); ?></p>

</body>
</html>