Registrazione e sessioni

  • Creatore Discussione Creatore Discussione Z0MB13
  • Data di inizio Data di inizio

Z0MB13

Utente Attivo
30 Mar 2013
34
0
0
Salve!
Vorrei mettere l'attivazione dell'email, ovvero che dopo la registrazione l'utente dovrà controllare la posta di hotmail.it e quindi potrà accedere nuovamente al sito. Inoltre vorrei che l'utente non può visitare le pagine del sito finché non accederà al sito. Come posso fare?
Pagina register:
PHP:
<?php 

	include 'header.php';
	
?>

	<div id="wrapper">
	
	<?php 

		if(!isset($_GET['passkey'])){
		
			if(!isset($_POST['invia'])){ ?>
			
				<form method="post" action="#" id="formregistrazione">
					
					<ul>
						<li><label for="username">Username</label>
							<input type="text" name="username" id="username" />
						</li>
						<li>
							<label for="password1">Password</label>
							<input type="password" name="password1" id="password1" />
						</li>
						<li>
							<label for="password2">Ripeti Password</label>
							<input type="password" name="password2" id="password2" />
						</li>
						<li>
							<label for="email">Email</label>
							<input type="text" name="email" id="email" />
						</li>
					</ul>
						<input type="submit" name="invia" id="registrati" value="Registrati" />
				</form>
			
	<?php	} else {
				
				// creazione di un codice di conferma
				$codiceconferma = md5(uniqid(rand()));
				
				// Valori del form
				
				$username = mysql_real_escape_string($_POST['username']);
				$password1 = mysql_real_escape_string($_POST['password1']);
				$password2 = mysql_real_escape_string($_POST['password2']);
				$email = mysql_real_escape_string($_POST['email']);
			
				// controllo campi vuoti e password
				
				if($username == "" || $email == ""){
					echo "Devi riempire tutti i campi";
				}elseif($password1 == "" || $password2 == ""){
					echo "Devi riempire tutti i campi";
				}elseif($password2 != $password1){
					echo "Le password devono coincidere";
				}else{
					
					$recuperauseremail = mysql_query("SELECT id FROM utenti WHERE username='$username' OR email='$email'");	
					$contausermail = mysql_num_rows($recuperauseremail);
					
					if($contausermail > 0){
					
						echo "Nome utente o email già disponibili";
					
					} else {
					
						// Invia dati alla tb utenti_temp
						
						$inviautentitemp = mysql_query("INSERT INTO utenti_temp (codiceconferma, username, password, email) VALUES ('$codiceconferma', '$username', '$password2', '$email')");
						
						if($inviautentitemp){
							
							$to=$email;
							$subject="Conferma la Registrazione";
							$header="Da: Amministratore";
							$message="Ecco il tuo codice di attivazione \r\n";
							$message.="Clicca sul link per confermare la registrazione \r\n";
							$message.="http://127.0.0.1/sito/register.php?passkey=$codiceconferma";
							
							$sentmail=mail($to,$subject,$message,$header);
						
						}
						
						if($sentmail){
						
							echo "Per completare la registrazione controlla la tua casella di posta elettronica e clicca sul link di attivazione.";
							
						}else{
						
							echo "Errore, link di attivazione non inviato.";
						
						}
					
					}
				}
				
			}
		
		} else {
			
			$passkey = $_GET['passkey'];
			
			$sqlrecuperauser = "SELECT * FROM utenti_temp WHERE codiceconferma = '$passkey'";
			$risultatouser = mysql_query($sqlrecuperauser);
			
			if($risultatouser) {
			
				$contauser = mysql_num_rows($risultatouser);
				
				if($contauser == 1){
				
					$rows = mysql_fetch_array($risultatouser);
					$username = $rows['username'];
					$email = $rows['email'];
					$password = $rows ['password'];
					
					$passwordcript = md5($password);
					
					$sqlconfermauser = mysql_query("INSERT INTO utenti (username, password, email) VALUES ('$username', '$passwordcript', '$email')");
					
					if ($sqlconfermauser) {
					
						echo "Il tuo account è stato attivato con successo";
						$sqleliminadati = mysql_query("DELETE FROM utenti_temp WHERE codiceconferma = '$passkey'");
					
					} else {
					
						echo "Errore!";
					
					}
				
				}
			
			}
			
		}

	?>
	
	
	</div>
	
	
</body>
</html>
 
Salve!
Vorrei mettere l'attivazione dell'email, ovvero che dopo la registrazione l'utente dovrà controllare la posta di hotmail.it e quindi potrà accedere nuovamente al sito. Inoltre vorrei che l'utente non può visitare le pagine del sito finché non accederà al sito. Come posso fare?
Pagina register:
PHP:
<?php 

	include 'header.php';
	
?>

	<div id="wrapper">
	
	<?php 

		if(!isset($_GET['passkey'])){
		
			if(!isset($_POST['invia'])){ ?>
			
				<form method="post" action="#" id="formregistrazione">
					
					<ul>
						<li><label for="username">Username</label>
							<input type="text" name="username" id="username" />
						</li>
						<li>
							<label for="password1">Password</label>
							<input type="password" name="password1" id="password1" />
						</li>
						<li>
							<label for="password2">Ripeti Password</label>
							<input type="password" name="password2" id="password2" />
						</li>
						<li>
							<label for="email">Email</label>
							<input type="text" name="email" id="email" />
						</li>
					</ul>
						<input type="submit" name="invia" id="registrati" value="Registrati" />
				</form>
			
	<?php	} else {
				
				// creazione di un codice di conferma
				$codiceconferma = md5(uniqid(rand()));
				
				// Valori del form
				
				$username = mysql_real_escape_string($_POST['username']);
				$password1 = mysql_real_escape_string($_POST['password1']);
				$password2 = mysql_real_escape_string($_POST['password2']);
				$email = mysql_real_escape_string($_POST['email']);
			
				// controllo campi vuoti e password
				
				if($username == "" || $email == ""){
					echo "Devi riempire tutti i campi";
				}elseif($password1 == "" || $password2 == ""){
					echo "Devi riempire tutti i campi";
				}elseif($password2 != $password1){
					echo "Le password devono coincidere";
				}else{
					
					$recuperauseremail = mysql_query("SELECT id FROM utenti WHERE username='$username' OR email='$email'");	
					$contausermail = mysql_num_rows($recuperauseremail);
					
					if($contausermail > 0){
					
						echo "Nome utente o email già disponibili";
					
					} else {
					
						// Invia dati alla tb utenti_temp
						
						$inviautentitemp = mysql_query("INSERT INTO utenti_temp (codiceconferma, username, password, email) VALUES ('$codiceconferma', '$username', '$password2', '$email')");
						
						if($inviautentitemp){
							
							$to=$email;
							$subject="Conferma la Registrazione";
							$header="Da: Amministratore";
							$message="Ecco il tuo codice di attivazione \r\n";
							$message.="Clicca sul link per confermare la registrazione \r\n";
							$message.="http://127.0.0.1/sito/register.php?passkey=$codiceconferma";
							
							$sentmail=mail($to,$subject,$message,$header);
						
						}
						
						if($sentmail){
						
							echo "Per completare la registrazione controlla la tua casella di posta elettronica e clicca sul link di attivazione.";
							
						}else{
						
							echo "Errore, link di attivazione non inviato.";
						
						}
					
					}
				}
				
			}
		
		} else {
			
			$passkey = $_GET['passkey'];
			
			$sqlrecuperauser = "SELECT * FROM utenti_temp WHERE codiceconferma = '$passkey'";
			$risultatouser = mysql_query($sqlrecuperauser);
			
			if($risultatouser) {
			
				$contauser = mysql_num_rows($risultatouser);
				
				if($contauser == 1){
				
					$rows = mysql_fetch_array($risultatouser);
					$username = $rows['username'];
					$email = $rows['email'];
					$password = $rows ['password'];
					
					$passwordcript = md5($password);
					
					$sqlconfermauser = mysql_query("INSERT INTO utenti (username, password, email) VALUES ('$username', '$passwordcript', '$email')");
					
					if ($sqlconfermauser) {
					
						echo "Il tuo account è stato attivato con successo";
						$sqleliminadati = mysql_query("DELETE FROM utenti_temp WHERE codiceconferma = '$passkey'");
					
					} else {
					
						echo "Errore!";
					
					}
				
				}
			
			}
			
		}

	?>
	
	
	</div>
	
	
</body>
</html>

Puoi utilizzare le sessioni ad inizio pagina creando un login che le setta. In ogni pagina quindi controlli se la sessione è presente, consentendo quindi l'accesso
 
Meglio creare una pagina che includi in ogni pagina del sito nel quale controlli le credenziali dell'utente AUTENTICAZIONE e verifichi se ha accesso alla risorsa selezionata AUTORIZZAZIONE (per dividere meglio i livelli di accesso al sito).
 
PHP:
session_start();
if ($_SESSION['id'] != "") {

//CODICE PAGINA

 } else {

//REINDIRIZZA L'UTENTE ALLA PAGINA DEL LOGIN

}

prova se funziona.
Questo è un esempio base
 
PHP:
session_start();
if ($_SESSION['id'] != "") {

//CODICE PAGINA

 } else {

//REINDIRIZZA L'UTENTE ALLA PAGINA DEL LOGIN

}

prova se funziona.
Questo è un esempio base

Scusa, in quale riga dovrei inserirlo? Inoltre questo sarebbe il codice per inviare l'email o per le sessioni? (scusa, sono ancora ai primi livelli con il php!)
 
Quel codice andrebbe messo all'inizio di ogni pagina scritto in quel modo.
Dovresti prima settarla una variabile di sessione (cosa che si fa durante il login).
 
PHP:
ession_start(); 
if ($_SESSION['id'] != "") { 

//CODICE PAGINA 

 } else { 

//REINDIRIZZA L'UTENTE ALLA PAGINA DEL LOGIN 

}

Alla fine dovrei modificare: "//CODICE PAGINA" e //REINDERIZZA L'UTENTE ALLA PAGINA DEL" mettendo il codice del sito su CODICE PAGINA e il codice redirect su REINDERIZZA L'UTENTE...?
 
ciao
io farei in un altro modo
PHP:
<?php
session_start(); 
if (!isset($_SESSION) || $_SESSION['id'] == ""){
   header("location: pagina_che_vuoi.php");
   exit();
}
?>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<title>Documento senza titolo</title>
</head>
<body>
<!--tutto il codice della pagina html e/o php -->
</body>
</html>
 

Discussioni simili