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

    stripslashes e virgolette

    Salve a tutti.
    Ho programmato un applicazione web in php che chiede dei dati agli utenti, li ripassa al server per verifica (sono 2 o 3 passi in tutto), e dopodiche' inserisce tutti i dati nel database.
    Ho dei problemi pero' con le virgolette e la funzione stripslashes.
    Quando vengono aggiunti gli slash davanti agli apici?
    Se per esempio la variabile viene comunicata al server 2 volte, e la parola conteneva il carattere " , queste doppie virgolette vengono precedute da 3 slash.
    Come mi devo comportare?

  2. #2
    Mi spiego meglio (e intanto credo *spero* di aver risolto).
    L'applicazione serve per l'inserimento a database di oggetti, di cui l'utente deve specificare prima il tipo (a scelta da un menu' fisso), poi la marca e infine il modello.
    Marca e modello, a differenza del tipo, devono essere immessi dall'utente direttamente tramite input da tastiera.
    Il controllo e' in 3 fasi, prima tipo, poi marca, poi modello. Sono necessarie le 3 fasi perche' a seconda delle scelte dell'utente il form assume un aspetto diverso (avevo provato con select dipendenti in JS ma e' meglio cosi').
    Per tenere traccia delle variabili, uso degli input di tipo HIDDEN nei form.
    Credo di aver risolto mettendo in questi hidden, al posto della variabile, lo stripslashes della variabile stessa.
    Ho fatto bene?

  3. #3

  4. #4
    Utente di HTML.it L'avatar di Lak3d
    Registrato dal
    Aug 2006
    Messaggi
    1,031
    non ho capito il tuo problema... ci pensa PHP a sostituire i caratteri come gli slash, i singoli e doppi apici ecc creando una sequenza di escape... nel db poi li troverai come l'utente li ha immessi...

    Se poi setti magic_quotes_gpc a On fa tutto lui senza bisogno di stripslashes e funzioni varie...

  5. #5
    Il fatto e' proprio questo: nel database i caratteri di escape vengono registrati, quindi se io visualizzo una stringa con dei doppi apici, prima di questi ci sara' un backslash.
    Sono su Aruba e credo che la direttiva magic_quote sia on.
    Sono quindi costretto a usare uno stripslashes prima di visualizzare qualsiasi stringa prelevata dal database.
    E' normale? Come posso agire?

  6. #6
    Utente di HTML.it L'avatar di Lak3d
    Registrato dal
    Aug 2006
    Messaggi
    1,031
    se la direttiva è on, il carattere di escape viene visualizzato solo e soltanto se inserisci una stringa come questa:

    codice:
    "Lak'/ed"
    allora verrà automaticamente traformata in:

    codice:
    "Lak/'//ed"
    dove la rima sequenza di escape è per il singolo apice e la seconda è proprio per lo slash...
    Se vengono memorizzati gli slash non digitati nel db c'è qualcosa di strano a cui devi porre rimedio facendo delle prove e risalendo all'errore;

    innanzitutto capire se la direttiva è attivata o meno. Togli qualsiasi funzione adibita a scopi simili nel tuo codice e prova ad inserire una stringa provvista di un singolo o doppio apice... se la query va in errore la direttiva è impostata a OFF. Se invece la inserisce senza problemi è On.
    Fatto ciò verifichi nel db se per il record appena inserito ha registrato anche gli slash... se li ha registrati è evidente che fai qualcosa tu a livello di codice usando una funzione che li aggiunge a sua volta insieme alla direttiva creando una doppia sequenza di escape

    esempio:

    codice:
    Stringa inserita: Lak'ed
    direttiva: Lak/'ed
    tuo codice:Lak///'ed
    
    Registrazione nel db: Lak/'ed
    le ho usate al contrario altrimenti alcune non si vedevano... misteri del vb

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.