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
Shyson Puntare ad una sotto directory WordPress 3
Stex1967 Salvare una immagine che si trova su porta TCP 8080 di altro sito PHP 6
S Selezionare ultimo record di una sotto query MySQL 26
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
Cosina Cancellare una specifica email da un elenco in un file txt PHP 3
A Dare l'accesso ad una pagina solo ad un utente specifico PHP 0
G Inserire una scritta Java 1
Samuele Ronzani Sposta dati in una tabella eliminandolo MySQL 6
Cosina Mostrare immagini da una cartella, ma solo un numero definito PHP 12
Alex_70 Cerca testo all'interno di una stringa PHP 5
F Andare a capo all'interno di una tabella WordPress 4
elpirata Update dinamico informazioni scritte in una pagina php jQuery 11
W Creare link di una dato Classic ASP 0
G Associare un button ad una strnga PHP 9
elpirata Query per leggere dati da una tabella mysql e mostrarli a video in base a parametri passati tramite GET PHP 5
P Modifica con PHP di un node in una sitemap xml PHP 0
MarcoGrazia Eliminare in automatico i caratteri spuri all'inizio e alla fine di una stringa Snippet PHP 0
P Cancellazione specifici files in una folder php PHP 1
MarcoGrazia Convertire una data da un formato all'altro Snippet PHP 0
MarcoGrazia Verifica di una stringa o di un nome proveniente da form Snippet PHP 0
MarcoGrazia Creare una password Snippet Javascript 0
L Scmporre una foto dotata di varie immagini in piu layer Photoshop 2
M Ordinare una query join PHP 2
Fendo59 Passare parametri con metodo POST a una pagina in un frame PHP 0
M Richiamare una singola funziona da file php PHP 2
S Cancellare una riga MYSQL PHP 1
M Inserire variabile nella value di una hidden PHP 3
S Inserire foto in ogni cella di una tabella Javascript 0
W Creazione di una griglia HTML e CSS 1
L Creare una pagina pre-home WordPress 1
W Excel come filtrare una tabella Windows e Software 2
G Rendere dati di una tabella mysql link PHP 22

Discussioni simili