Ti basta spedire le variabili che vuoi con l'ajax come già hai visto prima, qui puoi trovare la documentazione che ti serve http://api.jquery.com/jQuery.ajax/ e anche qui https://www.mrw.it/jquery/guide/lavorare-ajax_1049.html
<form action='registrazione.php' method='POST'>
E' l'inizio del form, dovrebbe servire poi per il submit quando invii i dati, se non ti serve togli il formCiao Nefyt,
scusami di nuovo ma questa che mi hai messo:
PHP:<form action='registrazione.php' method='POST'>
Cosa ci debbo mettere nella pagina registrazione ???
<?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";
}
}
?>
<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>
<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>
Si ovvio, in registrazione.php dovrai ricontrollare tutto dato che sul client tutto è bypassabileCiao,
Intendi riutilizzare i cotrolli che ho messo nel modulo per php e metterli anche nel modulo nuovo di registrazione ???
<?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'>";
}
?>
<?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>
<?
}
?>
<?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>
<?
}
?>
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');
}
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
echo mysql_num_rows($query)>0 ? "<img src='ominostop.png' style='width:50px; height:50px'>" : "<img src='SpuntaconOmino.jpg' style='width:50px; height:50px'>";
<?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>";
}
}
?>
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