Una controllatina al codice che non va bene....

paperinik4

Utente Attivo
29 Mag 2011
1.811
0
36
Roma
www.ricetteagogo.it
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

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.....
 

paperinik4

Utente Attivo
29 Mag 2011
1.811
0
36
Roma
www.ricetteagogo.it
Ciao

Ciao Nefyt,

Dunque, itanto manca la query dell'insert che ancora non ho capito dove deve essere infilata. Secondo mi avevano detto che dovevo cambiare la tabella utenti, probabilmente la dovevo adattare a quella fatta di prova originariamente. E terzo mi da il seguente errore:

PHP:
Warning: mysql_num_rows() expects parameter 1 to be resource, boolean given in /volume1/web/utenti/iscrizionebymarco92jq/confronta_value_registrazione.php on line 101  // qua c'è l'icona della "V" conferma

La riga 101 è la seguente:

PHP:
#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 contr[PHP]
ario 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
{

....prosegue codice.....
[/PHP]

Inoltre mi sottolinea di rosso e mi da triangolinoo giallo con i seguenti campi:

PHP:
//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']);


Gli ho verificati con questi campi qua fatto in precedenza in php:

PHP:
                 Nome:     <input type="text" name="nome"  maxlength="30" size ="32"> <br> <br>
                 Cognome:  <input type="text" name="cognome"  maxlength="30" size ="32"> <br> <br>
                 Username: <input type="text" name="username"  maxlength="30" size ="32"> <br> <br>
                 Email:    <input type="text" name="email"  maxlength="40" size ="42"> <br> <br>
                 Rip-Email: <input type="text" name="ripemail"  maxlength="40" size ="42"> <br> <br>
                 Password: <input type="password" name="password"  maxlength="12" size ="14"> <br> <br>
                 Rip-Passw: <input type="password" name="passw"  maxlength="12" size ="14"> <br> <br>


$nome = mysql_real_escape_string(strtolower(trim ($_POST['nome'])));
 $cognome = mysql_real_escape_string(strtolower(trim ($_POST['cognome'])));
 $username = mysql_real_escape_string(strtolower(trim ($_POST['username'])));
 $password = mysql_real_escape_string(trim ($_POST['password']));
 $passw = mysql_real_escape_string(trim ($_POST['passw']));
 $email = mysql_real_escape_string(trim ($_POST['email']));
 $ripemail = mysql_real_escape_string(trim ($_POST['ripemail']));

I campi suddetti, sono quelli che mi servono per l'iscrizione cosa che manca qualcosa nei campi precedenti. Pensi di potermi dare una mano ????
 

Nefyt

Utente Attivo
17 Apr 2012
1.102
0
0
Ciao Nefyt,

Dunque, itanto manca la query dell'insert che ancora non ho capito dove deve essere infilata. Secondo mi avevano detto che dovevo cambiare la tabella utenti, probabilmente la dovevo adattare a quella fatta di prova originariamente. E terzo mi da il seguente errore:

PHP:
Warning: mysql_num_rows() expects parameter 1 to be resource, boolean given in /volume1/web/utenti/iscrizionebymarco92jq/confronta_value_registrazione.php on line 101  // qua c'è l'icona della "V" conferma

La riga 101 è la seguente:

PHP:
#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 contr[PHP]
ario 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
{

....prosegue codice.....
[/PHP]
Controlla gli errori nella query
PHP:
$query_confronta = mysql_query("SELECT $campo FROM utenti WHERE $campo ='$var'") or die(mysql_error());
Inoltre mi sottolinea di rosso e mi da triangolinoo giallo con i seguenti campi:

PHP:
//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']);
Forse perché li setti senza usarli

Gli ho verificati con questi campi qua fatto in precedenza in php:

PHP:
                 Nome:     <input type="text" name="nome"  maxlength="30" size ="32"> <br> <br>
                 Cognome:  <input type="text" name="cognome"  maxlength="30" size ="32"> <br> <br>
                 Username: <input type="text" name="username"  maxlength="30" size ="32"> <br> <br>
                 Email:    <input type="text" name="email"  maxlength="40" size ="42"> <br> <br>
                 Rip-Email: <input type="text" name="ripemail"  maxlength="40" size ="42"> <br> <br>
                 Password: <input type="password" name="password"  maxlength="12" size ="14"> <br> <br>
                 Rip-Passw: <input type="password" name="passw"  maxlength="12" size ="14"> <br> <br>


$nome = mysql_real_escape_string(strtolower(trim ($_POST['nome'])));
 $cognome = mysql_real_escape_string(strtolower(trim ($_POST['cognome'])));
 $username = mysql_real_escape_string(strtolower(trim ($_POST['username'])));
 $password = mysql_real_escape_string(trim ($_POST['password']));
 $passw = mysql_real_escape_string(trim ($_POST['passw']));
 $email = mysql_real_escape_string(trim ($_POST['email']));
 $ripemail = mysql_real_escape_string(trim ($_POST['ripemail']));

I campi suddetti, sono quelli che mi servono per l'iscrizione cosa che manca qualcosa nei campi precedenti. Pensi di potermi dare una mano ????
In che senso cosa manca? Che risultato ti ha dato la verifica?
 

paperinik4

Utente Attivo
29 Mag 2011
1.811
0
36
Roma
www.ricetteagogo.it
Ciao

La verifica la segnala giusta, difatti se sbaglio a scrivedere username o un'email o la password mi segnala che non sono corretti. Però, l'editor non so il perchè con la versione nuona netbeans 7.3 beta. Comunque nella query che mi hai segnalato cosa debbo controllare di preciso ????

PHP:
 $query_confronta = mysql_query("SELECT $campo FROM utenti WHERE $campo ='$var'") or die(mysql_error());

Non vedo niente di strano, apparentemente.
 

Nefyt

Utente Attivo
17 Apr 2012
1.102
0
0
Devi controllare se quando invii la query ti viene fuori un errore, per i campi se non ci sono errori di sintassi è probabilmente dovuto al solo settaggio senza uso
 

paperinik4

Utente Attivo
29 Mag 2011
1.811
0
36
Roma
www.ricetteagogo.it
Ciao

Ciao,

Ho messo un paio di var_dump, ma non mi danno alcun risultato. Eccho dove gli ho piazzati:

PHP:
$query_confronta_username =  mysql_query("SELECT username FROM utenti WHERE username ='$username'");
        var_dump($query_confronta_username);
        echo $query_confronta_username;
	$query_confronta_username = mysql_num_rows($query_confronta_username);
        var_dump($query_confronta_username);
        echo $query_confronta_username;
	if($controllo_esistenza_username >= 1)
	{
		echo "Registra";
 

Nefyt

Utente Attivo
17 Apr 2012
1.102
0
0
Ciao,

Ho messo un paio di var_dump, ma non mi danno alcun risultato. Eccho dove gli ho piazzati:

PHP:
$query_confronta_username =  mysql_query("SELECT username FROM utenti WHERE username ='$username'");
        var_dump($query_confronta_username);
        echo $query_confronta_username;
	$query_confronta_username = mysql_num_rows($query_confronta_username);
        var_dump($query_confronta_username);
        echo $query_confronta_username;
	if($controllo_esistenza_username >= 1)
	{
		echo "Registra";
Nell'if controlli una variabile differente, poi basta semplicemente aggiungere il controllo per gli errori nella query come ti ho mostrato prima, nel caso ci sono degli errori te li riporta, se non ci sono dovrebbe funzionare tutto
 
Discussioni simili
Autore Titolo Forum Risposte Data
P C# Salvare una colonna del DataGridView XML 0
M pulsante per aprire una maschera che contiene controllo schede MS Access 0
M Leggere in un report il valore di una casella combinata di una maschera Database 0
D Miglior modo per estrarre le occorrenze di un elemento in un set di più file xml e quindi scrivere il risultato in una tabella Excel o magari in JSON XML 0
S [VB.NET]: Coordinate immagini dentro una PictureBox Visual Basic 0
I stampare una stringa echo PHP 2
MarcoGrazia Riprendere una sessione interrotta PHP 0
L Rendere una parte trasparente Photoshop 3
K [PHP] Aggiungere caratteri ad una stringa in base alla lunghezza della stessa PHP 2
K Visualizzare del html responsive in una Webview Sviluppo app per Android 0
otto9due Ordinare option di una select Javascript 5
N Come si crea una variabile dinamica da incrementare? Javascript 1
L Eliminazione di una pagina dalla gallery SEO e Posizionamento 0
otto9due Proteggere una cartella e file con password tramite .htaccess e .htpasswd Web Server 0
L Riempimento di una tabella al click di un bottone Javascript 1
R Variabile non risconosciuta dentro una funzione PHP 1
C ACCESS Aprire maschera se valore non presente in una combo MS Access 7
A media degli elementi estratti da una query MySQL 0
spider81man Eliminare primo ed ultimo carattere di una colonna MySQL 0
pacemattia408 disattivazione di una function Javascript 4
G Eliminare l'effetto refresh di una pagina internet PHP 8
otto9due Inserire o aggiornare tabella my sql controllando una coppia di valori PHP 7
M Select Option dentro una Table jQuery 2
Couting95 inserire dati da un file di testo in una tabella in php PHP 1
Y Stampare da php su un foglio A6 attraverso una stampante esterna PHP 1
E Scrivere una data corrente in un pdf PHP 1
Sergio Unia Problema con gli eventi del mouse su una data table: Javascript 2
I Assegnare dati fetch request ad una variabile globale Javascript 0
Shyson Puntare ad una sotto directory WordPress 3
Stex1967 Salvare una immagine che si trova su porta TCP 8080 di altro sito PHP 7
S Selezionare ultimo record di una sotto query MySQL 27
V Query per una somma PHP 2
L Mysql: Nascondere le pagine dopo una ricerca PHP 1
L salvare una immagine elaborata in canvas Javascript 1
L salvare una immagine elaborata in canvas Javascript 1
W visualizzare solo file html e sottocartelle di una cartella PHP 1
W Elenco dei link del file presenti in una cartella PHP 2
R Mettere in sicurezza una comunicazione .NET Framework 0
L Creare una forma geometrica Photoshop 1
G Casella combinata in una query MS Access 4
voldemort Cos'è una SCRL? Che tipo di società è?? Leggi, Normative e Fisco 1
F Funzione Glob - ricerca file contenente una parola PHP 1
felino [EXCEL] Conteggio ore all'interno di una settimana Windows e Software 7
Y cambiare sfondo di una pagina Javascript 1
Y Vorrei selezionare un colore di sfondo per una pagina web Javascript 0
S Apertura in una nuova pagina PHP 6
S impostare un testo e una img nella stessa riga con jsPDF Javascript 0
F Prendere contenuti da una tabella PHP 4
B Stampare una porzione della pagina PHP 0
D assegnare risultato di una jquery ad una text Javascript 2

Discussioni simili