Visualizzazione dei risultati da 1 a 4 su 4
  1. #1

    Errore nell'escape di stringhe da JS a PHP

    Ciao a tutti!!! Premetto che non saprei se è meglio postare quì o nella parte dedicata al PHP, ma sicuramente voi essendo molto più esperti di me saprete rispondermi...

    Allora io in JS ho creato una stringa JSON prelevando i dati da alcuni campi di un form e che ho poi passato a php con jQuery...

    in PHP li ricevo perfettamente e con mysql_real_escape_string mi assicuro che non ci sia niente di anomalo e li inserisco nel DB.
    Mi sono accorto però che ai caratteri accentati non applica escape e nemmeno con addslashes e quindi ho un problema, quando io ricarico una pagina js dove mi ricavo quei dati inviati, mi va in errore in quanto non avendo dei backslash la stringa si tronca..


    Vorrei quindi sapere innanzitutto se è giusto non eseguire l'escape dei caratteri quando creo la stringa JSON in javascript, poi non capisco perchè php dopo aver ricevuto la stringa JSON non mi fa l'escape prima di inserire nel DB, e per ultimo non capisco perchè quando recupero i dati dal DB e faccio json_encode con PHP, se la stringa non ha escape mi va in errore e quindi non capisco come ovviare..



    Voi di solito come fate? grazie mille!

  2. #2
    Comunque sintetizzando io faccio queste operazioni :

    Da Javascript mi prendo i campi che voglio inviare:

    codice:
    var daDoveScrivi = $.trim($("#textScrivoDa").val());
    
    var JSONObject = new Object;
    JSONObject.daDoveScrivi = daDoveScrivi;
    JSONstring = JSON.stringify(JSONObject);
    invia(JSONstring);
    bene io a questo punto lo ricevo con PHP e fin qui non ho assolutamente errori:
    Codice PHP:
    if(isset($_POST['dati']))
    {
        
    $data $_POST['dati'];
        
    $dati json_decode($data);
    }
    else{
        
    $dati 0;    
    }

    $daDoveScrivi $dati->{'daDoveScrivi'};
    $daDoveScrivi =  mysql_real_escape_string($daDoveScrivi)

    ... 
    faccio l'inserimento nel Database 
    a questo punto l'inserimento me lo fa ma non ha messo alcun escape...

    Ora io vado a richiamare la pagina che estrae le informazioni inserite nel db:
    Codice PHP:
    $arrayImpostazioniGeneriche = array();
    $query_impostazioni mysql_query("SELECT * FROM table WHERE User_ID = $id_utente");
    $query_res_impostazioni mysql_fetch_object($query_impostazioni);
    $arrayImpostazioniGeneriche[] = $query_res_impostazioni;

    $impostazioniGeneriche json_encode($arrayImpostazioniGeneriche); 
    poi me lo porto in Javascript in questo modo:
    codice:
    var impostazioniGeneriche = <?php echo "'$impostazioniGeneriche'"; ?>;
    ma se ho messo degli apici ho questo errore:

    missing ; before statement
    [Interrompi per questo errore] var impostazioniGeneriche = '[{"ID_S...raSettings":"2012-02-01 18:32:01"}]';

  3. #3
    Comunque dopo varie prove mi accorgo che anche mettendo i backslash a mano mi riporta comunque lo stesso errore...

    Che casino..

  4. #4
    Diciamo che ho trovato un escamotage, ovvero prima di inviare i dati da Javascript faccio questo:

    codice:
    var daDoveScrivi = $.trim($("#textScrivoDa").val());
         daDoveScrivi = escape(daDoveScrivi);
    quindi mi codifica tutti i caratteri speciali in modo che quando li ricevo non ho problemi di apici...

    Però il problema ora è che nel database mi ritrovo tutti caratteri codificati e quindi se devo fare delle ricerche mi potrebbe dare parecchi problemi...

    Ragazzi voi che dite?

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 © 2025 vBulletin Solutions, Inc. All rights reserved.