PDA

View Full Version : [PHP] Problema con variabili di sessione,come funzionano?


Roran
04-04-2010, 20:25
Sto scrivendo un guestbook in php che opera su file di testo anzichè su database sql,diciamo che l'ho completato però volevo mettere un controllo per lo spam e ho letto che per farlo c'è bisogno delle variabili di sessione però non capisco come dichiararle sul lato client e come ricevere i dati sul file php server.Vi faccio un esempio:

lato client:

<html>
<body>
<?php
$antispam=rand(1,9999);
$_SESSION['antispam']=$antispam;
?>
<form action="salva_commenti.php" method=get>
Nickname:<BR>
<input type=text name=nick maxlength=20 value="il tuo nickname"><BR>
Lascia il tuo commento:<BR>
<TEXTAREA NAME=commenti ROWS=3 COLS=30>Scrivi qui il testo</TEXTAREA><BR>
<tr><td>
<?php echo $_SESSION['antispam'] ?>
<td><input type=text name=code maxlength=4 size=4></td></tr>
<input type="submit" value= "invia commento"><br>
</form>

<?php
$nomefile="commenti.txt";
include("leggi_commenti.php");
if(file_exists($nomefile)) lettura($nomefile);
else echo "nessun commento per questa pagina";
?>

</body>
</html>

ho scritto la parte della variabile di sessione seguendo una guida in rete,praticamente non so come ricevere i dati da quella variabile gia in php sull'altro file,cosa che per il nick e l'area di testo faccio in due secondi con $_GET['nome']

spero di essere riuscito a farvi capire quale è il problema,anche se mi sono spiegato un po' male

CwNd
04-04-2010, 21:26
Devi mettere session_start(); prima di ognu output:


<?php
session_start();
?>
<html>
<body>
...


In questo modo vengono "attivate" le variabili di sessione, e valorizzate nel caso gli hai assegnato un valore in qualche altra pagina. Nel codice che hai scritto non le usi in modo molto proprio visto che gli assegni un valore ad ogni chiamata ad ogni chiamata.

Roran
05-04-2010, 20:16
lo devo scrivere nel file che fa da client?Comunque non ho ancora capito come recuperare la variabile di sessione nell'altro file,quello a cui vengono inviati i dati

RagingBull
06-04-2010, 13:19
inserisci session_start(); all'inizio dei file.

non hai bisogno di passare nulla tra le pagine: la sessione resta attiva fino a quando qualcuno non decide di terminarla (o chiudendo il browser o tramite il comando session_destroy(); ).

per il recupero ti basta solo richiamare la variabile di sessione:

echo $_SESSION['variabile'];

Roran
06-04-2010, 20:21
Grazie,ora funziona