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

    [MySQL] addslash che da strani problemi

    Faccio un inserimento in una riga di mysql...
    esempio reale:


    phpstats mi registra una visita con l'aggiunta di addslashes agli apici, per cui se faccio echo della query l'apice lo vedo.

    per semplificare:

    Codice PHP:
    $query "INSERT INTO tabella (campo) VALUES ('http://www.dominio.it/pagina.php?id=-\'')"#un hacker cerca di creare problemi. 
    il problema è che se estraggo il dato, l'apice non viene più, e anche se lo guardo da phpmyadmin, non lo vedo...
    vedo questo:
    http://www.dominio.it/pagina.php?id=-'

    i dati vengono estratti con queste righe:

    Codice PHP:
    $res=sql_query("SELECT ip,host,os,bw,lang,date,referer,currentPage,reso,colo,titlePage,tld FROM $option[prefix]_details WHERE visitor_id='$visitor_id' ORDER BY date ASC");

    $tmpPages=Array();
    $tmpRow=NULL;
    while(
    $row=mysql_fetch_row($res)){
        list(
    $details_ip,$details_host,$details_os,$details_bw,$details_language,$details_date,$details_referer,$details_currentPage,$details_reso,$details_colo,$details_titlePage,$domain)=$row;
                        
                            
            echo 
    '<pre>';
            
    var_dump($details_currentPage); # qui vedo il dato senza apice
            
    echo '</pre>';
            
    /**/ 
    che fo?
    Ciao!

  2. #2
    Cioè, cosa fare lo so, ma volevo sapere se c'è qualche cosa fattibile a livello di database.

    Perché se metto lo slash in INSERT, non me lo ritrovo in SELECT?
    Ciao!

  3. #3
    non e' che si capisce per bene cio' che vuoi sapere. Parli di apici e di slash. Cosa stai chiedendo?

    L'apice serve a delimitare una stringa. E' un carattere di controllo che verra' eliminato con l'inserimento. Pero' potresti trovare sia un apice oppure un backslash \ come carattere di escape... chiarisci la tua domanda.

    Quello che vedi e' corretto se visto in relazione all'inserimento che risulta pero' errato (numero dispari di apici. Se un apice apre un apice deve chiudere la stringa)

    prova cosi' con l'escape

    VALUES ('http://www.dominio.it/pagina.php?id=-\'\'')

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  4. #4
    Ciao Piero,

    si tratta di un piccolo bug di phpstats.

    Se nell'indirizzo della pagina c'è un apice ( ' ), questo viene inserito correttamente con addslashes nel database.

    esempio...

    Questa pagina: http://www.dominio.it/pagina.php?id='
    viene inserita nel database con http://www.dominio.it/pagina.php?id=\'

    ma se guardo il record con phpmyadmin, lo slash correttamente non lo vedo.
    inoltre quando il record viene estratto per la visualizzazione con il codice riportato, la mancanza dello slash lo manda in pappa.
    ho corretto il codice aggiungendo un addslashes dopo la query select.

    il bug era li e mysql non centra.
    Ciao!

  5. #5
    dobbiamo prima allinearci sulla sintassi.

    \ <--- questo e' un backslah usato di default come carattere di escape da mysql

    / <--- questo e' uno slash ed e' un comune carattere ascii. Quindi nessuno lo toglie e compare sempre.

    il carattere di escape serve ad indicare che il carattere che segue non e' un carattere di controllo. Ovviamente dopo aver esaurito la funzione di indicazione del tipo di carattere che segue, questo backslash viene eliminato. Se non viene eliminato e' perche' viene sottoposto due volte al controllo con addslashes(), oppure con magic_quote e/o mysql_real_escape_ string().

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  6. #6
    Originariamente inviato da piero.mac
    \ <--- questo e' un backslah usato di default come carattere di escape da mysql

    / <--- questo e' uno slash ed e' un comune carattere ascii. Quindi nessuno lo toglie e compare sempre.

    si, manca solo il back nella mia frase...
    Ciao!

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.