Problema jQuery validation AJAX (PHP 7)

lorenzocanal24

Nuovo Utente
31 Gen 2019
8
0
1
Buongiorno a tutti,
ho un problema con la validazione dei dati inseriti nel form per la registrazione: ho utilizzato Jquery validation per controllare se i campi ineriti non siano vuoti, e ho utilizzato Ajax per controllare che l'username e la email inseriti non siano già registrati.
Quando utilizzavo Altervista come servizio di hosting non ho avuto problemi, funzionava tutto. Adesso però ho spostato il mio sito su Aruba e la parte di Ajax non ha più funzionato.
Ho cambiato ovviamente i dati del database e alcune righe di codice, perché su altervista si utilizza la versione 5 di PHP se non erro, mentre su Aruba ho la versione 7, quindi ho cambiato ad esempio "mysql_connect" in "mysqli_connect".


controllo_dati2.js
Codice:
$(document).ready(function()

                  {

  // my method for validate username

  $.validator.addMethod("username_regex", function(value, element) {

    return this.optional(element) || /^[a-z0-9\.\-_]{3,30}$/i.test(value);

  }, "Please choise a username with only a-z 0-9.");



  //REGISTRAZIONE

  $("#registration_form").validate(

    {

      rules:{

        'nome':{

          required: true,

        },

        'cognome':{

          required: true,

        },

        'username_reg':{

          required: true,

          minlength: 4,

          username_regex: true,

          remote:{

            url: "../validatorAJAX.php",

            type: "post",
            
            contentType : "application / json; charset = utf-8" ,
            
            dataType : "json" ,

            data: {username:  function(){return $('#username_reg').val()}},

          }

        },

        'email_reg':{

          required: true,

          email: true,

          remote:{

            url: "../validatorAJAX.php",

            type: "post",
            
            contentType : "application / json; charset = utf-8" ,
            
            dataType : "json" ,

            data: {email:  function(){return $('#email_reg').val()}},

          }

        },

        'password_reg':{

          required: true,

          minlength: 8

        },

        'conferma_pass':{

          required: true,

          equalTo: "#password_reg"

        },

        'provincia':{

          required: true,

        },

      
        'condizioni':{

          required: true,

        },

      },

      messages:{

        'nome':{

          required: "Il campo nome è obbligatorio!",

        },

        'cognome':{

          required: "Il campo cognome è obbligatorio!",

        },

        'username_reg':{

          required: "Il campo username è obbligatorio!",

          minlength: "Scegli un username di almeno 4 lettere!",

          username_regex: "Hai utilizzato caratteri non validi. Sono consentiti solo lettere numeri!",

          remote: "L'username è già utilizzato da un altro utente!"

        },

        'email_reg':{

          required: "Il campo email è obbligatorio!",

          email: "Inserisci un valido indirizzo email!",

          remote: "L'indirizzo email è già stato registrato!"

        },

        'password_reg':{

          required: "Il campo password è obbligatorio!",

          minlength: "Inserisci una password di almeno 8 caratteri!"

        },

        'conferma_pass':{

          required: "Compilare questo campo!",

          equalTo: "Le password non corrispondono!"

        },

        'provincia':{

          required: "Scegliere un elemento dall'elenco!",

        },

        'condizioni':{

          required: "Devi accettare le nostre condizioni!",

        },

      }

    });

validatorAJAX.php
PHP:
<?php
include("db_con.php"); // connessione al db

$username=$_POST['username_reg'];
$email=$_POST['email_reg'];


// funzione per verificare l'esistenza dell'username

function isset_username($username){

    $username = trim($username);

    $query = "SELECT COUNT(*) AS num FROM users WHERE Username='" .mysqli_real_escape_string($username). "'";

    $result = mysqli_query($query) or die(mysqli_error());

    $row = mysqli_fetch_array($result);

    if($row['num']>=1){

        return TRUE; // true se utente esiste

        }

    else{

        return FALSE;

        }

    }



// funzione per verificare l'esistenza dell'email

function isset_email($email){

    $email = trim($email);

    $query = "SELECT COUNT(*) AS num FROM users WHERE Email='" .mysqli_real_escape_string($email). "'";

    $result = mysqli_query($query) or die(mysqli_error());

    $row = mysqli_fetch_array($result);

    if($row['num']>=1){

        return TRUE; // true se utente esiste

        }

    else{

        return FALSE;

        }

    }



/*

PROCESSIAMO LA RICHIESTA AJAX

*/

if(isset($username)){

    if(!isset_username($username)){

        echo 'true';

        }

    else{

        echo 'false';

        }

    }

else if(isset($email)){

    if(!isset_email($email)){

        echo 'true';

        }

    else{

        echo 'false';

        }

    }
?>

Riuscite a dirmi dove sbaglio?
grazie in anticipo
 

mr.x

Utente Attivo
9 Apr 2016
252
25
28
Dando una letta veloce ti dico che le query sono errate (non escludo ci siano altri errori).
Per utilizzare le istruzioni mysqli non ti basta solo aggiungere una i a mysql, nelle quueryva a nche richiamata la variabile di connessione al DB.
es. la tua
PHP:
$result = mysql_query($query);

diventa
PHP:
$result = mysqli_query($connessione, $query);
dove $connessione è appunto

PHP:
$connessione = mysqli_connect("locationDB", "userDB", "passDB", "nomeDB");

inoltre se controlli i log vedrai che hai un errore dovuto a parametro mancante nella query
 

lorenzocanal24

Nuovo Utente
31 Gen 2019
8
0
1
Comunque ho provato a fare come hai detto ma niente:
PHP:
<?php
//include("db_con.php"); // connessione al db

$servername = "nome";
$username = "login";
$password = "******";
$dbname = "nomdb";

$conn=mysqli_connect($servername, $username, $password, $dbname);

// Check connection
if (mysqli_connect_errno())
  {
  echo "Errore connessione: " . mysqli_connect_error();
  }
 
$username=$_POST['username_reg'];
$email=$_POST['email_reg'];


// funzione per verificare l'esistenza dell'username

function isset_username($username){

    $username = trim($username);

    $query = "SELECT COUNT(*) AS num FROM users WHERE Username='" .mysqli_real_escape_string($username). "'";

    $result = mysqli_query($conn,$query) or die(mysqli_error());

    $row = mysqli_fetch_array($result);

    if($row['num']>=1){

        return TRUE; // true se utente esiste

        }

    else{

        return FALSE;

        }

    }



// funzione per verificare l'esistenza dell'email

function isset_email($email){

    $email = trim($email);

    $query = "SELECT COUNT(*) AS num FROM users WHERE Email='" .mysqli_real_escape_string($email). "'";

    $result = mysqli_query($conn,$query) or die(mysqli_error());

    $row = mysqli_fetch_array($result);

    if($row['num']>=1){

        return TRUE; // true se utente esiste

        }

    else{

        return FALSE;

        }

    }



/*

PROCESSIAMO LA RICHIESTA AJAX

*/

if(isset($username)){

    if(!isset_username($username)){

        echo 'true';

        }

    else{

        echo 'false';

        }

    }

else if(isset($email)){

    if(!isset_email($email)){

        echo 'true';

        }

    else{

        echo 'false';

        }

    }
?>

In più ho controllato i log, ma non risulta nessun tipo di errore
 

macus_adi

Utente Attivo
5 Dic 2017
1.320
88
48
IT/SW
PHP:
$conn=new mysqli($host,$user,$passwd,$database);
$data=$conn->query("SELECT COUNT(*) AS num FROM users WHERE Username='nome'")->fetch_all(MYSQLI_ASSOC);
dd($data);
Prova così!
 

mr.x

Utente Attivo
9 Apr 2016
252
25
28
puoi tranquillamente includere la connessione al DB da file esterno come stavi facendo, ricordando di richiamare la variabile di connessione nelle istruzioni mysqli e nelle funzioni passandola come argomento o cmq rendendola visibile.

la tua funzione corretta

PHP:
function isset_username($username){
global $conn;
    $username = trim($username);
   
    $query = "SELECT COUNT(*) AS num FROM users WHERE Username='" .mysqli_real_escape_string($conn, $username). "'";

    $result = mysqli_query($conn,$query) or die(mysqli_error());

    $row = mysqli_fetch_array($result);

    if($row['num']>=1){

      return TRUE; // true se utente esiste

        }

    else{

      return FALSE;

        }

    }

volendo accorpare le due funzioni che hai

PHP:
function isset_username_mail($username,$email){
    global $conn;

    $username = mysqli_real_escape_string($conn, trim($username));
    $email = mysqli_real_escape_string($conn, trim($email));

    $query = "SELECT Username FROM users WHERE Username='$username' OR Email='$email'";

    $result = mysqli_query($conn,$query) or die(mysqli_error());

if(mysqli_num_rows($result)!=0){
    return TRUE; // true se utente esiste
      }
    else{
    return FALSE;
      }
    }
 

lorenzocanal24

Nuovo Utente
31 Gen 2019
8
0
1
Scusate il ritardo ma ho avuto problemi col PC..
Comunque ho provato tutto quello che mi avete consigliato, ma niente..
 
Discussioni simili
Autore Titolo Forum Risposte Data
T problema con select dinamica con jquery Javascript 0
X Problema con jquery e ajax jQuery 2
F [Javascript] Problema funzione jquery con elementi css esterni Javascript 1
P immagine responsive problema con script jquery jQuery 0
B Problema di visualizzazione di uno Slider in jquery jQuery 4
L Problema phpmailer,jquery e smtp PHP 1
I problema con swipetouch in jquery Sviluppo app per iOS 0
V Problema con tabella jQuery jQuery 9
M Problema load jquery jQuery 1
D Problema con jQuery.timeago() jQuery 2
R Problema con slider jQuery HTML e CSS 1
F Problema Jquery.load() e tweenLite.to() con Chorme Javascript 0
L problema jquery easyui window jQuery 4
S Gallery con Tag foto: problema doppia chiamata ajax con JQuery jQuery 2
J problema jquery add/removeclass jQuery 1
S Problema Jquery UI Dialog jQuery 0
Emix Problema nel concatenare jquery ed ajax nella stessa pagina Javascript 15
E [Menu JQuery]: problema click quando il sottomenu si apre sopra un iframe... jQuery 0
Antonio De Grezia Problema jquery con chrome!! :( Javascript 3
S Autocompletamente con jQuery, PHP e MySQL - Problema con le query PHP 7
P Problema caricamento/sostituzione immagini galleria php-jquery jQuery 2
S Problema con toggle jquery jQuery 1
P problema validazione form con ajax e jquery Ajax 0
A galleria jquery: problema nel caricamento di una immagine da un'anteprima HTML e CSS 10
T Problema con Jquery ajax jQuery 4
E Problema con jquery-1.7.2.min jQuery 3
D Problema nella validazione di un form con JQUERY ed AjAX jQuery 4
M Problema .load JQuery jQuery 1
F Problema select dinamiche con php e jquery jQuery 1
L problema richiesta asincrona con jquery jQuery 1
A problema con jquery.nivo.slider.js Javascript 0
novello88 Problema con jQuery: $ is not defined jQuery 1
M problema "Ordine del carico jquery librerie deve essere cambiato" jQuery 0
P problema jQuery/ajax Ajax 4
F Problema variabile in uno script jquery jQuery 2
G problema con plugin validazione form jquery jQuery 0
emanuelevt piccolo problema jquery jQuery 4
G problema caricamento effetti jquery jQuery 0
S problema con div a scomparsa jquery jQuery 0
M problema con select jquery e php PHP 0
R Problema posizionamento menu orizzontale in jquery HTML e CSS 11
B problema slider jquery in iframe jQuery 3
B problema slider jquery jQuery 0
E Problema pulizia codice jquery jQuery 0
R Problema query con ricerca id numerico PHP 2
F Problema con risposta PHP 0
S problema con recupero dati tabella mysql PHP 2
Z Problema con il mio tp-l i nk Reti LAN e Wireless 0
I PROBLEMA: Sostituzione sito XAMPP E-Commerce 0
T problema data 30/11/-1 PHP 0

Discussioni simili