Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 11
  1. #1

    ripulire una stringa da caratteri pericolosi

    ciauz a tutti volevo chiedervi qualcuno di voi avrebbe una funzione da scrivermi come esempio per fare il replace dei caratteri pericolosi?

    io ho pensato a questi...
    codice:
         	    $input = preg_replace("\", "\\", $stringa);
    	    $input = preg_replace("\", "\"", $stringa);
    ciauz e grazie

  2. #2
    Dipende per cosa ti serve. Se devi semplicemente escapizzare i caratteri che possono dare problemi (apici singoli e doppi, &, ecc.) puoi usare la funzione addslashes() di PHP.

    codice:
    $input = addslashes($stringa);
    Se invece ti interessa ripulire la stringa per inserirla in un database MySQL, puoi usare la comoda funzione mysql_real_escape_string() che si occupa di escapizzare tutti i caratteri che possono infastidire MySQL (quindi tutti quelli escapizzati da addslashes() più altri caratteri che MySQL utilizza, come i NULL byte).

    codice:
    $input = mysql_real_escape_string($stringa);
    Dai anche un'occhiata alla documentazione su www.php.net e sul sito di MySQL.

  3. #3
    ti ringrazio davvero per l'aiuto!

    quindi con la funzione mysql_real_escape_string posso inserire una stringa nel db mysql senza avere problemi...
    però ho un dubbio...questa funzione...mi toglie tutti i caratteri pericolosi oppure me li formatta in modo che non diano problemi?

    altra domanda... se io ricevo una stringa tramite post... e vorrei formattarla in modo da poterla usare come condizione where della query...
    quale di queste due funzioni è meglio usare?

    ciauz e grazie ancora

  4. #4

  5. #5
    perfetto grazie mille!!!
    non avevo notato questa pillola!!!

    ma...queste funzioni... fanno un replace anche die tag html? da quello che ho visto non mi sembra...
    saprei anche una funzione che permetta di fare il replace dei tag html?


    ciauzzze grazie ancora

  6. #6

  7. #7
    scusate se riapro questa ia vecchia discussione... ma ho preferito non aprire un altra disucssione simile...

    ho un problema... quando provo a usare la funzione mysql_real_escape mi da errore...
    Call to undefined function: mysql_real_escape()


    ho qualche problema a fare il controllo dei dati...leggendo in internet non sono riuscito a trovare nessuna guida veramente completa...
    vi faccio qualche esempio..
    che funzioni bisogna utilizzare in queste situazioni?

    1) dati ricevuti da FORM e devono essere messi ne DATABASE
    2) dati ricevuti da FORM e devono essere MOSTRATI A SCHERMO in un altra pagina
    3) dati ricevuti da FORM e devono essere utilizzati come condizione WHERE in una QUERY
    4) dati ricevuti da DATABASE che devono essere MOSTRATI A SCHERMO
    5) dati riecvuti da DATABASE che devono essere inseriti in un altro DATABASE

    ringrazio davvero chiunque sappia aiutarmi consigliandomi le funzioni da usare o consigliarmi una guida che mi permetta di risolvere quelle 5 situazioni...

    ciauz e grazie ancora

  8. #8
    La funzione si chiama mysql_real_escape_string(), non mysql_real_escape().

    Per il resto, io faccio abitualmente così:

    La pagina che riceve i dati e deve elaborarli e inserirli nel database, li recupera dall'array superglobale ($_GET o $_POST) facendo il trim e lo stripslashes:

    $var = trim(stripslashes($_POST['var']));

    Poi forza i dati che devono essere numeri interi (tipici gli ID) facendo il casting:

    (int) $id = trim(stripslashes($_POST['id']));

    Infine esegue la query (update o insert) usando per tutti i valori che devono essere stringhe la funzione mysql_real_escape_string():

    $sql = "UPDATE tabella SET nome = '".mysql_real_escape_string($nome)."' WHERE id = 1";

    Il database, le tabelle e le pagine XHTML che visualizzano i dati sono tutti creati usando la codifica UTF-8. Questo permette di inserire i caratteri speciali senza doverli convertire in entità HTML. Nella fattispecie:

    1. Le pagine XHTML sono salvate con la codifica UTF-8 (è fondamentale!) e hanno il meta tag che specifica il charset impostato su UTF-8. Molti editor di testo salvano i file in automatico usando la codifica ASCII, Windows-1252 o ISO-8859-1 (Latin1). Quindi è necessario controllare la codifica usata dal proprio editor.
    2. Il database e le tabelle sono creati esplicitamente forzando il character set e la collation ad essere rispettivamente utf8 e utf8_general_ci. Ad es.:

    $sql = "CREATE DATABASE IF NOT EXISTS nomedb CHARACTER SET utf8 COLLATE utf8_general_ci";

    UTF-8 permette l'uso di milioni di caratteri senza ricorrere alle entità HTML.
    Quando devo visualizzare dei record nelle pagine XHTML, utilizzo per tutti i valori che sono stringhe la funzione htmlspecialchars($stringa,ENT_NOQUOTES), che converte solo i caratteri \, &, < e >, lasciando inalterati gli altri (che UTF-8 riconosce tranquillamente).

    Per il passaggio di dati tra il form di una pagina e un'altra pagina, il procedimento è analogo:
    la pagina che riceve i dati effettua un trim e uno stripslashes per ripulire i valori da spazi prima e dopo e da backslash di escaping. Questo fa in modo che lo script funzioni indipendentemente da come sono impostate le "magic quotes" nel file php.ini per gli array POST, GET e COOKIES.

    Questo è ovviamente quello che faccio io. Spero di esserti stato utile.

  9. #9
    sei stato davvero gentile a rispondermi....
    seguirò la tua precedura! :-)
    l'unica cosa...è che nn credo di poter impostare UTF-8, perchè alcuni dati vengono presi anche dal database del phpbb, il quale non utilizza UTF-8 mai so-8859-1...
    quindi credo che utilizzerò anche io iso-8859-1 però, se ho capito giusto, al posto di utilizzare htmlspecialchars() dovrò utilizzare htmlentities()
    è corretto quello che ho detto?

    ciauz e grazie ancora

  10. #10
    Già...in quel caso non hai molte alternative...quindi ti conviene usare l'ISO-8859-1 e convertire i caratteri usando htmlentities($stringa,ENT_QUOTES), in modo che ti converta anche apici singoli e doppi. Puoi cmq usare htmlentities() solo in fase di lettura dei dati, mentre per l'inserimento puoi lasciarli così come sono (specie se poi devi visualizzarli in aree di testo di eventuali pagine amministrative che ti permettono di modificarli).
    In realtà anche con l'ISO-8859-1 non sei obbligato a ricorrere alle entità HTML, tuttavia conviene usarle per garantirne la visualizzazione corretta anche in browser che usano codifiche differenti per default.


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.