Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 11
  1. #1
    Utente di HTML.it L'avatar di gasmor
    Registrato dal
    Apr 2004
    Messaggi
    1,768

    addslashes non serve in alcune tabelle e in altre si

    ho scritto una classe che mi gestisce tutte le inserzioni che avvengono sul mio sito, quindi le quesry di scrittura e di update del database.

    Inizialmente, avendo un vecchio MySql 3, mi funzionava il comando addslashes.

    Passando al MySql 4 ho dovuto eliminare l'addslashes perchèmi ritrovavo nei testi dele nuove inserzioni tutti gli escape aggiunti dalla funzione.

    Fin qui tutto ok, il sito va alla grande.

    Tuttavia, in 2 tabelle, se inserisco dei dati senza l'addslashes e ci sono degli apici la query mi restituisce errore.

    perchè?

    Sto utilizzano stesso db e stessa classe in tutto il sito, perchè il problemo lo ritrovo solo in 2 tabelle? :master:
    Hai provato a creare un sito con Jaaxo Cms PHP5? new!

  2. #2
    Utente di HTML.it L'avatar di gasmor
    Registrato dal
    Apr 2004
    Messaggi
    1,768
    up
    Hai provato a creare un sito con Jaaxo Cms PHP5? new!

  3. #3

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

  4. #4
    Utente di HTML.it L'avatar di gasmor
    Registrato dal
    Apr 2004
    Messaggi
    1,768
    grazie piero,

    ma comunque non continuo a capire perchè utilizzando lo stesso script su due diverse tabelle da una parte funziona e dall'altra no...
    Hai provato a creare un sito con Jaaxo Cms PHP5? new!

  5. #5
    Originariamente inviato da gasmor
    grazie piero,

    ma comunque non continuo a capire perchè utilizzando lo stesso script su due diverse tabelle da una parte funziona e dall'altra no...
    potrebbe essere che da una parte hai magic quote in ON e dall'altra in off.

    Ci vuole sempre il carattere di escape nel testo quando si incontrano dei caratteri che hanno anche una funzione di controllo, proprio per specificare che si tratta di un carattere stringa e non di un carattere di controllo.

    Se stampi la query prima di ricevere l'errore si dovrebbe evidenziare che in un caso hai il carattere di escape e nell'altro no. Potrebbe anche essere che ci sia settato magic_quotes_sybase in ON nel php.ini. In questo caso ti infila un apice come carattere di escape al posto di un backslash.

    Se stampi le query dovresti evidenziarlo

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

  6. #6
    Utente di HTML.it L'avatar di gasmor
    Registrato dal
    Apr 2004
    Messaggi
    1,768
    grazie,

    il funzionamento di addslashes lo conosco bene e anche a cosa servono i backslashes

    quindi a questo punto resta da definire bene questo magic quote

    Tu dici che in una tabella potrebbe essere On e nell'altra Off.

    Ma com'è possibile dato che il db è lo stesso?

    :master:
    Hai provato a creare un sito con Jaaxo Cms PHP5? new!

  7. #7
    Originariamente inviato da gasmor
    grazie,

    il funzionamento di addslashes lo conosco bene e anche a cosa servono i backslashes

    quindi a questo punto resta da definire bene questo magic quote

    Tu dici che in una tabella potrebbe essere On e nell'altra Off.

    Ma com'è possibile dato che il db è lo stesso?

    :master:
    forse non ci siamo capiti..... pensavo a due server http non a due tabelle. Quindi On/Off nel php.ini. Se si trattasse dello stesso script (stesso server HTTP) che agisce su due tabelle differenti dello stesso server mysql su cui una da errore e sull'altra no .... beh! allora la cosa non quadra da nessun lato la si osservi.

    Spiega bene lo scenario del film.

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

  8. #8
    Utente di HTML.it L'avatar di gasmor
    Registrato dal
    Apr 2004
    Messaggi
    1,768
    appunto è proprio questo il problema.

    Stesso sito, stesso MySql, stesso db, stessa classe.

    Tutte le query vengono eseguite da una mia classe che prevede l'opzione di usare l'addslashes oppure no.

    Da quando sono passato a MySql 4 (parlo di vps, quindi la modifica riguarda tutti i miei siti) ho dovuto disattivare l'addslashes perchè venivano stampate a video i backslashes probabilmente perchè magic quote è a on.

    Tutti i siti ora, senza addslashes, funzionano alla meraviglia.

    Tranne uno che nello stesso db ha più di 50 tabelle e su una (in realtà sono due ma che ho creato tramite l'esportazione dell'altra) mi appaiono i backslashes

    E' questo il mio problema...

    Come cavolo è possibile?

    Ovviamente anche per qeusta tabella utilizzo la stessa classe (usata in tutta il sito) per eseguire le query di insert e update.
    Hai provato a creare un sito con Jaaxo Cms PHP5? new!

  9. #9
    se compaiono i backslashes significa che vengono messi due volte.

    Evidentemente quello che fai in quella tabella non proprio esattamente uguale alle altre. forse passi due volte i dati con post e le magic quote gpc fanno il loro lavoro due volte.

    Molto e' meglio (e piu' performante) tenere le magic quote gpc in Off e gestire l'escape con mysql_real_escape_string() solo al momento di inserirlo nel db. Come suggerito nella pillola di Luca200.

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

  10. #10
    Utente di HTML.it L'avatar di gasmor
    Registrato dal
    Apr 2004
    Messaggi
    1,768
    hai ragione,

    eseguivo uno stripslashes() nell'altra pagina e non me ne ero accorto.

    Meno male che il problema era quello, non ci stavo capendo più niente

    Senti, non ho capito perchè l'addslashes non è consigliato.
    Ho letto la pillola e ho visto un articolo consigliato (mi sembra da andr3a) ma è in inglese e non ci capisco una cicca.

    Mi potresti dire in parole povere perchè non si dovrebbe usare?

    grazie
    Hai provato a creare un sito con Jaaxo Cms PHP5? new!

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.