Visualizzazione dei risultati da 1 a 8 su 8
  1. #1
    Utente di HTML.it
    Registrato dal
    Feb 2009
    Messaggi
    617

    jQuery ajax e caratteri speciali !

    Ciao raga, ho un problema che sembra banale ma che mi da rogne da almeno un paio d'ore.

    In pratica ho notato che in un form che invia dati al server via jquery e ajax, se inserisco parole con l'apostrofo o comunque con apice singolo, il form non viene inviato. In pratica non succede un piffero, lo script si ferma all'invio delle variabili.

    Perchè? e come risolvo?

    Considerate che io serializzo i campi tutti assieme,essendo parecchi input, forse è quello il problema?

    Andrebbe bene una cosa del genere se il campo che si stà controllando magari è quello username, perchè così evito le query injection ( ma vorrei almeno mostrare un alert che dice di non usre caratteri speciali).

    Potreste aiutarmi? grazie !

  2. #2
    Utente di HTML.it
    Registrato dal
    Jan 2010
    residenza
    Pianeta Terra
    Messaggi
    1,614
    Chrome inspector/ firebug che dicono?

    La parte php dello script com'è messa?
    Per una bella risata vai QUI

  3. #3
    Utente di HTML.it
    Registrato dal
    Feb 2009
    Messaggi
    617
    Questa è la parte javascript :

    codice:
    var campi = $(this).serialize();
    				
    				$.ajax({
    					
    					type: "GET",					
    		            url: "/xxxx/elab-add-user.php",
    	                data:"sub_user&"+campi,
    		            success: function(response){
    						
    						alert(response);					
    								
    						
    						}
    																
    				})
    Ho ovviamente tolto molto codice. In pratica così lo script arriva ad inviare i dati ma chrome ispector riporta un errore 404, se però tolgo l'apice singolo dentro il campo input tutto funziona.

    Ecco il php che al momento è molto semplice

    codice:
    if(isset($_GET['sub_user'])){	
    
    echo $_GET['username'];
    
    }
    Mi ripeto, funziona tutto se non metto apici singoli nei campi input, se uso un'apice singolo non ricarica neppure la pagina.

    Grazie dell'aiuto !

    ps: dimenticavo, ho provato anche a non serializzare i campi ma nulla da fare !

  4. #4
    Io ti darei un suggerimento generale.

    Quando mi capita di fare la stessa cosa che stai facendo tu, prima di inviare i dati li codifico in base64. Se cerchi online dovresti trovare facilmente uno script base64.js.

    In questo modo quando arrivano al server lato php è un attimo ritrasformarli nell'originale grazie alle apposte funzioni php.

    Ciao

  5. #5
    Credo di conoscerla io la soluzione a questo problema .
    Devi trasformare gli apostrofi passati nel campo in " &#39 ", e poi inviarli al php.
    Poi quando hai finito tutti i controlli a fine pagina se non vuoi salvare i dati come " &#39 " , ma come semplici apostrofi fai così:
    Codice PHP:
    $campo_con_apostrofo str_replace("&#39""'"$campo_con_apostrofo); 
    Invece per bloccare l'invio quando vedi un'apostrofo in javascript fai così:
    codice:
    	var prendi_valore_campo = document.nome_form.nome_campo.value;/*questo è solo per far vedere più avanti la variabile da dove veniva presa*/
    	var apostrofo = /^[']+$/;/*così accertiamo grazie a questa variabile che non ci sia un apostrofo nel campo più avanti*/
    	if (apostrofo.test(nome_campo) == false){
              alert('apostrofo non consentita nel campo');
              return false;/*questo per bloccare lo script*/
    		}
    Naturalmente ho fatto in modo che javascript rifiuti i valori con l'apostrofo, mentre php li trasformi alla fine della pagina.
    Quello che manca è una trasformazione javascript di tutti i valori con l'apostrofo in #&39, in caso tu li voglia passare(visto che dici ti danno problemi, trasformati in quel modo non dovrebbero darteli più), ma non ricordo bene come si faccia in javascript dei caratteri, prova a cercarla su google, oppure aspetta che mi ritorni in mente .
    Fammi sapere se era la soluzione al tuo problema.

  6. #6
    Moderatore di Annunci siti web, Offro lavoro/collaborazione, Cerco lavoro L'avatar di cavicchiandrea
    Registrato dal
    Aug 2001
    Messaggi
    26,010
    Leggi anche questo articolo
    Cavicchi Andrea
    Problemi con javascript, jquery, ajax clicca qui

  7. #7
    Il problema descritto l'ho avuto anche io, e l'ho risolto con un ADDSLASH. L'apostrofo scritto così com'è preceduto da BACKSLASH(\), la soluzione di trasformarlo nella corrispondente entità HTML non va bene e nemmeno trasformando l'apostrofo con urlencode, che diventerebbe %27, non funge. Sulla codifica base64 nel mio caso non l'ho presa in considerazione in quanto invio dati ad un sito Internet esterno che permette richieste GET ma non so se usa una decodifica di quel tipo. In definitiva per me aggiungere il backslash è stata la soluzione!

  8. #8
    Moderatore di Annunci siti web, Offro lavoro/collaborazione, Cerco lavoro L'avatar di cavicchiandrea
    Registrato dal
    Aug 2001
    Messaggi
    26,010
    @style grazie del contributo, casomai in futuro non richiamare discussioni così vecchie perchè si desume che abbiano comunque risolto
    Cavicchi Andrea
    Problemi con javascript, jquery, ajax clicca qui

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2020 vBulletin Solutions, Inc. All rights reserved.