Newsgroup: it.comp.www.php
Titolo: Sessioni e login

Ciao a tutti.
	Sto tentando di realizzare un semplice sistema di login basato su mysql;
quello che vorrei ottenere è che inserendo un login e una password presenti in una
tabella si sia loggati, altrimenti no. Nel primo caso, vorrei tener traccia
dell'id_utente, che è un campo numerico univoco nella tabella di cui sopra.
	Lo script che riporto qui funziona in locale (IIS + PHP 4.3.1) ma non su
altri server (ad esempio su Lycos: Apache (suppongo) + PHP 4.3.2). Su Lycos
inserendo un nome utente ed una password (corretti o meno) non succede
niente... sembra che $_SESSION["loggato"] non venga messa a 1.
	Cosa sbaglio?? Ecco gli script:
	// PAGINA CON IL FORM DI ACCESSO
	<?php
		if ( $_SESSION["loggato"] != 1 ) {
	?>
		<form class="login" name="login" method="post" action="ingresso.php">
			Login: <input name="username" type="text" size="5" maxlength="8">
			<br/>
			Password:<input name="password" type="password" size="5" maxlength="8">
			<div id="pulsante">	
				<input class="pulsante" name="login" type="submit" value="Accedi">
			</div>
		</form>
	<? 
			if ($_SESSION["errore"] != "") {
				echo $_SESSION["errore"];
			}
		} 
		else {
	?>
		<p class="menu">
			Benvenuto, <b>[<?php echo $_SESSION["id_utente"]; ?>] <?php echo
$_SESSION["nome"]; ?></b>.
		</p>
		<?
			if ($_SESSION["errore"] != "") {
				echo $_SESSION["errore"];
			}
		?>
		<p class="menu">
			- <a href="sezioni/admin.php">Amministrazione</a> »<br/>
			- <a href="logout.php">Log out »</a>
		</p>
	<?
		}
	// INGRESSO.PHP - script che valida o meno l'accesso
<?php
	session_start();
 
	session_register("errore");
	session_register("id_utente");
	session_register("nome");
	session_register("loggato");		
 
	$username = $_POST['username'];
	$password = $_POST['password'];
 
	if ($username == "") {
		$_SESSION["errore"] = "Nome utente vuoto!";
		$_SESSION["loggato"] = 0;
	}
	else {
 
		$_SESSION["loggato"] = 0;
 
		mysql_select_db ($database_cn, $cn);
		$sql = "SELECT id_utente, nome FROM utenti ";
		$sql .= "WHERE username='".mysql_escape_string($username)."' ";
		$sql .= "AND password='".mysql_escape_string($password)."'";
 
		$rs = mysql_query($sql, $cn) or die (mysql_error());
		$numero = mysql_numrows($rs);
		if ($numero > 0){
 
			$row_rs = mysql_fetch_array($rs);
 
			$_SESSION["id_utente"] = $row_rs['id_utente'];
			$_SESSION["nome"] = $row_rs['nome'];
			$_SESSION["loggato"] = 1;	
		}
		else {
			$_SESSION["loggato"] = 0;
			$_SESSION["errore"] = "Nome utente o password non validi.";		
		}
 
		mysql_free_result($rs);
 
	}
	header("location: index.php");
?>
	Spero che qualcuno mi illumini... 
		J.

	session_register("loggato");
Toglili, non servono se usi $_SESSION
Saluti
Francesco
_____________________________________
http://www.altropc.it
 - Un altro PC è possibile!
Software libero, PHP, MySQL, Webdesign, Sicurezza, CMS, Tutorials
Per rispondere in e-mail togli NOSPAM 

 Saluti
	Provato, non cambia niente :(
	Giovanni

 
	Ho scoperto che avevo settato session.auto_start=1 in php.ini... adesso è
a 0, e lo script si comporta in locale come su Lycos.
	Cosa sbaglio???
	J.
-- 
Dinamo Ducks (50212), Italia, Lombardia, IV.32
Tessera #003 del "Club dei mille" di Hattrick.
Dinamo Ducks website: 
http://dinamoducks.altervista.org
NGCup: 
http://ngcup.altervista.org

 ha scritto nel messaggio
news:1wa7588o52g3k.wtmztk22md0f$.dlg@40tude.net...

Scusa io sono un neofita e ho provato il tuo esempio.
Quando lancio apache mi da "variabile _SESSION non definita a riga 2"ed un
altra sfilza di errori.
Mi puoi spiegare come fare per poter provare il tuo esempio?
Grazie Ricca82