Visualizzazione dei risultati da 1 a 9 su 9
  1. #1
    Utente di HTML.it
    Registrato dal
    Mar 2001
    Messaggi
    2,043

    non riesco a pulire le stringhe

    ho fatto così ma non funziona, dove sbaglio?

    Codice PHP:
    function puliscistringa($stringa){
        
    $stringa trim($stringa);
        
    $stringa str_replace("à","a",$stringa);
        
    $stringa str_replace("è","e",$stringa);
        
    $stringa str_replace("é","e",$stringa);
        
    $stringa str_replace("ò","o",$stringa);
        
    $stringa str_replace("ù","u",$stringa);
        
    $stringa str_replace("ì","i",$stringa);
        
    $stringa ereg_replace("[^A-Za-z0-9]""_"$stringa);
        
    $stringa ereg_replace("_{1,}""_"$stringa);
        if(
    substr($stringa01)=="_"){$stringa=substr($stringa1);}
        if(
    substr($stringa, -11)=="_"){$stringa=substr($stringa0,strlen($stringa)-1);}
        return 
    $stringa;
    }

    $titolo_articolo2 puliscistringa($titolo_articolo);
    $sottotitolo_articolo2 puliscistringa($sottotitolo_articolo);
    $cappello_articolo2 puliscistringa($cappello_articolo);
    $metatag2 puliscistringa($metatag); 

  2. #2
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,505
    Puoi fare un esempio di stringa "sporca" e come dovrebbe diventare dopo la pulizia?
    Attualmente cosa ottieni invece?

  3. #3
    Utente di HTML.it
    Registrato dal
    May 2006
    Messaggi
    96

    Re: non riesco a pulire le stringhe

    Originariamente inviato da prinzart
    ho fatto così ma non funziona, dove sbaglio?

    Codice PHP:
    function puliscistringa($stringa){
        
    $stringa trim($stringa);
        
    $stringa str_replace("à","a",$stringa);
        
    $stringa str_replace("è","e",$stringa);
        
    $stringa str_replace("é","e",$stringa);
        
    $stringa str_replace("ò","o",$stringa);
        
    $stringa str_replace("ù","u",$stringa);
        
    $stringa str_replace("ì","i",$stringa);
        
    $stringa ereg_replace("[^A-Za-z0-9]""_"$stringa);
        
    $stringa ereg_replace("_{1,}""_"$stringa);
        if(
    substr($stringa01)=="_"){$stringa=substr($stringa1);}
        if(
    substr($stringa, -11)=="_"){$stringa=substr($stringa0,strlen($stringa)-1);}
        return 
    $stringa;
    }

    $titolo_articolo2 puliscistringa($titolo_articolo);
    $sottotitolo_articolo2 puliscistringa($sottotitolo_articolo);
    $cappello_articolo2 puliscistringa($cappello_articolo);
    $metatag2 puliscistringa($metatag); 
    Dash il campione contro le stringhe
    Scherzo, posta pure ciò che ha detto Alhazred

    Ciao

  4. #4
    Utente di HTML.it
    Registrato dal
    Mar 2001
    Messaggi
    2,043
    niente, semplicemente ignora quella funzione e mi inserisce il testo insieme ai i caratteri che pensavo di aver cancellato con la funzione.

    diciamo che i caratteri che non voglio vengano inseriti nel db sono questi:

    "
    /
    \
    '

    e vorrei sotituirli con degli spazi

  5. #5
    Utente di HTML.it
    Registrato dal
    May 2006
    Messaggi
    96
    Originariamente inviato da prinzart
    niente, semplicemente ignora quella funzione e mi inserisce il testo insieme ai i caratteri che pensavo di aver cancellato con la funzione.

    diciamo che i caratteri che non voglio vengano inseriti nel db sono questi:

    "
    /
    \
    '

    e vorrei sotituirli con degli spazi
    Ciao prinzart in questa discussione Eliminare carattere speciale “ inserendo "
    questa discussione potrebbe esserti utile, se non riesci faccelo sapere
    Ciao

  6. #6
    Utente di HTML.it
    Registrato dal
    Mar 2001
    Messaggi
    2,043
    Originariamente inviato da Minatore
    Ciao prinzart in questa discussione Eliminare carattere speciale “ inserendo "
    questa discussione potrebbe esserti utile, se non riesci faccelo sapere
    Ciao
    ho letto la discussione, e ora mi funziona, grazie!

    ho fatto così:

    $cerca = array ('/', '"', '__', '--', ' ');
    $sostituisci = array(' ','','_','-',' ');

    $titolo_articolo = str_replace($cerca, $sostituisci, $titolo_articolo);
    $sottotitolo_articolo = str_replace($cerca, $sostituisci, $sottotitolo_articolo);
    $cappello_articolo = str_replace($cerca, $sostituisci, $cappello_articolo);
    $metatag = str_replace($cerca, $sostituisci, $metatag);

    scusa, un'ultima cosa, come faccio ad aggiungere nei caratteri indesiderati anche \ (backslash) perchè mi da problemi quando lo aggiungo nella funzione

  7. #7
    Utente di HTML.it
    Registrato dal
    May 2006
    Messaggi
    96
    Originariamente inviato da prinzart
    ho letto la discussione, e ora mi funziona, grazie!

    ho fatto così:

    $cerca = array ('/', '"', '__', '--', ' ');
    $sostituisci = array(' ','','_','-',' ');

    $titolo_articolo = str_replace($cerca, $sostituisci, $titolo_articolo);
    $sottotitolo_articolo = str_replace($cerca, $sostituisci, $sottotitolo_articolo);
    $cappello_articolo = str_replace($cerca, $sostituisci, $cappello_articolo);
    $metatag = str_replace($cerca, $sostituisci, $metatag);

    scusa, un'ultima cosa, come faccio ad aggiungere nei caratteri indesiderati anche \ (backslash) perchè mi da problemi quando lo aggiungo nella funzione
    Penso sia la stessa cosa, adesso non ho il tempo di provare, ma vorrei farti una domanda
    perchè stai facendo queste sostituzioni, non sarà mica per evitare le sql injection?
    perchè se è così sono ben altri i controlli da fare

  8. #8
    Utente di HTML.it
    Registrato dal
    Mar 2001
    Messaggi
    2,043
    No è solo perchè se l'utente mi inserisce "un testo virgolettato" l'inserimento nel db avviene regolarmente però in fase di stampa a video il campo testo rimane vuoto, come se nel db non ci fosse il record.

    credo che le virgolette vanno in conflitto con qualcosa.

    Comunque già che c'ero ho pensato di levare anche altri caratteri che non mi interessavano.

  9. #9
    Originariamente inviato da prinzart
    No è solo perchè se l'utente mi inserisce "un testo virgolettato" l'inserimento nel db avviene regolarmente però in fase di stampa a video il campo testo rimane vuoto, come se nel db non ci fosse il record.

    credo che le virgolette vanno in conflitto con qualcosa.

    Comunque già che c'ero ho pensato di levare anche altri caratteri che non mi interessavano.
    io non sono bravo però quando iniziai a leggere le varie guide sul web dopo massimo 2-3 lezioni su mysql sta cosa la dicono (fra l'altro è fondamentale per le sql injection):


    Alle stringhe in ingresso si applica:

    Codice PHP:
    <?php
    function EscapeString($string)
    {
        if(
    get_magic_quotes_gpc())
        {
            
    $string stripslashes($string);
                    return 
    mysql_real_escape_string($string);
        }
        else
        {
            return 
    mysql_real_escape_string($string);
        }
    }
     
    ?>
    in uscita si applica striplashes()...

    Fonti (quelle che preferisco e sulle quali ho e sto studiando...):
    - http://www.mtxweb.ch/php_learn/?p=864 (il mitico mtxmaurizio)
    - http://www.phpnews.it/corsi/inserimento-dati/


    --------------

    Le lettere accentate è un problema distinto e può dipendere:
    - se dipende dalla pagina puoi: cambiare charset (metti <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />) o applicare htlmentities() all'uscita dei dati.
    - se dipende dallo charset del database impostalo come uft-8 oppure latin_1_swedish... o na cosa più o meno così... ora nn ricordo esattamente

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.