Visualizzazione dei risultati da 1 a 8 su 8
  1. #1
    Utente di HTML.it
    Registrato dal
    Apr 2014
    residenza
    Piemonte
    Messaggi
    21

    Problema Mysql php [Controllo stringhe]

    Buonasera a tutti voi cari lettori,
    vi propongo un quesito:
    sto facendo un lavoretto per l'università con php e mysql, e mi sono imbattutto in un problema dal quale non riesco a vanirne proprio fuori!!!!!

    Inserisco nel database alcune stringhe che, rigorosamente faccio passare ad una funzione del genere:

    codice:
    function pulisciStringaSql($connessione, $pulisci){
            //rimuovere eventuali spazi all'inizio ed alla fine di una stringa
        $pulisci = trim($pulisci);
        
        if (get_magic_quotes_gpc()){ 
            $pulisci=stripslashes($pulisci);
        }
        $pulisci= nl2br(htmlspecialchars($pulisci));
        //rimuove i tag HTML presenti in una stringa
        $pulisci = strip_tags($pulisci);
        
        $pulisci = mysqli_real_escape_string($connessione,$pulisci);
    
        return $pulisci;
    }
    per "pulirla" un pochetto.
    Successivamente, quando cerco nel database una stringa, faccio passare, ciò che l'utente scrive, nuovamente alla funzione soprastante:

    codice:
    $parole = pulisciStringaSql($con,$_GET['user_type']);
    $parola_piccolo = strtolower($parole);
    $array_parole_da_cercare =array();
    $array_parole_da_cercare = explode(" ", "$parola_piccolo");
    //controllo se vi sono dei doppioni nell'array e li elimino
    $array_parole_da_cercare_2 =array();
    $array_parole_da_cercare_2=array_keys(array_flip($array_parole_da_cercare));
    NOTA: mi serve passarlo attraverso GET perchè mi servono i link!
    ------------------------------------------------------------------
    E fino a qui tutto bene! Creo la stringa SQL e cerco nel DB:

    codice:
    $sql=mysqli_query($con,"SELECT  * FROM tab_pdf_caricamenti WHERE nom_pdf LIKE '%$array_parole_da_cercare_2[$i]%'  ORDER BY num_like DESC ") or die("Error: 12001-55");
    //VI RISPARMIO IL RESTO DEL CODICE
    Il tutto sembra funzionare, tranne in un piccolo (GRANDE) particolare!!! Ovvero:
    Quando ad es. cerco l'apice (') mi trova tutte quelle parole che contengono l'apice ovviamente, quando cerco l'apice più il resto della parola (ad esempio, se nel db è contenuto l\'urlo, ed io cerco 'urlo) me li trova senza problemi... MA quando cerco la parola per intero (l'urlo con l'articolo davanti) non mi trova niente!!!! Credo che sia lo slash a far danni!!!

    Un altro problema:
    quando cerco il simbolo del + e il simbolo della & commerciale, non me li trova. Anche quando provo ad inserirli non li accetta!!

    PS: accetto consigli su come migliorare quella funzione!! =)

    Spero di essere stato chiaro e spero possiate aiutarmi!!
    Grazie mille in anticipo e scusate il disturbo.

  2. #2
    Utente di HTML.it
    Registrato dal
    Apr 2014
    residenza
    Piemonte
    Messaggi
    21
    PS: quando scrivo nella ricerca l\'urlo, ovvero quando metto io lo slash allora mi trova il risultato

  3. #3
    Utente di HTML.it
    Registrato dal
    Feb 2014
    residenza
    Voltati
    Messaggi
    913
    Passa nella funzione pulisci anche la parola da cercare
    No

  4. #4
    Utente di HTML.it L'avatar di ttcc
    Registrato dal
    Dec 2008
    Messaggi
    472
    Quote Originariamente inviata da BerniBerat Visualizza il messaggio
    PS: quando scrivo nella ricerca l\'urlo, ovvero quando metto io lo slash allora mi trova il risultato
    scusa ho sbagliato testo non avevo letto bene il tuo messaggio...
    Ultima modifica di ttcc; 06-05-2014 a 10:33

  5. #5
    Utente di HTML.it
    Registrato dal
    Apr 2014
    residenza
    Piemonte
    Messaggi
    21
    Lo faccio passare ma niente

  6. #6
    A colpo d'occhio..
    Codice PHP:
     $puliscinl2br(htmlspecialchars($pulisci)); 
    Se $pulisci = "&" quella funzione la trasforma in & .. ci credo che poi non la trovi nel database.. dove sarà memorizzata come &

    Altra fonte di possibili problemi:
    Codice PHP:
    if (get_magic_quotes_gpc()){ 
            
    $pulisci=stripslashes($puliscsci  
    Hai verificato se entra in questo if ?

    Un consiglio.. metti un bel echo dopo ogni operazione e guarda bene cosa combina quella funzione puliscistringaSql

  7. #7
    Utente di HTML.it
    Registrato dal
    Apr 2014
    residenza
    Piemonte
    Messaggi
    21
    Quote Originariamente inviata da W Thunderbird Visualizza il messaggio
    A colpo d'occhio..
    Codice PHP:
     $puliscinl2br(htmlspecialchars($pulisci)); 
    Se $pulisci = "&" quella funzione la trasforma in & .. ci credo che poi non la trovi nel database.. dove sarà memorizzata come &

    Altra fonte di possibili problemi:
    Codice PHP:
    if (get_magic_quotes_gpc()){ 
            
    $pulisci=stripslashes($puliscsci  
    Hai verificato se entra in questo if ?

    Un consiglio.. metti un bel echo dopo ogni operazione e guarda bene cosa combina quella funzione puliscistringaSql
    mmm.. la & e il + non li inserisce nel db anche senza farli passare attraverso la funzione clean! =(

    Non sono ancora riuscito a risolvere il problema! =( se cerco una parola con l'articolo prima non mi trova niente.. (es.. se scrivo cerco "l'oro" attraverso la funzione ottengo "l\'oro" e nel database c'è "l\'oro" , ma non lo trova!!! Se scrivo soltanto l'apice funziona!) bah!.. Sto sfasando!! =)

  8. #8
    Utente di HTML.it
    Registrato dal
    Apr 2014
    residenza
    Piemonte
    Messaggi
    21
    Ragazzi ho risolto il primo problema!
    Ho semplicemente usato
    codice:
    $_GET['user_type']=str_replace("'", " ' ", $_GET['user_type']);
    Che sostituisce l'apice con spazioAPICEspazio, il resto del mio codice in seguito spezza la stringa ad ogni spazio e cerca tutte le parole nel DB.

    Ora però, mi rimane da risolvere il secondo problema!!

    Non riesco proprio a capire perchè, quando cerco il carattere + e &, mi cambia questi due caratteri con uno spazio vuoto!!

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