Newsgroup: it.comp.www.php
Titolo: problema login

Ciao, devo fare un sistema di login; questo è il codice:
<?php
// Collegamento ad database.
include("config.php");
    $email = $_POST['email'];
    $password = sha1($_POST['password']);
    $query = "select * from form where email = '".$email."' and password = 
'".$password."'";
    $res = mysql_query($query) or die("<br>Errore Numero: ".mysql_errno() 
."<br>Descrizione: ". mysql_error()."<hr>");
    $row = mysql_fetch_object($res);
    $_SESSION['email'] = $row->email;
    $_SESSION['password'] = $row->password;
if((isset($_SESSION['email'])) && (isset($_SESSION['password'])))
        {
        echo '<div id="menu1">
<a href="index.php">Home page</a>&nbsp;&nbsp;&nbsp;
    <a href="register1.php">Iscriviti</a>&nbsp;&nbsp;&nbsp;
    <a href="search.php">Cerca persone</a>&nbsp;&nbsp;&nbsp;
    Il tuo account &nbsp;&nbsp;';
        echo "<a href=\"editprofile1.php?id=$row->id\">Tuo 
profilo</a></div>";
    }
    else
    {
echo '<div id="menu"><form action="" method="post" 
enctype="multipart/form-data">
<a href="index.php">Home page</a>&nbsp;&nbsp;&nbsp;
    <a href="register1.php">Iscriviti</a>&nbsp;&nbsp;&nbsp;
    <a href="search.php">Cerca persone</a>&nbsp;&nbsp;&nbsp;
    Il tuo account &nbsp;&nbsp;
               <b>E-mail: </b><input type="text" name="email3" size="15" 
/>&nbsp;&nbsp;
               <b>Password: </b><input type="password" name="password3" 
size="15" />&nbsp;&nbsp;
               <input type="submit" name="login" value="Login" />
               </form></div>';
    }
?>
fin qui è ok, ma quando ricarico la pagina anche se un utente si è loggato
riappare il form di login.
Mi potete aiutare? Grazie. 


da quello che vedo manca session_start()
il controllo della sessione va fatto prima
anche perchè nel tuo caso quando ricarichi la pagina la prima cosa che 
fai è prendere i dati di POST (che non dovrebbero esserci più), e quindi 
l'accesso al db fallisce e ti ripresenta il login.
io farei
<?php
// Collegamento ad database.
include("config.php");
//avvia la sessione
session_start();
controlli la mancanza dei dati in sessione (ti fa capire che non è stato 
effettuato il login)
if((!isset($_SESSION['email'])) && (!isset($_SESSION['password'])))
{
	//controlli se per caso si viene da un invio di un form
	if($_POST) {
                 // in questo caso verifichi il login
		$email = $_POST['email'];
		$password = sha1($_POST['password']);
		$query = "select * from form where email = '".$email."' and password = 
'".$password."'";
		$res = mysql_query($query) or die("<br>Errore Numero: ".mysql_errno()
		."<br>Descrizione: ". mysql_error()."<hr>");
		$row = mysql_fetch_object($res);
		$_SESSION['email'] = $row->email;
		$_SESSION['password'] = $row->password;
	}
	else
	{
                 // in questo caso non provieni da un POST e presenti il 
form
		echo '<div id="menu"><form action="" method="post"
		enctype="multipart/form-data">
		<a href="index.php">Home page</a>&nbsp;&nbsp;&nbsp;
		<a href="register1.php">Iscriviti</a>&nbsp;&nbsp;&nbsp;
		<a href="search.php">Cerca persone</a>&nbsp;&nbsp;&nbsp;
		Il tuo account &nbsp;&nbsp;
		<b>E-mail: </b><input type="text" name="email3" size="15" />&nbsp;&nbsp;
		<b>Password: </b><input type="password" name="password3" size="15"
		/>&nbsp;&nbsp;
		<input type="submit" name="login" value="Login" />
		</form></div>';
	}
}
else
{
	// sei loggato
	echo '<div id="menu1">
	<a href="index.php">Home page</a>&nbsp;&nbsp;&nbsp;
	<a href="register1.php">Iscriviti</a>&nbsp;&nbsp;&nbsp;
	<a href="search.php">Cerca persone</a>&nbsp;&nbsp;&nbsp;
	Il tuo account &nbsp;&nbsp;';
	echo "<a href=\"editprofile1.php?id=$row->id\">Tuoprofilo</a></div>";
}
?>
non l'ho provato ma dovrebbe funzionare.
PS
sanitizza i dati di input così come è scritto è preda di SQL injection
PPS
utilizza il paradigma MVC, separa la logica di presentazione (la V di 
MVC) (il form) dalla logica di business (la M di MVC) (il controllo del 
login)
Ciao



Studia qualche libro perchè hai praticamente un errore in ogni riga
1:
$email = $_POST['email'];
$password = sha1($_POST['password']);
che succede quando $_POST di email e pwd non sono definiti?
2 : 
$query = "select * from form where email = '".$email."' and password='".
$password."'";
se non fai escape delle variabili che ti arrivano dall'utente ti bucano 
in 5 minuti, e anche se non ti bucano è molto probabile che la pagina si 
possa rompere.
3 : 
$row = mysql_fetch_object($res);
$_SESSION['email'] = $row->email;
$_SESSION['password'] = $row->password;
e la query retituisce 0 rows (quindi parametri di login sbagliati), 
queste 3 righe generano 2 warning
mettere la password in session a che ti serve?
4: manca session_start per far propagare i  dati in SESSION alle pagine 
successive (o al ricaricamento della stessa).
Un consiglio, mettilo in config.php
5 : bravo che non tieni le pwd in chiaro nel database, ti consiglio pero' 
di usare un salt (memorizzato magari in quel config che carichi 
all'inizio)