Visualizzazione dei risultati da 1 a 6 su 6

Discussione: apici e query

  1. #1

    apici e query

    Salve,
    ho un problemino con i form che non riesco a risolvere.
    Sul mio pc ho Apache e MySql.
    Quando inserisco dei dati in un form sono abituato ad usare str_replace per sostituire gli apici " ' " con " \' " per poi salvare il tutto nel database con una query.

    Mi capita, però, di lavorare con server tipo Aruba o applicazioni come Server2Go dove ho comunque Apache e MySql, ma spesso questa sostituzione la fa il server in automatico e così, se lascio il codice come l'avevo scritto in origine mi ritrovo con " \\' " come risultato che ovviamente dà errore.

    Dove si imposta questa funzione? Ho guardato in httpd.conf di apache e in php.ini, ma se è in questi file non sono riuscito a capire dove si imposta.

    Vorrei fare in modo che il mio server sostituisse in automatico gli apici come fanno gli altri visto che alla fine le applicazioni non dovranno girare in locale e anche disattivare questa opzione in Server2Go per un'applicazione che ho già ultimato e mi seccherebbe parecchio andare ad eliminare i vari str_replace().

    Mi sapete aiutare? Ho cercato qui nel forum, ma non ne sono venuto a capo.
    Grazie!!!

    EDIT: ho trovato anche addslashes(stripslashes($testo)); qui su Html.it, ma se potessi fare a meno di riscrivere il codice almeno per il lavoro che ho già fatto mi farebbe risparmiare un sacco di tempo.
    Nemesis

  2. #2
    Devi attivare (=on) i magic quotes sul php.ini.

    Eccoti la documentazione:

    http://it2.php.net/magic_quotes/


  3. #3
    Per operare su stringhe che su cui deve operare MySQL senza incorrere in errori dovuti alla presenza di caratteri speciali c'è la funzione apposita mysql_escape_string().

    Vedi qui:
    http://it2.php.net/manual/it/functio...ape-string.php
    Questa è una soluzione sicura perché il metodo è implementato nello script e quindi aumenta la portabilità di ciò che produci.
    Se invece ti affidi alle impostazioni del modulo PHP che possono cambiare da server a server i tuoi lavori avranno sempre una ridotta portabilità, o comunque essa sarà influenzata dall'ambiente di lavoro e lo start-up richiederà maggior tempo per la configurazione.

    La risposta era già stata data 15 thread prima di questo, bastava scorrere un po' i titoli:
    http://forum.html.it/forum/showthrea...readid=1110750
    Emanuele DG
    <?php echo "Proverbio zen(d): vivi ogni giorno come se fosse il ".date('d M Y', time()); ?>
    Intellectual property

  4. #4
    Prima di tutto grazie a entrambi per la risposta.

    Non mi ricordavo proprio che erano i magic quotes e dire che sono sicuro di aver letto più di qualcosa sull'argomento.

    Per quanto riguarda mysql_escape_string() non conoscevo la funzione, l'ho provata con un semplice form con una casella di testo dopo aver attivato magic quotes sul mio server in locale:

    $stringa = $_POST['testo'];
    $stringa2 = mysql_escape_string($stringa);
    echo $stringa2;

    La stringa immessa era: " l'apostrofo "

    Il risultato è: " l\ \ \ 'apostrofo " (non fate caso agli spazi: il forum mi salta un backslash se li metto attaccati)

    che usato in una query non mi funziona.

    Probabilmente sono io che sbaglio qualcosa, ma se funziona proprio così altro che portabilità...

    Morale della favola: adeguo il mio server agli altri ed a scanso di equivoci uso addslashes(stripslashes($testo)) come consigliato qui su html.it


    Rinnovo il ringraziamento ad entrambi per l'aiuto e senza polemica tengo a puntualizzare una piccola cosa:

    La risposta era già stata data 15 thread prima di questo, bastava scorrere un po' i titoli:
    http://forum.html.it/forum/showthre...hreadid=1110750
    - Quando ho postato le discussioni potevano anche essere molto più vicine o molto più lontane. Non capisco a cosa serva puntualizzare che tu hai trovato un topic (a tuo giudizio) inerente 15 righe sopra o sotto il mio.
    - Di solito uso la ricerca quando cerco informazioni. Non mi scorro casualmente tutti i post del forum anche perché non ne avrei il tempo.
    - Lo scopo del mio topic era di attivare magic quotes che non ha nulla a che fare col thread da te linkato. Il mio riferimento all'utilizzo di funzioni era solo alternativo alla possibilità di abilitare o disabilitare magic quotes (di cui non ricordavo il nome e probabile motivo per cui non ho trovato nulla con la ricerca). Mi basterà disabilitarlo sull'applicazione che deve girare su Server2Go e non devo cambiare una riga di codice.

    Per il futuro, ovviamente, mi dedicherò maggiormente a rendere il codice più portabile, ma, ripeto, non era questo lo scopo del mio post.

    In ogni caso, ancora una volta, grazie per l'aiuto.
    Nemesis

  5. #5
    Utente di HTML.it L'avatar di pak0
    Registrato dal
    Dec 2004
    Messaggi
    263
    Originariamente inviato da emanueledg
    Per operare su stringhe che su cui deve operare MySQL senza incorrere in errori dovuti alla presenza di caratteri speciali c'è la funzione apposita mysql_escape_string().

    Vedi qui:
    http://it2.php.net/manual/it/functio...ape-string.php
    Questa è una soluzione sicura perché il metodo è implementato nello script e quindi aumenta la portabilità di ciò che produci.
    Se invece ti affidi alle impostazioni del modulo PHP che possono cambiare da server a server i tuoi lavori avranno sempre una ridotta portabilità, o comunque essa sarà influenzata dall'ambiente di lavoro e lo start-up richiederà maggior tempo per la configurazione.

    La risposta era già stata data 15 thread prima di questo, bastava scorrere un po' i titoli:
    http://forum.html.it/forum/showthrea...readid=1110750
    Ho sempre usato addslashes().. mi sa ke cambio!
    PuEBlO, RizLa SLiM & RIzLa FiLTeR 6mM

  6. #6
    Originariamente inviato da nemesis_83
    Per quanto riguarda mysql_escape_string() non conoscevo la funzione, l'ho provata con un semplice form con una casella di testo dopo aver attivato magic quotes sul mio server in locale:

    $stringa = $_POST['testo'];
    $stringa2 = mysql_escape_string($stringa);
    echo $stringa2;

    La stringa immessa era: " l'apostrofo "

    Il risultato è: " l\ \ \ 'apostrofo " (non fate caso agli spazi: il forum mi salta un backslash se li metto attaccati)

    Probabilmente sono io che sbaglio qualcosa, ma se funziona proprio così altro che portabilità...

    Morale della favola: adeguo il mio server agli altri ed a scanso di equivoci uso addslashes(stripslashes($testo)) come consigliato qui su html.it
    Il comportamento è normale, è sbagliato il modo in cui utilizzi la funzione in relazione a magic_quotes_gpc (leggi link sotto).

    Rinnovo il ringraziamento ad entrambi per l'aiuto e senza polemica tengo a puntualizzare una piccola cosa:
    Dal tono non sembrerebbe...

    - Quando ho postato le discussioni potevano anche essere molto più vicine o molto più lontane. Non capisco a cosa serva puntualizzare che tu hai trovato un topic (a tuo giudizio) inerente 15 righe sopra o sotto il mio.
    - Di solito uso la ricerca quando cerco informazioni. Non mi scorro casualmente tutti i post del forum anche perché non ne avrei il tempo.
    - Lo scopo del mio topic era di attivare magic quotes che non ha nulla a che fare col thread da te linkato. Il mio riferimento all'utilizzo di funzioni era solo alternativo alla possibilità di abilitare o disabilitare magic quotes (di cui non ricordavo il nome e probabile motivo per cui non ho trovato nulla con la ricerca). Mi basterà disabilitarlo sull'applicazione che deve girare su Server2Go e non devo cambiare una riga di codice.

    Per il futuro, ovviamente, mi dedicherò maggiormente a rendere il codice più portabile, ma, ripeto, non era questo lo scopo del mio post.
    Allora ignora il mio suggerimento, di che ti preoccupi?

    Tornando al focus della questione, articolo che spiega un po' di cose sulla gestione stringhe/caratteri speciali/DB:
    http://php.html.it/articoli/leggi/89...l-injection/4/
    Emanuele DG
    <?php echo "Proverbio zen(d): vivi ogni giorno come se fosse il ".date('d M Y', time()); ?>
    Intellectual property

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.