Newsgroup: it.comp.www.php
Titolo: problemi con le sessioni

ciao a tutti,
sto facendo per un progetto universitario un sito in php.
in questo momento ho un grosso problema con le sessioni
per fare esperimenti ho creato una sessione con $_SESSION['login'] =
true;
da notare che true l'ho lasciato apposta senza virgolette.
il problema sta nel fatto che no riesco più a distruggere questa
sessione. uso firefox 3 su linux fedora 10 e il server è un linux
debian stable. ho provato a cancellare tutto da firefox con ctrl+shift
+canc, ho distrutto la sessione in tutti i modi possibili e
immaginabili ma niente, se faccio if(!$_SESSION['login']) entro
sistematicamente nell'if.
vi posto il codice per la gestione del login. adesso ha gli apici sui
vari true e false ma allora nn ce li aveva.
grazie a tutti
<?
	include("comuni/connessione_up.php");
	$db="progetto"; //Nome del Database
	$table="users"; // Nome della Tabella
	// Procedimento per connettersi al Database
	mysql_select_db("$db")or die("cannot select DB");
	session_start();
//serve per sapere se devo fare login o logout se passo login entra
nel primo if altrimenti va nell'else per il logout
	$do=$_POST["log"];
	if($log=="login"){
		// Nome utente e password inviate attraverso il form
		$user=$_POST['utente'];
		$pwd=$_POST['password'];
		$sql="SELECT * FROM $table WHERE username='$user' and
password='$pwd'";
		$result=mysql_query($sql);
		// conto il numero di righe restituite, se c'è una riga vuole dire
che l'utente è giusto
		$count=mysql_num_rows($result);
		// salvo l'array risultato della query nell'array row
		$row = mysql_fetch_array($result);
		if($count==1){
			if($row[5]==true)
				$_SESSION['admin'] = 'true';
			else
				$_SESSION['admin'] = 'false';
			//setcookie("login", $user);
			$_SESSION['login'] = 'true';
			header("location:index.php");
		}else{
			echo "Attenzione username o password errati";
		}
	}else{
		$_SESSION = array();
		if (isset($_COOKIE[session_name()])) {
	    	         setcookie(session_name(), '', time()-42000, '/');
		}
		session_destroy();
		header("location:test.php");
	}
?>

 			header("location:index.php");
ok, ma dopo non fai vedere index.php, come faccio a dirti perchè non c'è
piu' la variabile di sessione?

 piu' la variabile di sessione?
ecco anche il menù che è la parte dell'index che viene modificata in
caso di login avvenuto
<!-- inizio menu.php -->
	<div id="menu">
		<h2>MENU</h2>
		<?php
/*
	if(isset($_SESSION['login']))
		echo "autenticato";
	else
		echo "non autenticato";
*/
			if($_SESSION['login']=='true'){?>
				Benvenuto<br>
				<?php echo $_COOKIE['login']?><br><br>
				<a href="conferenza.php">nuova conferenza</a><br>
				<a href="chisiamo.php">chi siamo</a><br>
				<a href="contatti.php">contatti</a>
				<form action="login.php" method="post">
					<input type="hidden" name="log" vaule="logout">
					<input type="submit" value="logout">
				</form>
<?php 		}else{?>
				LOGIN<br><br>
				<form action="login.php" method="post">
					Utente<br>
					<input type="text" name="utente" value="utente" size="16"> <br>
					Password<br>
					<input type="password" name="password" value="password"
size="16">
					<input type="hidden" name="log" vaule="login">
					<input type="submit" value="login">
				</form> <br><br>
				<a href="registrazione.php">registrati</a><br>
				<a href="chisiamo.php">chi siamo</a><br>
				<a href="contatti.php">contatti</a>
<?php 		}?>
	</div>
il tutto è frame e table less
faccio tutto con i div e i css

 password='$pwd'";
Da qui in poi sono valide tutte le correzioni che ti fa RedWiz su 
escaping, fetch_assoc, ecc. ecc.
Bye.

 alla pagina di provenienza o alla home) e una di logout (stesso redirect).
ok grazie mille


 faccio tutto con i div e i css
ininfluente, dal punto di vista del server.

 non lo so, ma funziona
Ecco, appunto. Scopri perche`. ;)
 
Bye.

 Bye.
per il momento grazie dell'aiuto
bye

 mysql_real_escape_string a utente e password
a proposito di controlli, siccome ne devo parecchi sulla consistenza
dei dati inseriti, quali date, password, ecc... cosa mi consigliate
come metodo di controllo? sulla pagina di immissione attraverso ajax o
al momento della submit con javascript o attraverso delle funzioni in
php sulla pagina che va a inserire i dati nel db?

 sulla pagina che va a inserire i dati nel db?
Sempre lato server con PHP.
Se vuoi, per facilitare la vita all'utente, ne puoi aggiungere/replicare 
(mai sostituire) alcuni via javascript/ajax.
Bye.

 php sulla pagina che va a inserire i dati nel db?
I controlli lato client possono essere utili per un discorso di usabilità
del sito, ma sono totalmente[¹] (e facilmente) bypassabili, quindi quelli
lato server ci vogliono sempre.
[1] basta disabilitare il javascript nel browser, ad esempio


ricorda che quando si usa  header("location:index.php");
l' interprete php continua a runnare lo script, quindi per evitare
questo subito dopo piazzaci un bel die();
  ;)
ciauz