Salve a tutti,
Innanzi tutto, buon Natale passato e felice anno nuovo. volevo un vostro parere e un'eventuale modifica al codice che ora posterò. Questo serve per verificare immediatamente se i dati sono corretti o meno (c'è una "V" che conferma che i dati non esistono nel db e una "X" che esistono). Ecco i codici:
Tabella Utenti
confronta_value_registrazione.php
formpage.html
Se ci sono delle correzioni ben vengano o suggerimenti. Grazie a tutti.....
Innanzi tutto, buon Natale passato e felice anno nuovo. volevo un vostro parere e un'eventuale modifica al codice che ora posterò. Questo serve per verificare immediatamente se i dati sono corretti o meno (c'è una "V" che conferma che i dati non esistono nel db e una "X" che esistono). Ecco i codici:
Tabella Utenti
PHP:
create table utenti (
id INT UNSIGNED NOT NULL AUTO_INCREMENT,
nome VARCHAR(30) NOT NULL,
cognome VARCHAR(30) NOT NULL,
username VARCHAR(30) NOT NULL,
email VARCHAR(40) NOT NULL,
password VARCHAR(255) NOT NULL,
id_immagine INT(255) NOT NULL,
attivo ENUM('1', '0') DEFAULT '0',
PRIMARY KEY (id)
);
confronta_value_registrazione.php
PHP:
<?php
require_once("connetti.php");
//setto una condizione se c'è la variabile post submit(che è quelal di quando schiacci il bottone)
if($_POST['submit'])
{
//prelevo le variabili
$nome = mysql_real_escape_string(strtolower($_POST['nome']));
$cognome = mysql_real_escape_string(strtolower($_POST['cognome']));
$username = mysql_real_escape_string(strtolower($_POST['username']));
$password = mysql_real_escape_string($_POST['password']);
$email = mysql_real_escape_string($_POST['email']);
//controllo una a una "non penso ti convenga fare tutto con una query, non funzionerebbe"
//comunque controllo una a una: l'username se esiste e l'email e se esistono non registra
//nel caso contrario registra
$query_confronta_username = mysql_query("SELECT username FROM utenti WHERE username ='$username'");
$controllo_esistenza_username = mysql_num_rows($query_confronta_username);
if($controllo_esistenza_username >= 1)
{
echo "Registrazione non è andata a buon fine.";
exit();
}
else
{
$query_confronta_email = mysql_query("SELECT email FROM utenti WHERE email ='$email'");
$controllo_esistenza_email = mysql_num_rows($query_confronta_email);
if($controllo_esistenza_email >= 1)
{
echo "Registrazione non è andata a buon fine.";
exit();
}
else
{
//filtro l'email per validarla se va bene registra se no no
if(!filter_var($email, FILTER_VALIDATE_EMAIL))
{
echo "Questa email non è valida!";
}
else
{
echo "Registrazione andata a buon fine.";
// Parte riguardante l'invio email
//require_once ("/class.phpmailler.php");
require_once 'phpmailer/class.phpmailer.php';
//phpmailer
$mail = new PHPMailer();
$mail->IsSMTP(); // telling the class to use SMTP
#Qui c'è il debug dell'smtp, se metti un commento non stampa diavolerie, ma � utile in fase di test per capire la natura di qualche errore
//$mail->SMTPDebug = "2"; // enables SMTP debug information (for testing)
// 1 = errors and messages
// 2 = messages only
$mail->SMTPAuth = "true"; // enable SMTP authentication
$mail->SMTPSecure = "ssl"; // sets the prefix to the servier
$mail->Host = "smtp.gmail.com"; // sets GMAIL as the SMTP server
$mail->Port = "465"; // set the SMTP port for the GMAIL server
$mail->Username = "[email protected]"; // GMAIL username
$mail->Password = "paperino2012"; // GMAIL password
$mail->SetFrom("[email protected]");
$mail->Subject = "Attivazione account.";
//$mail->AltBody = "To view the message, please use an HTML compatible email viewer!"; // optional, comment out and test
//$mail->AltBody = "Iscrizione avvenuta correttamente. "; // optional, comment out and test
$mail->CharSet = "UTF-8"; //Content-Type" content="text/html;
$mail->MsgHTML('Grazie di esserti iscritto. <a href="http://utenti/MegaLaboratorio/attivautente.php?email=' . $email
.'">clicca qui per attivare</a></b>'." "."per attviare l'account. Grazie.");
$mail->AddAddress($_POST['email']);
if(!$mail->Send()) {
echo "Errore nell'inviare l'email: " . $mail->ErrorInfo;
} else {
echo "Messaggio inviatro correttamente!";
}
}
}
}
exit();
}
#prelevo le variabili post e le rendo sicure per la query
$campo = mysql_real_escape_string($_POST['campo']);
$var = mysql_real_escape_string(strtolower($_POST['valore']));
//dico alal query di cercare il campo che identifico come campo per il db dove esso ha come valore qla variabile var
//se tutto va bene e non esiste ti dice che puoi utilizzarla in caso contrario no
$query_confronta = mysql_query("SELECT $campo FROM utenti WHERE $campo ='$var'");
$controllo_esistenza = mysql_num_rows($query_confronta);
if($controllo_esistenza >= 1)
{
//qui stacco il php dall'html per comodità di scrittura senza dover usare l'echo o il prin in modo d'evitare le limitazioni nel settaggio dellgli apici " '
?>
<img src='X-ICONA.png' width='40px' height='40px'>
<?php
}
else
{
//faccio un controllo ovvio sulla validit� dell'email
if($campo == 'email')
{
if(!filter_var($var, FILTER_VALIDATE_EMAIL))
{
echo "Questa email non è valida!";
}else
{
?>
<img src='V-ICONA.jpg' width='40px' height='40px'>
<?php
}
}
else
{
?>
<img src='V-ICONA.jpg' width='40px' height='40px'>
<?php
}
}
?>
formpage.html
HTML:
<!--carico nelle cache la libreria jquery per far funzionare il jquery -->
<script src='http://ajax.googleapis.com/ajax/libs/jquery/1.5/jquery.min.js'></script>
<script>
//creo una funzione per inviare la conferma del permeso di inserimento (solo in output)
function confronta(id,campo,value)
{
//spedisco asincronicamente al server delel variabili (con data) alla pagina (url), non c�
// niente da dire su type, si capisce.
//beforeSend serve a mostrare qualcosa in output prima che il programmino abbia effettivamente spedito le informazioni all url
$.ajax({
type: 'POST',
url: 'confronta_value_registrazione.php',
data: {'campo':campo,'valore':value},
beforeSend: function(){
$('.'+id).html('Sto considerando...');
}
}).done(function(trasmissione){
$('.'+id).html(trasmissione);
});
}
//leggo tutti gli elementi della pagina in modo da interagire con essi: per farlo si scrive $(document).ready(funcion(){});
//ovvero al caricamento del (documento) ovvero del file effetter� qualcosa
$(document).ready(function()
{
//quando premo sul bottone (unico presente nel file)
$('button').click(function(){
/*prelevo il valore degli elementi nelle variabili tramite l'id degli elementi con document.getElementById('elemento').value*/
var nome = document.getElementById('nome').value;
var cognome = document.getElementById('cognome').value;
var username = document.getElementById('username').value;
var password = document.getElementById('password').value;
var repassword = document.getElementById('repassword').value;
var email = document.getElementById('email').value;
var remail = document.getElementById('remail').value;
/* se alcuni elementi sono vuoti d� errore caricando nel form della apgina il seguente messaggio*/
if(nome == '' || cognome == '' || username == '' || password == '' || email == '')
{
$('form').html("C'�/Ci sono un/dei campo/i vuoto/i");
}
else
{
/*se la password e/o l'email sono sbaglaite d� errore */
if(password != repassword || email != remail)
{
$('form').html("Le password o l'email non coincidono.");
}
else
{ /* invia alla pagina il codice */
$.ajax({
type: 'POST',
url: 'confronta_value_registrazione.php',
data: {submit:true,nome:nome,cognome:cognome,username:username,email:email},
beforeSend: function(){
$('form').html('Sto considerando...');
}
}).done(function(trasmissione){
$('form').html(trasmissione);
});
}
}
});
/*qui quando uno dei seguenti elementi subisce dei cambiamenti richiameranno degli eventi */
$('#username, #password, #passw, #email, #ripemail').change(function(){
/*prelevo l'id*/
var id = this.id;
/*decido quale id � selezionato*/
if(id=='username')
{
if(this.value == '')
{
$('.cu').html("Il campo dell'username � vuoto.");
}
else{
$('.cu').html('Username controllato.');
confronta('cu','username',this.value);
}
}
if(id=='password' || id=='passw')
{
if(this.value == '')
{
$('.cp').html('Uno/Tutti dei/i campi della password è/sono vuoto/i.');
}
else{
if(password.value != passw.value)
{
$('.cp').html('Le password non coincidono.');
}
else
{
$('.cp').html('Password controllata.');
confronta('cp','password',this.value);
}
}
}
if(id=='email'||id=='ripemail')
{
if(this.value == '')
{
$('.ce').html('Uno/Tutti dei/i campi della email è/sono vuoto/i.');
}
else{
if(email.value != ripemail.value)
{
$('.ce').html('Le email non coincidono.');
}
else
{
$('.ce').html('Email controllata.');
confronta('ce','email',this.value);
}
}
}
});
});
</script>
<!-- semplice css se si vuole modificare-->
<style>
div#divInputRegistration
{
font-family:Arial;
clear:left;
}
div#titleInput,div#InputBox
{
float:left;
}
div#InputBox input:focus
{
outline:none;
border:1px solid lightblue;
padding:10px;
}
div#confronta
{
float:left;
}
button
{
float:left;
clear:both;
padding:10px;
}
</style>
<form>
<div id='divInputRegistration'>
<div id='titleInput'>
Nome
</div>
<div id='InputBox'>
<input type='text' id='nome' maxlength='30' size='32'/>
</div>
</div>
<div id='divInputRegistration'>
<div id='titleInput'>
Cognome
</div>
<div id='InputBox'>
<input type='text' id='cognome' maxlength='30' size='32'/>
</div>
</div>
<div id='divInputRegistration'>
<div id='titleInput'>
Username
</div>
<div id='InputBox'>
<input type='text' id='username' maxlength='30' size='32'/>
</div>
<div id='confronta' class='cu'></div>
</div>
<div id='divInputRegistration'>
<div id='titleInput'>
Password
</div>
<div id='InputBox'>
<input type='text' id='passwowd' maxlength='30' size='32'/>
</div>
<div id='confronta' class='cp'></div>
</div>
<div id='divInputRegistration'>
<div id='titleInput'>
Re-Password
</div>
<div id='InputBox'>
<input type='text' id='passw' maxlength='30' size='32'/>
</div>
</div>
<div id='divInputRegistration'>
<div id='titleInput'>
Email
</div>
<div id='InputBox'>
<input type='text' id='email' maxlength='30' size='32'/>
</div>
<div id='confronta' class='ce'></div>
</div>
<div id='divInputRegistration'>
<div id='titleInput'>
Re-Email
</div>
<div id='InputBox'>
<input type='text' id='ripemail' maxlength='30' size='32'/>
</div>
</div>
<button id='submit'>Registrati</button>
</form>
Se ci sono delle correzioni ben vengano o suggerimenti. Grazie a tutti.....