Questo articolo é la continuazione di "web design,scrivere uno script per la registrazione",per chi non l'ha ancora letto consiglio di darci un'occhiata per comprendere meglio ma comunque verrį mostrato il codice completato e sarį disponibile in fondo alla pagina
Attenzione,a causa di un problema di trascrizione nel precedente articolo postato sul forum c'é un errore nel file config.php,bisogna cancellare i "pezzi" relativi all'id_account,in questo articolo gli errori son stati eliminati
index.php
Codice PHP:
<!DOCTYPE html>
<html>
<head>
<!--maca il foglio di stile -->
<!-- includo il file che contiene i moduli da visualizzare -->
<?php include("function.php"); ?>
<!-- includo il file config -->
<?php include("config.php"); ?>
<!-- istanzio la classe -->
<?php $config=new config(); ?>
</head>
<body>
<?php
// in caso non sia stata impostata la variabile che decide cosa visualizzare,verrį mostrato il modulo di registrazione
if(!isset($_GET['section'])) : $_GET['section']="registration"; endif;
// creiamo lo switch,a seconda del valore della variabile mostrerį il login,la registrazione,il pannello utente o il recupero password,utilizzeremo le funzioni di php
switch ($_GET['section']) {
case 'registration':
registration($config);
break;
case 'login':
login($config);
break;
case 'panel':
panel($config);
break;
case 'retrieve':
retrieve($config);
break;
case 'logout':
logout();
break;
}
?>
</body>
<footer>
powered by: <a href="http://howdoit.altervista.org/" title="HOW DO IT">how do it</a>
</footer>
</html>
function.php
Codice PHP:
<!-- questo file conterrį le funzioni per visualizzare i nostri moduli -->
<?php
//funzione per la registrazione
function registration($config){
//contrllo se l'utente é loggato
if(!isset($_SESSION['id'])) :
//azione del pulsante registrazione
if(isset($_POST["registration"])) :
//recupero i valori
$nome=htmlentities($_POST['nome']);
//criptiamo la password
$password=sha1(md5(htmlentities($_POST['psw'])));
$r_psw=sha1(md5(htmlentities($_POST['r_psw'])));
$email=$_POST['email'];
$check=$_POST['check'];
//controlliamo che il codice sia un numero
if(is_numeric($_POST['security'])): $security=$_POST['security']; endif;
$data_odierna=$config->get_data();
//creo la variabili da passare alla query
$nome_tabella="account";
$nome_campi="nome,password,email,data_creazione";
$valori="'$nome','$password','$email','$data_odierna'";
if($password==$r_psw) :
if($security==$check) :
//controllo se esiste giį l'email scelta
if(!$config->DB_select("account"," email='$email' ")) :
if($config->DB_insert($nome_tabella,$nome_campi,$valori)) :
// mi invio una mail per essere avvisato (opzionale ovviamente)
if(mail($config->get_emailSito(),"nuova registrazione","Congratulazioni,si é appena registrato un utente!")) :
if(mail($email,"registrazione account","Congratulazioni,la tua registrazione é andate a buon fine,ecco i tuoi dati: \nuser: ".$nome."\npassword: ".$password."\nsito: ".$config->get_indirizzoSito())) :
echo"Congratulazioni!! \nla registrazione é andata a buon fine,riceverai un'e-mail entro 24 ore con i tuoi dati per accere! \nbuona permanenza su ".$config->get_NomeSito();
endif;
else:
echo"si é verificato un problema,riprova tra qualche minuto :/";
endif;
else :
echo"l'email selezionata é giį stata utilizzata";
endif;
else:
echo"il codice non é corretto!";
endif;
else:
echo"le password non corrispondono!";
echo $password;echo $r_psw."</br>";print_r($_POST);
endif;
endif;
endif;
?>
<!-- creo il codice di sicurezza -->
<?php $codice = rand(4000, 6000); ?>
<!-- attivo il debugger -->
<?php $config->set_debugger(1) ?>
<!-- creo il form -->
<div id="reg" >
<form id="reg-form" method="POST" action="#">
<!-- stampo il nome del sito,ricordate i getter? :) -->
<caption>registrati su <?php echo $config->get_NomeSito(); ?></caption>
<input id="nome" name="name" type="text" placeholder="username" autofocus required>
<input id="psw" name="psw" type="password" placeholder="password" required>
<input id="r_psw" name="r_psw" type="password" placeholder="retype password" required>
<input id="email" name="email" type="email" placeholder="e-mail" required>
<span><?php echo $codice ?></span>
<input id="check" name="check" type="hidden" value="<?php echo $codice; ?>">
<input id="security" name="security" type="number" placeholder="security code" required>
<nobr>
<input id="reset" name="reset" type="reset" value="vuota i campi" >
<input id="registration" name="registration" type="submit" value="invia i dati!" >
</nobr></br>
possiedi giį un account?<a href="?section=login">esegui login</a> oppure <a href="?section=retrieve">recupera la password</a>
</form>
</div>
<?php
else:
echo"risulti ancora loggato per uscire e poter vedere questo modulo clicca su <a href='?section=logout'>logout</a>";
endif;
}
//modulo login
function login($config){
if(!isset($_SESSION['id'])) :
//azione del pulsante login
if(isset($_POST["login"])) :
//recupero i valori
$nome=htmlentities($_POST['nome']);
$password=sha1(md5(htmlentities($_POST['psw'])));
//creo la variabili da passare alla query
$nome_tabella="account";
$option_1="nome='$nome' AND password='$password' ";
$option_2="email='$nome' AND password='$password' ";
//eseguo le query
$query_nome=$config->DB_select($nome_tabella,$option_1);
$query_email=$config->DB_select($nome_tabella,$option_2);
//controllo se é stato trovato l'utente prima cercandolo con l'username e poi con l'e-mail,in caso positivo riempo la variabile $login con l'array di dati
if(empty($query_nome)) :
if(empty($query_nome)) :
$login="";
else :
$login=$query_nome;
endif;
else :
$login=$query_nome;
endif;
//se la variabile $login contiene l'array di dati creo le sessioni ed eseguo il redirect,altrimenti stampo il messaggio di errore
if(count($login) >0) :
// imposto la sessione
$_SESSION['id']=$login[0]['id_account'];
$_SESSION['nome']=$login[0]['nome'];
$_SESSION['email']=$login[0]['email'];
header("Location: index.php?section=panel");
else :
echo"nome utente e/o password errato";
endif;
endif;
?>
<!-- creo il form -->
<div id="log">
<form id="log-form" method="POST" action="#">
<!-- stampo il nome del sito,ricordate i getter? :) -->
<caption>accedi a <?php echo $config->get_NomeSito(); ?></caption>
<input id="nome" name="name" type="text" placeholder="username o e-mail" autofocus required>
<input id="psw" name="psw" type="password" placeholder="password" required>
<nobr>
<input id="reset" name="reset" type="reset" value="vuota i campi" >
<input id="login" name="login" type="submit" value="accedi!" >
</nobr></br>
<a href="?section=registration">registrati</a> o <a href="?section=retrieve">recupera i tuoi dati</a>";
</form>
</div>
<?php
else:
echo"risulti ancora loggato per uscire e poter vedere questo modulo clicca su <a href='?section=logout'>logout</a>";
endif;
}
//modulo pannwllo utente
function panel($config){
if(isset($_SESSION['id'])) :
echo "Benvenuto ".$_SESSION['nome'].", questo é il pannello utente </br>";
echo"per uscire clicca <a href='?section=logout'>logout</a>";
else :
echo"non possiedi i permessi necessari per visualizzare il contenuto,<a href='?section=registration'>registrati</a> o <a href='?section=login'>accedi</a>";
endif;
}
//mdulo recupero dati
function retrieve($config){
//controllo se l'utente ha eseguito il login
if(!isset($_SESSION['id'])) :
if(isset($_POST["retrieve"])) :
//recupero i valori
$email=htmlentities($_POST['email']);
//password di default
$nuova_psw="howdoit";
//creo la variabili da passare alla query
$table="account";
$option="password='".sha1(md5($nuova_psw))."' ";
$where_cause="email='$emai' ";
$account=$config->DB_select("account"," email='$email' ");
if(!empty($account)) :
if($config->DB_update($table,$option,$where_cause)) :
if(mail($email,"recupero account","dati per l'accesso: \nuser: ".$account[0]['nome']."\nnuova password: ".$nuova_psw."\nsito: ".$config->get_indirizzoSito())) :
echo"riceverai un'e-mail entro 24 ore con i tuoi dati per accere";
endif;
else :
echo"si é verificato un problema tecnico,riprofa fra qualche minuto";
endif;
else :
echo"E-mail non trovata";
endif;
else:
echo"risulti ancora loggato per uscire e poter vedere questo modulo clicca su <a href='?section=logout'>logout</a>";
endif;
?>
<!-- creo il form -->
<div id="ret">
<form id="ret-form" method="POST" action="#">
<!-- stampo il nome del sito,ricordate i getter? :) -->
<caption>recupera password</caption>
<input id="nome" name="name" type="text" placeholder="e-mail" autofocus required>
<input id="retrieve" name="retrieve" type="submit" value="recupera!" ></br>
non possiedi un account?<a href="?section=registration">registrati</a>";
</form>
</div>
<?php
endif;
}
//modulo logout con redirect
function logout(){
session_destroy();
header("Location: index.php");
}
/*
**fatemi sapere cosa ne pensate e soprattutto se avete dubbi e quali aricoli volete
**le mie guide sono totalmente free,l'unica cosa che chiedo é il vostro sostegno,commentate liberamente :)
*/
?>
A questo punto non ci resta che aprire il nostro file config.php e aggiungere in cima:
Codice PHP:
session_start();
Ora possiamo utilizzare liberamente le sessioni :D
A causa di problemi di spazio questo post é stato alleggerito,per visualizzare l'articolo completo e scaricare i file vi rimando al sito:
HOW DO IT