ho scritto queste "2 righe" per chi si avvicina per le prime volte al mondo del web design,in giro ci sono tante guide che trattano la registrazione ma credo che cn la mia si possa ottenere un ottimo codice al quale poi aggiungere i propri pezzi,oltre che dare un'impostazione al proprio codice,spero di aver fatto una cosa utilie
Vi ho commentato il codice per diggerirlo meglio :)
Preciso che il "debugger" é fittizio,é strutturaro solo per farmi controllare che la query sia giusta:
config.php
Codice PHP:
<?php
/*
** created by: admin of howdoit.altervista.org
** web site: http://howdoit.altervista.org/
** twitter: https://twitter.com/how_do_it
** facebook: https://www.facebook.com/pages/How-do-it/457066587766790
** google+: https://plus.google.com/u/0/b/105766764294701908303/105766764294701908303/about
*/
//creiamo la nostra classe
class config{
//dichiariamo tutte le nostre variabili protected e cioé visibili solo all'interno della classe e relative sottoclassi
//variabili riguardanti il database
protected $host;
protected $user;
protected $password;
protected $database;
protected $mysqli;
//variabili generali
protected $data;
protected $dataFormattata;
//variabili legate al sito
protected $nomeSito;
protected $indirizzoSito;
protected $emailSito;
//debugger(non so come mai nessuno utilizzi questa opzione,magari ognuno tiene per se queste cose,ma io la trovo comoda e ve la scrivo :))
protected $debugger;
//creiamo la funzione __construct che si occupa di valorizzare le variabili
function __construct() {
//dati connessione
$this->host = "localhost";
$this->user = "tuo-nome";
$this->password = "tua-password";
$this->database = "nome-database";
//dati generali
$this->data = time();
$this->dataFormattata=date("d/n/o",time());
//dati sito
$this->nomeSito="HowDoIt";
$this->indirizzoSito="http://howdoit.altervista.org/";
$this->emailSito="howdoit@altervista.org";
//debugger
$this->debugger=0;
}
/*
* setter - non so come le chiamino nel php ma in java si chiamano cosí e cosí rimarranno :)
*/
//setter per abilitare il "debugger"
function set_debugger($val){
$this->debugger=$val;
}
/*
* getter - come sopra,non so come le chiamino nel php ma in java si chiamano cosí e cosí rimarranno :)
*/
//recupero il nome del sito
function get_NomeSito(){
return $this->nomeSito;
}
//recupero l'indirizzo del sito
function get_indirizzoSito(){
return $this->indirizzoSito;
}
//recupero la mia e-mail
function get_emailSito(){
return $this->emailSito;
}
//recupero la data in timestamp,puó sempre tornare utile
function get_data(){
return $this->data;
}
//sono pigro e recupero anche la data giá formattata XD
function get_dataFormattata(){
return $this->dataFormattata;
}
/*
* connessione e disconnessione
*/
//creo la funzione per la connessione
function getConnection(){
//colleghiamoci al database
$this->mysqli = new mysqli($this->host,$this->user,$this->password,$this->database);
//verifica dell'avvenuta connessione
if (mysqli_connect_errno()) {
// notifica in caso di errore
echo "Errore durante la connessione al DBMS: ".mysqli_connect_error();
// interruzione delle esecuzioni i caso di errore
exit();
}
}
//creo la funzione per la disconnessione
function closeConnection(){
$this->mysqli->close();
}
/*
* query
*/
//query SELECT
function DB_select($table,$option=""){
$this->getConnection();
//array contenente il valore di ritorno
$arrayRitorno=array();
// esecuzione della query
$result = $this->mysqli->query("SELECT * FROM $table WHERE $option AND id_account='".$_SESSION['id']."' ORDER BY id desc") ;
if($this->debugger==1): echo("SELECT * FROM $table WHERE $option AND id_account='".$_SESSION['id']."' ORDER BY id desc") ; endif;
// conteggio dei record restituiti dalla query
if($result):
if($result->num_rows >0):
// generazione di un array multidimensionale
while ($row = $result->fetch_array(MYSQLI_ASSOC)):
$arrayRitorno[] = $row;
endwhile;
$result->close();
endif;
endif;
//disconnessione
$this->closeConnection();
//ritorno l´array con il result
return $arrayRitorno;
}
//query INSERT
function DB_insert($table,$option_name,$option_value){
$this->getConnection();
// esecuzione della query
$result = $this->mysqli->query("INSERT INTO $table (id_account,$option_name)
VALUES ('".$_SESSION['id']."',$option_value)") ;
if($this->debugger==1): echo("INSERT INTO $table (id_account,$option_name) VALUES ('".$_SESSION['id']."',$option_value)") ; endif;
//disconnessione
$this->closeConnection();
}
//query UPDATE
function DB_update($table,$option,$where_cause){
$this->getConnection();
// esecuzione della query
$result = $this->mysqli->query("UPDATE $table SET $option WHERE $where_cause AND id_account='".$_SESSION['id']."' ") ;
if($this->debugger==1): echo("UPDATE $table SET $option WHERE $where_cause AND id_account='".$_SESSION['id']."' ") ; endif;
//disconnessione
$this->closeConnection();
}
//query DELETE
function DB_delete($table,$option){
$this->getConnection();
//array contenente il valore di ritorno
$arrayRitorno=array();
// esecuzione della query
$this->mysqli->query("DELETE FROM $table WHERE $option AND id_account='".$_SESSION['id']."' ") ;
if($this->debugger==1): echo("DELETE FROM $table WHERE $option AND id_account='".$_SESSION['id']."' ") ; endif;
//disconnessione
$this->closeConnection();
}
/*
**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 :)
*/
}
?>
index.php
Codice PHP:
<!DOCTYPE html>
<html>
<head>
<!-- includo il file config -->
<?php include("config.php"); ?>
<!-- istanzio la classe -->
<?php $config=new config(); ?>
</head>
<body>
<!-- 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="submit" name="submit" type="submit" value="invia i dati!" >
</nobr>
</form>
</div>
<?php
if(isset($_POST["submit"])) :
//recupero i valori
$nome=htmlentities($_POST['nome']);
$password=htmlentities($_POST['psw']);
$r_psw=htmlentities($_POST['r_psw']);
$email=$_POST['email'];
$check=$_POST['check'];
if(strlen($_POST['security'])==4 && 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):
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"il codice non é corretto!";
endif;
else:
echo"le password non corrispondono!";
endif;
endif;
endif;
?>
</body>
<footer>
powered by: <a href="http://howdoit.altervista.org/" title="HOW DO IT">how do it</a>
</footer>
</html>
?>
DATABASE
Codice:
CREATE TABLE IF NOT EXISTS `account` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`nome` varchar(40) NOT NULL,
`password` varchar(50) NOT NULL,
`email` varchar(50) NOT NULL,
`data_creazione` int(40) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=3 ;
ps:la guida era troppo lunga e sono stato costretto a tagliarla,se interessa vi consiglio di leggere la versione integrale sul mio sito
edit: attualmente sono in sviluppo i moduli da aggiungere a questo,se avete qualche richiesta scrivetemi :D