Fede 88
20-10-2009, 16:30
Io e un mio amico abbiamo deciso di creare un sito web dinamico, con la gestione degli account (login, registrazione...), le basi di php le abbiamo però siamo alle prime armi per quanto riguarda la creazione di siti web dinamici.
Abbiamo creato la form di registrazione e di login, entrambe funzionanti.
Però c'è un problema perchè la form di login in pratica verifica solamente che i dati inseriti siano effettivamente presenti nel database e siano corretti, e altro non fa... infatti visualizza solamente una scritta login effettuato (oppure di errore in caso di dati errati), però non capiamo come fare a permettergli di visualizzare alcune pagine ed altre no.
Cercando in internet, abbiamo letto su alcuni siti che vanno create delle sessioni, per verificare se l'utente è connesso ed è autorizzato a vedere le pagine.
Qualcuno potrebbe chiarirmi un po' le idee. Grazie
Queste sono i file php della registrazione e del login:
REGISTRAZIONE
<?php
//dichiarazione costanti
$user = 'root';
$pass = '';
$host = 'localhost';
$dbname = 'db';
// Attiva connessione al DBMS
$db = mysql_pconnect($host, $user, $pass);
if($db == FALSE)
die("Errore nella connessione.");
// Seleziono il database
mysql_select_db($dbname, $db)
or die("Errore nella selezione del database");
// salvo nelle variabili i dati ricevuti dalla form di registrazione
$username = $_POST['username'];
$email = $_POST['email'];
$pass = $_POST['pass'];
$nome = $_POST['nome'];
$cognome = $_POST['cognome'];
$query = "SELECT username FROM utenti WHERE username = '$username'";
$ris = mysql_query($query, $db);
$num1 = mysql_num_rows ($ris);
$query = "SELECT email FROM utenti WHERE email = '$email'";
$ris = mysql_query($query, $db);
$num2 = mysql_num_rows ($ris);
if($num1 != '0'){
die("Il nome utente scelto è già in uso");
}else{
if($num2 != '0'){
die("L'email scelta è già in uso");
}else{
// Salvo i dati del nuovo utente nel database
mysql_query("INSERT INTO utenti (username, nome, cognome, email, pass) VALUES ('$username', '$nome', '$cognome', '$email', '".md5($pass)."')") or die("Errore inserimento dati");
echo("Registrazione avvenuta con successo!");
}
}
?>
LOGIN
<?php
//dichiarazione costanti
$user = 'root';
$pass = '';
$host = 'localhost';
$dbname = 'db';
// Attiva connessione al DBMS
$db = mysql_pconnect($host, $user, $pass);
if($db == FALSE)
die("Errore nella connessione.");
// Seleziono il database
mysql_select_db($dbname, $db)
or die("Errore nella selezione del database");
// salvo nelle variabili i dati ricevuti dalla form di registrazione
$username = $_POST['username'];
$pass = MD5($_POST['pass']);
$password = 'pass';
$confirmed = 'confirmed';
// Query che seleziona la password del utente
$query = "SELECT pass FROM utenti WHERE username = '$username' LIMIT 1";
$result = mysql_query($query, $db);
$row = mysql_fetch_assoc($result);
$num = mysql_num_rows ($result);
// Quetry che seleziona il campo confirmed del utente
$query1 = "SELECT confirmed FROM utenti WHERE username = '$username' LIMIT 1";
$result1 = mysql_query($query1, $db);
$row1 = mysql_fetch_assoc($result1);
if ($result != '0'){
if($row[$password] == $pass){
if($row1[$confirmed] == 1){
echo("Login effettuato");
}else{
die("Utente non ancora confermato");
}
}else{
die("Password errata");
}
}else{
die("Il nome utente inserito è inesistente");
}
?>
Abbiamo creato la form di registrazione e di login, entrambe funzionanti.
Però c'è un problema perchè la form di login in pratica verifica solamente che i dati inseriti siano effettivamente presenti nel database e siano corretti, e altro non fa... infatti visualizza solamente una scritta login effettuato (oppure di errore in caso di dati errati), però non capiamo come fare a permettergli di visualizzare alcune pagine ed altre no.
Cercando in internet, abbiamo letto su alcuni siti che vanno create delle sessioni, per verificare se l'utente è connesso ed è autorizzato a vedere le pagine.
Qualcuno potrebbe chiarirmi un po' le idee. Grazie
Queste sono i file php della registrazione e del login:
REGISTRAZIONE
<?php
//dichiarazione costanti
$user = 'root';
$pass = '';
$host = 'localhost';
$dbname = 'db';
// Attiva connessione al DBMS
$db = mysql_pconnect($host, $user, $pass);
if($db == FALSE)
die("Errore nella connessione.");
// Seleziono il database
mysql_select_db($dbname, $db)
or die("Errore nella selezione del database");
// salvo nelle variabili i dati ricevuti dalla form di registrazione
$username = $_POST['username'];
$email = $_POST['email'];
$pass = $_POST['pass'];
$nome = $_POST['nome'];
$cognome = $_POST['cognome'];
$query = "SELECT username FROM utenti WHERE username = '$username'";
$ris = mysql_query($query, $db);
$num1 = mysql_num_rows ($ris);
$query = "SELECT email FROM utenti WHERE email = '$email'";
$ris = mysql_query($query, $db);
$num2 = mysql_num_rows ($ris);
if($num1 != '0'){
die("Il nome utente scelto è già in uso");
}else{
if($num2 != '0'){
die("L'email scelta è già in uso");
}else{
// Salvo i dati del nuovo utente nel database
mysql_query("INSERT INTO utenti (username, nome, cognome, email, pass) VALUES ('$username', '$nome', '$cognome', '$email', '".md5($pass)."')") or die("Errore inserimento dati");
echo("Registrazione avvenuta con successo!");
}
}
?>
LOGIN
<?php
//dichiarazione costanti
$user = 'root';
$pass = '';
$host = 'localhost';
$dbname = 'db';
// Attiva connessione al DBMS
$db = mysql_pconnect($host, $user, $pass);
if($db == FALSE)
die("Errore nella connessione.");
// Seleziono il database
mysql_select_db($dbname, $db)
or die("Errore nella selezione del database");
// salvo nelle variabili i dati ricevuti dalla form di registrazione
$username = $_POST['username'];
$pass = MD5($_POST['pass']);
$password = 'pass';
$confirmed = 'confirmed';
// Query che seleziona la password del utente
$query = "SELECT pass FROM utenti WHERE username = '$username' LIMIT 1";
$result = mysql_query($query, $db);
$row = mysql_fetch_assoc($result);
$num = mysql_num_rows ($result);
// Quetry che seleziona il campo confirmed del utente
$query1 = "SELECT confirmed FROM utenti WHERE username = '$username' LIMIT 1";
$result1 = mysql_query($query1, $db);
$row1 = mysql_fetch_assoc($result1);
if ($result != '0'){
if($row[$password] == $pass){
if($row1[$confirmed] == 1){
echo("Login effettuato");
}else{
die("Utente non ancora confermato");
}
}else{
die("Password errata");
}
}else{
die("Il nome utente inserito è inesistente");
}
?>