problema verifica dati

Ciao Nefyt,


scusami di nuovo ma questa che mi hai messo:

PHP:
<form action='registrazione.php' method='POST'>

Cosa ci debbo mettere nella pagina registrazione ???
E' l'inizio del form, dovrebbe servire poi per il submit quando invii i dati, se non ti serve togli il form
 
Ciao

Ciao Nefyt,

Perdonami se ti disturbo di nuovo. Ma ho bisogno del tuo aiuto. Allora innanzi tutto ho modificato leggermente il codice che mi hai inviato e funziona. La modifica che ho fatta è la seguente:

PHP:
<?php
require_once("connetti.php"); 
#controllo che i campi siano compilati
if(!empty($_POST['campo']) && !empty($_POST['valore'])){
#li rendo sicuri per la query
$campo = mysql_real_escape_string($_POST['campo']);
$var = mysql_real_escape_string($_POST['valore']); 
#eseguo la query
 $query = mysql_query("SELECT $campo FROM utenti WHERE $campo LIKE '%$var%'") or die(mysql_error()); 
//echo mysql_num_rows($query)>0 ? 'X' : 'V';
 
#controllo esistenza
$query = mysql_num_rows($query)>0;
if($query > 0)
{
    echo "X"; 
}
else
{
    echo "V"; 
}
}
?>

Mi servivano separte le due sigle in quanto poi ci dovrò mettere le iconcine (ossia le immagini). magari se puoi dare una controllata per favore, ma sembra tutto regolare. Però come si suol dire 4 occhi vedono meglio di due no ???? Poi mi trovo al primo intoppo ed è il seguente. Quando vado a confrontare la password, come lo effettuo il controlo sulla password se è scritta correttamente. Ossia ho la seguente situazione:

PHP:
<script> 
            function inviare(type, value) 
            { 
                $.ajax({ 
                    type: 'POST', 
                    url: 'confrontavalue.php',
                    data: {'campo':type,'valore':value}, 
                    beforeSend: function(){ 
                        $('#controlla'+type).html('Sto considerando...'); 
                    } 
                }).done(function(trasmissione){  
                    $('#controlla'+type).html(trasmissione); 
                });  
            } 

        </script> 
<form action='registrazione.php' method='POST'> 
  Nome:  <input type='text' name='nome'/><br/> <br/> 
    <!-- qui inserisco gli elementi laddove devo far la conferma asincronica , stai attento ad assicurarti che nella stringa: 
    "password", così come "email" o qualsiasi cosa a te serva sia  proprio come c'è nel tuo db, esempio: se tu hai una tabella 
        utenti dove ci sono campi chiamati: 
    nome, password e email, assicurati che la stringa che sta nella funzione inviare("") sia letteralmente o password o nome o email), quindi 
    inviare("nome",this.value) o "inviare("password",this.value) o inviare("email",this.value) 
    --> 

Password: <input type='password' name='password' onkeyup='inviare("password",this.value)'/> <div id='controllapassword'></div> <br/>
Re-Password: <input type='password' name='pass2' onkeyup='inviare("pass2",this.value)'/> <div id='controllapassword'></div> <br/>
EMail:    <input type='text' name='email' onkeyup='inviare("email",this.value)'/> <div id='controllaemail'></div> <br/> <br/> 
Re - EMail:    <input type='text' name='reemail' onkeyup='inviare("reemail",this.value)'/> <div id='controllaemail'></div> <br/> <br/> 
</form>

Come puoi vedere ci sono i due campi password da controllare (e verificare se coincidono) e i due campi email (il primo mi deve indicare se è presente nel db e quello già lo fa di persè, mentre c'è da verificare se non è presente nel db che le due email coincidano. Come fare ?? Credo che mi basti capaire per la passwored che poi la modifico per l'email. Ho provato a leggere i link che mi hai inviato macon l'inglese non vado d'accordo mentre con l'altro non ho fatto ancora in tempo. Spero in un tuo aiuto grazie
 
Ho tolto il messaggio di prima dato che non avevo visto che era anche per la mail, un minuto e sistemo il codice, comunque per lato server intendo in php

Ecco il codice
Codice:
<script>  
            function inviare(type, value)  
            {  
                $.ajax({  
                    type: 'POST',  
                    url: 'confrontavalue.php', 
                    data: {'campo':type,'valore':value},  
                    beforeSend: function(){  
                        $('#controlla'+type).html('Sto considerando...');  
                    }  
                }).done(function(trasmissione){   
                    $('#controlla'+type).html(trasmissione);  
                });   
            }  

         function check(v1,v2){
            if($('input[name='+v1+']').val()==$('input[name='+v2+']').val()) $('#controlla'+v1).html('Le '+v1+' coincidono');
            else $('#controlla'+v1).html('Le '+v1+' non coincidono');
         }
        </script>  
<form action='registrazione.php' method='POST'>  
  Nome:  <input type='text' name='nome'/><br/> <br/>  
    <!-- qui inserisco gli elementi laddove devo far la conferma asincronica , stai attento ad assicurarti che nella stringa:  
    "password", così come "email" o qualsiasi cosa a te serva sia  proprio come c'è nel tuo db, esempio: se tu hai una tabella  
        utenti dove ci sono campi chiamati:  
    nome, password e email, assicurati che la stringa che sta nella funzione inviare("") sia letteralmente o password o nome o email), quindi  
    inviare("nome",this.value) o "inviare("password",this.value) o inviare("email",this.value)  
    -->  

Password: <input type='password' name='password' onkeyup='check("password","pass2")'/> <div id='controllapassword'></div> <br/> 
Re-Password: <input type='password' name='pass2' onkeyup='check("password","pass2")'/> <div id='controllapassword'></div> <br/> 
EMail:    <input type='text' name='email' onkeyup='inviare("email",this.value);check("email","reemail");'/> <div id='controllaemail'></div> <br/> <br/>  
Re - EMail:    <input type='text' name='reemail' onkeyup='inviare("reemail",this.value);check("email","reemail");'/> <div id='controllaemail'></div> <br/> <br/>  
</form>
 
Ultima modifica:
Ciao

ah capito,

Dunque io ho provato il tuo script ma mi sa che cìè qualcosa che non va oppure da modificare su file confronta. Ti posto il file confronta:

confrontavalue.php

PHP:
<?php
require_once("connetti.php"); 



#controllo che i campi siano compilati
if(!empty($_POST['campo']) && !empty($_POST['valore'])){
  
#li rendo sicuri per la query
$campo = mysql_real_escape_string($_POST['campo']);
$var = mysql_real_escape_string($_POST['valore']); 
}else{
    echo "Il campo non può rimanere vuoto";
exit();
}
#eseguo la query
 $query = mysql_query("SELECT $campo FROM utenti WHERE $campo LIKE '%$var%'") or die(mysql_error()); 
//echo mysql_num_rows($query)>0 ? 'X' : 'V';
 
#controllo esistenza
$query = mysql_num_rows($query)>0;
if($query > 0)
{
//echo "X"; 
    
    echo "<img src='ominostop.png' style='width:50px; height:50px'>";
}
else
{
  //  echo "V"; 
echo "<img src='SpuntaconOmino.jpg' style='width:50px; height:50px'>";
}
?>

provadellarichiesta.php (questo è il tuo codice che mi hai postato ti ringrazio innanzi tutto della collaborazione).

PHP:
<?php
require_once("connetti.php"); 

if (!isset($_POST['reg'])) {
    

?>
<<script>  
            function inviare(type, value)  
            {  
                $.ajax({  
                    type: 'POST',  
                    url: 'confrontavalue.php', 
                    data: {'campo':type,'valore':value},  
                    beforeSend: function(){  
                        $('#controlla'+type).html('Sto considerando...');  
                    }  
                }).done(function(trasmissione){   
                    $('#controlla'+type).html(trasmissione);  
                });   
            }  

         function checkpassword(){
            if($('input[name=password]').val()==$('input[name=pass2]').val()) $('#controllapassword').html('Le password coincidono');
            else $('#controllapassword').html('Le password non coincidono');
         }
        </script>  
<form action='registrazione.php' method='POST'>  
  Nome:  <input type='text' name='nome'/><br/> <br/>  
    <!-- qui inserisco gli elementi laddove devo far la conferma asincronica , stai attento ad assicurarti che nella stringa:  
    "password", così come "email" o qualsiasi cosa a te serva sia  proprio come c'è nel tuo db, esempio: se tu hai una tabella  
        utenti dove ci sono campi chiamati:  
    nome, password e email, assicurati che la stringa che sta nella funzione inviare("") sia letteralmente o password o nome o email), quindi  
    inviare("nome",this.value) o "inviare("password",this.value) o inviare("email",this.value)  
    -->  

Password: <input type='password' name='password' onkeyup='checkpassword()'/> <div id='controllapassword'></div> <br/> 
Re-Password: <input type='password' name='pass2' onkeyup='checkpassword()'/> <div id='controllapassword'></div> <br/> 
EMail:    <input type='text' name='email' onkeyup='inviare("email",this.value)'/> <div id='controllaemail'></div> <br/> <br/>  
Re - EMail:    <input type='text' name='reemail' onkeyup='inviare("reemail",this.value)'/> <div id='controllaemail'></div> <br/> <br/>  
<center>
                    <input type="submit" name="reg" value="Invio iscrizione" />
                    
</center> </form>
<?
}
?>
 
Quello è il codice di prima sopra ti ho postato quello per la password e la mail, una volta provato quello di sopra scrivimi chiaramente che errori ti vengono a me funziona correttamente
 
Ciao

Scusami mi debbo ricoreggere con il codice. E' questo quello completo dove c'è anche lo username da controllare nel db:

PHP:
<?php
require_once("connetti.php"); 

if (!isset($_POST['reg'])) {
    

?>
<script>  
            function inviare(type, value)  
            {  
                $.ajax({  
                    type: 'POST',  
                    url: 'confrontavalue.php', 
                    data: {'campo':type,'valore':value},  
                    beforeSend: function(){  
                        $('#controlla'+type).html('Sto considerando...');  
                    }  
                }).done(function(trasmissione){   
                    $('#controlla'+type).html(trasmissione);  
                });   
            }  

         function check(v1,v2){
            if($('input[name='+v1+']').val()==$('input[name='+v2+']').val()) $('#controlla'+v1).html('Le '+v1+' coincidono');
            else $('#controlla'+v1).html('Le '+v1+' non coincidono');
         }
        </script>  
<form action='registrazione.php' method='POST'>  
Nome:  <input type='text' name='nome'/><br/> <br/>  
Cognome:  <input type='text' name='nome'/><br/> <br/>  
Username: <input type='password' name='password' onkeyup='check("username")'/> <div id='controllausername'></div> <br/>   

Password: <input type='password' name='password' onkeyup='check("password","pass2")'/> <div id='controllapassword'></div> <br/> 
Re-Password: <input type='password' name='pass2' onkeyup='check("password","pass2")'/> <div id='controllapassword'></div> <br/> 

EMail:    <input type='text' name='email' onkeyup='inviare("email",this.value);check("email","reemail");'/> <div id='controllaemail'></div> <br/> <br/>  
Re - EMail:    <input type='text' name='reemail' onkeyup='inviare("reemail",this.value);check("email","reemail");'/> <div id='controllaemail'></div> <br/> <br/>  
</form>
<
<center>
                    <input type="submit" name="reg" value="Invio iscrizione" />
                    
</center> </form>
<?
}
?>

Poi questa funzione non riesco a capire a cosa si rierisce:

PHP:
function check(v1,v2){
            if($('input[name='+v1+']').val()==$('input[name='+v2+']').val()) $('#controlla'+v1).html('Le '+v1+' coincidono');
            else $('#controlla'+v1).html('Le '+v1+' non coincidono');
         }

Me la puoi spiegare in dettaglio per favore ?? Grazie.
 
La soluzione più veloce era con un operatore ternario
PHP:
echo mysql_num_rows($query)>0 ? "<img src='ominostop.png' style='width:50px; height:50px'>" : "<img src='SpuntaconOmino.jpg' style='width:50px; height:50px'>";

Cosi a me funziona correttamente anche con un if
 
E' un modo di eseguire una condizione senza usufruire di un costrutto if/else, è per abbreviare in pratica



Comunque perché non prendi un buon manuale? Ti potrebbe aiutare
 
Ciao

Allora ti mostro l'immagine di cosa compare a me a video. Lascia perdere il segno maggiore in basso, dimenticanza da parte mia. Questi sono i codici in mio possesso. Magari dai una controllata se ho toppato qualcosa per favore:

confrontavalue.php

PHP:
<?php
require_once("connetti.php"); 



#controllo che i campi siano compilati
if(!empty($_POST['campo']) && !empty($_POST['valore'])){
  
#li rendo sicuri per la query
$campo = mysql_real_escape_string($_POST['campo']);
$var = mysql_real_escape_string($_POST['valore']); 
}else{
    echo "Il campo non può rimanere vuoto";
exit();
}
#eseguo la query
 $query = mysql_query("SELECT $campo FROM utenti WHERE $campo LIKE '%$var%'") or die(mysql_error()); 
//echo mysql_num_rows($query)>0 ? 'X' : 'V';
 
#controllo esistenza
$query = mysql_num_rows($query)>0;
echo mysql_num_rows($query)>0 ? "<img src='ominostop.png' style='width:50px; height:50px'>" : 
    "<img src='SpuntaconOmino.jpg' style='width:50px; height:50px'>";  //riga rimodificata come me l'avevi messa te
?>

provadellarichiesta.php

[PHP]

<?php
require_once("connetti.php"); 

if (!isset($_POST['reg'])) {
    

?>
<script>  
            function inviare(type, value)  
            {  
                $.ajax({  
                    type: 'POST',  
                    url: 'confrontavalue.php', 
                    data: {'campo':type,'valore':value},  
                    beforeSend: function(){  
                        $('#controlla'+type).html('Sto considerando...');  
                    }  
                }).done(function(trasmissione){   
                    $('#controlla'+type).html(trasmissione);  
                });   
            }  

         function check(v1,v2){
            if($('input[name='+v1+']').val()==$('input[name='+v2+']').val()) $('#controlla'+v1).html('Le '+v1+' coincidono');
            else $('#controlla'+v1).html('Le '+v1+' non coincidono');
         }
        </script>  
<form action='registrazione.php' method='POST'>  
Nome:  <input type='text' name='nome' maxlength="30" size ="32"/><br/> <br/>  
Cognome:  <input type='text' name='nome' maxlength="30" size ="32"/><br/> <br/>  
Username: <input type='text' name='password' maxlength="30" size ="32" onkeyup='check("username")'/> <div id='controllausername'></div> <br/>   

Password: <input type='password' name='password' maxlength="30" size ="32" onkeyup='check("password","pass2")'/> <div id='controllapassword'></div> <br/> 
Re-Password: <input type='password' name='pass2' maxlength="30" size ="32" onkeyup='check("password","pass2")'/> <div id='controllapassword'></div> <br/> 

EMail:    <input type='text' name='email' maxlength="30" size ="32" onkeyup='inviare("email",this.value);check("email","reemail");'/> <div id='controllaemail'></div> <br/> <br/>  
Re - EMail:    <input type='text' name='reemail' maxlength="30" size ="32" onkeyup='inviare("reemail",this.value);check("email","reemail");'/> <div id='controllaemail'></div> <br/> <br/>  
</form>
<center>
                    <input type="submit" name="reg" value="Invio iscrizione" />
                    
</center> </form>
<?

//Lato server   (se non ho capito male quello che intendevi dire te prima. Qua ci sono tutti anche i controlli in php, con l'invio dell'email. Che a file iscrizione.php che avevo fatto in origine inviava l'email per attivare l'account. Qua ovviamente non so se funziona ancora. Ma spero di si).

} else {
 $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']));

//crittografa la passowrod

$pass = mysql_real_escape_string(md5(trim($_POST['password'])));
 
// verifico la presenza dei campi obbligator
    
$ok_ko ="";

 //controllo campi compilati

if($nome ==""){$ok_ko .=  "Attenzione: il campo nome deve essere compilato. <br> <br>";}
if($cognome ==""){$ok_ko .=  "Attenzione: il campo cognome deve essere compilato. <br> <br>";}
if($username ==""){$ok_ko .=  "Attenzione: il campo username deve essere compilato. <br> <br>";}
if($email ==""){$ok_ko .=  "Attenzione: il campo email deve essere compilato. <br> <br>";}
if($password ==""){$ok_ko .=  "Attenzione: il campo password deve essere compilato. <br><br>";}
 
 
 if($password != $passw){$ok_ko .=  "Attenzione: le due password non coincidono. <br> <br>";}
 
 if($email != $ripemail){$ok_ko .=  "Attenzione: le due email non coincidono. <br> <br>";}
// Controllo se lo username è presente nel db

$checkusername=mysql_query("SELECT username FROM utenti WHERE username='$username'");
$vuota=mysql_num_rows($checkusername);
if($vuota > 0){
	echo "<br> <br> <h1> Attenzione: lo username: ".$username." è già presente nell'archivio. Si prega di cambiare username. Grazie !!! </h1>";
echo "<meta http-equiv='Refresh' content=4; URL=".htmlspecialchars($_SERVER['PHP_SELF'])."'>";
exit();

}
  
//controllo scrittura corretta dell'email
 
 if(!filter_var($email, FILTER_VALIDATE_EMAIL)||!filter_var($ripemail,FILTER_VALIDATE_EMAIL)){
     
             $ok_ko .= "indirizzo email non valido<br>";
    } //chiude il controllo scrittura corretta dell'email 
  

// Controllo se esiste l'email nel db

$checkemail=mysql_query("SELECT email FROM utenti WHERE email='$email'");
$vuota=mysql_num_rows($checkemail);
if($vuota > 0){
	echo "<br> <br> <h1> Attenzione: l'email: ".$email." è già presente nell'archivio. Si prega di cambiare email. Grazie !!! </h1>";
echo "<meta http-equiv='Refresh' content=4; URL=".htmlspecialchars($_SERVER['PHP_SELF'])."'>";
exit();

}


if($ok_ko !=""){
		echo "<h1>$ok_ko</h1>";
		echo "<meta http-equiv='Refresh' content='3; URL=".htmlspecialchars($_SERVER['PHP_SELF'])."'>";
exit();
}else{
 
// $query="INSERT INTO utenti(nome, cognome, username, email, password)  VALUES('$nome','$cognome','$username','$email','$pass')";

$q_i=mysql_query($query);
//var_dump($q_i);

$query=mysql_query($q_i);
// 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=' . $_POST['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!";
}



echo "<h1> <br>Utente registrato correttamente. E' stata inviata un'email di conferma per attivare l'account. Controllare l'email, prima di accedere.</h1>";
          
}
}
?>

[/PHP]
 
E' un modo di eseguire una condizione senza usufruire di un costrutto if/else, è per abbreviare in pratica



Comunque perché non prendi un buon manuale? Ti potrebbe aiutare

L'avevo :p l'ho prestato e so che lo sta utilizzando ancora, e poi non spiegano mai come spiegate voi :P Voi avete una mente superiore alla mia dico davvero. Non è che non mi voglio applicare ma sotto certi versi sono un po' diciamo de coccio o meglio cocciuto e da solo molto spesso non riesco a risolve i problemi. magari per le grandi cose si sono le piccole cose che mi bloccano.
 
Per caso ti sei scordato di includere jquery all'inizio della pagina di registrazione?
 

Discussioni simili