io, ti spiego come fare con un solo link perchè con 2 non l'ho mai fatto! io lo fatto solo con attivazione, non ti inserisco tutto il codice di registrazione ma solo la parte che ti interessa!!!
TABELLA MYSQL:
CREATE TABLE IF NOT EXISTS `utenti` (
`id` int(11) NOT NULL auto_increment,
`user` text NOT NULL,
`pass` text NOT NULL,
`mail` text NOT NULL,
`attivazione` text NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=5 ;
PAGINA DI REGISTRAZIONE.PHP
Codice PHP:
// Genero una stringa casuale di Attivazione
$attivazione = '';
for($x=1; $x<=32; $x++)
$attivazione.=rand(0,9);
$attivazione = md5($attivazione);
$message = 'Benvenuto utente! Ti sei registrato con sucesso su Zomer un fantastico Social Network! Per attivare il suo account e usufruire di tutti i servizi deve visitare il seguente link:<br><a href="http://www.zomer.altervista.org/attivazione.php?code='.$attivazione.'">Attiva account</a>';
// Header dell'email, per madnarla in formato html
$headers = "From: Zomer <makingweb.altervista@gmail.com>\r\n";
$headers .= "Reply-To: makingweb.altervista@gmail.com\r\n";
$headers .= "Return-Path: makingweb.altervista@gmail.com\r\n";
$headers .= "Content-Type: text/html; charset=ISO-8859-1\r\n";
// Invio L'email
mail($mail, 'Registrazione', $message, $headers);
// Query per l'inserimento dell'utente nel database
$strSQL = "INSERT INTO utenti (nome,user,pass,mail,t_sesso,attivazione)";
$strSQL .= "VALUES('$nome', '$user', '$pass', '$mail', '$sesso', '$attivazione')";
mysql_query($strSQL) OR die("Errore 000 registrazione, contattare l'amministratore ".mysql_error());
PAGINA DI ATTIVAZIONE.PHP
Codice PHP:
<?php
// Includo la connessione al database
require('config.ini.php');
require('errore.php');
session_start();
// Dati Inviati dal modulo
$code = (isset($_GET['code'])) ? trim($_GET['code']) : '';
// Filtro i dati inviati se i magic_quotes del server sono disabilitati per motivi di sicurezza
if (!get_magic_quotes_gpc()) {
$code = addslashes($code);
}
// Controllo la validit� del link
if(strlen($code) != 32)
die('Codice non valido');
//prelevo l'id
$query = " SELECT * FROM utenti WHERE attivazione='$code'";
$risult = mysql_query($query);
$row = mysql_fetch_array($risult);
$id = $row['id'];
$_SESSION['user'] = $row['user'];
// Aggiorno il record
$update = mysql_query("UPDATE utenti SET attivazione = '' WHERE attivazione = '$code' LIMIT 1");
// Quanti record ha aggiornato la query
$attivato = mysql_affected_rows();
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Area privata</title>
</head>
<body>
<?=($attivato == 1) ? 'Account Attivato' : 'Errore, link non valido' ?><br />
<br />
<br />
<a href="index.php">Homepage</a><br />
</body>
</html>
LOGIN.PHP
Codice PHP:
<?php
// Includo la connessione al database
require('config.ini.php');
// Se il modulo viene inviato...
if(isset($_POST['login']))
{
// Dati Inviati dal modulo
$user = (isset($_POST['user'])) ? trim($_POST['user']) : ''; // Metto nella variabile 'user' il dato inviato dal modulo, se non viene inviato d� di default ''
$pass = (isset($_POST['pass'])) ? trim($_POST['pass']) : ''; // Metto nella variabile 'pass' il dato inviato dal modulo, se non viene inviato d� di default ''
// Filtro i dati inviati se i magic_quotes del server sono disabilitati per motivi di sicurezza
if (!get_magic_quotes_gpc()) {
$user = addslashes($user);
$pass = addslashes($pass);
}
// Crypto la password e la confronto con quella nel database
$pass = md5($pass);
// Controllo l'utente esiste
$query = mysql_query("SELECT id,attivazione FROM utenti WHERE user = '$user' AND pass = '$pass' LIMIT 1");
// Se ha trovato un record
if(mysql_num_rows($query) == 1)
{
// prelevo l'id dal database
$login = mysql_fetch_array($query);
// L'account � attivo?
if($login['attivazione'] == '')
{
// Creo una variabile di sessione
$_SESSION['login'] = $login['id'];
// reindirizzo l'utente
header('Location: home.php');
exit;
}
else
{
die('Attiva il tuo account!!!');
}
}
// se non esiste da l'errore
else
die('Nome Utente o Password errati');
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Login</title>
</head>
<body>
<form action="" method="post">
<input name="user" type="text" id="user" value="Nome Utente" onfocus="if(this.value=='Nome Utente') this.value='';" />
<input name="pass" type="password" id="pass" value="Password" onfocus="if(this.value=='Password') this.value='';" />
<input name="login" type="submit" value="Login" />
</form>
</body>
</html>