Visualizzazione dei risultati da 1 a 6 su 6
  1. #1
    Utente di HTML.it L'avatar di Airfry
    Registrato dal
    Jan 2003
    Messaggi
    106

    controllo e sostituzione alcuni caratteri

    Ciao a tutti.
    Avrei bisogno di eseguire dei controlli passati da un form (circa 20 campi).
    Seguendo il consiglio letto su un thread di Anakin (http://forum.html.it/forum/showthrea...readid=1100235 di non doversi preoccupare di includere tutti i caratteri da escludere ho cercato di utilizzare l'espressione
    • $ristorante=preg_replace('/\W+\'+/i',' ',$ris1);

    e credo di aver risolto.
    Il problema sorge in alcuni campi tipo quello del cognome, in cui dovrei permettere che l'utente che si chiama D'Antonio non perda la "'".

    Ho provato in tutte le salse, ma non ne ho azzeccata una. Piuttosto si impianta il db (che senza nessuna espressione di controllo carica virgolette e quanto ce n'è), ma rien a faire.
    Tra l'altro mi sono andato a vedere le varie espressioni regolari (le cose le devo capire e non copiare), ma non ho trovato una spiegazione sul significato della i (+/i').

    Grazie per qualsiasi aiuto.
    Lo spartito della vita
    è un insieme di note.
    Ognuno è artefice della propria armonia.

  2. #2

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

  3. #3
    Utente di HTML.it L'avatar di Airfry
    Registrato dal
    Jan 2003
    Messaggi
    106
    Grazie Piero.mac (ma te non dormi mai? giorno e notte ti trovo pronto ad aiutarmi )
    Questo thread lo avevo letto alle 4 di questa notte e ho tratto queste conclusioni (come al solito capendo la metà di quello che capisce una persona normale...):
    - il server su cui ho il dominio ha i magic_quotes_gpc attivati.
    - Dovrei impedire di caricare le doppie " perchè il modulo in una prima fase carica i dati nel db, e poi li presenta all'utente che se desidera li può variare. In questa ultima fase succede che le " vanno ad incasinae il campo VALUE = "" del modulo con i dati precaricati e succede di trovarmi un codice VALUE = "" "

    Senza controlli, carico e vedo tutto correttamente tranne in quella fase. Già che c'ero avrei voluto approfondire il controllo su tutti i caratteri e lasciar passare solo quelli che reputo necessari.
    Con tutti i limiti di cui sono consapevole, ho ritenuto di usare un preg_replace e lasciare gestire gli addslshes e stripslashes alla magic_quotes_gpc

    Però se tu mi dici di proseguire sulla strada che mi hai indicato, mi ci metto fino a tirarne fuori il risultato voluto.
    Grazie.
    Lo spartito della vita
    è un insieme di note.
    Ognuno è artefice della propria armonia.

  4. #4
    Originariamente inviato da Airfry

    Però se tu mi dici di proseguire sulla strada che mi hai indicato, mi ci metto fino a tirarne fuori il risultato voluto.
    Grazie.
    dormo fuori ora (ora fuori) ... come per i miei pasti....

    ti conviene eliminare le magic_quote, gia' come default vengono date disabilitate. Il perche' e' facile da capire:ti riporto il manuale:

    Why not to use Magic Quotes
    Portability

    Assuming it to be on, or off, affects portability. Use get_magic_quotes_gpc() to check for this, and code accordingly.

    Performance

    Because not every piece of escaped data is inserted into a database, there is a performance loss for escaping all this data. Simply calling on the escaping functions (like addslashes()) at runtime is more efficient.

    Although php.ini-dist enables these directives by default, php.ini-recommended disables it. This recommendation is mainly due to performance reasons.

    Inconvenience

    Because not all data needs escaping, it's often annoying to see escaped data where it shouldn't be. For example, emailing from a form, and seeing a bunch of \' within the email. To fix, this may require excessive use of stripslashes().
    mysql_real_escape_string() aggiunge i caratteri di escape solo al momento di inserire i dati nella tabella ( se e come serve). E lo fa in accordo al character set della connessione... cosa importante visto il mix attuale dei charset usati.

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

  5. #5
    Utente di HTML.it L'avatar di Airfry
    Registrato dal
    Jan 2003
    Messaggi
    106
    Grazie di tutto.
    Ho appena controllato le info php sul server ed il magic_quotes_gpc è come ricordavo: ON.
    Devo capire se lo posso disabilitare. Se non posso (e non credo) sostituirò le doppie " ed eventuali altri caratteri.
    Tra la'ltro ho provato come mi hai indicato e mi mette gli slashes in locale ecc. Quindi ho capito almeno questa parte.
    Mi resta comunque il caso in cui vorrei evitare che mi postassero caratteri strani e con
    \W (che equivale a [^0-9A-Za-z]) li avrei sotto controllo (dico giusto?)... ma non so come far passare l'apostrofo...

    Stanotte mi rimetto sotto.
    Grazie di nuovo.
    Lo spartito della vita
    è un insieme di note.
    Ognuno è artefice della propria armonia.

  6. #6
    Originariamente inviato da Airfry
    - Dovrei impedire di caricare le doppie " perchè il modulo in una prima fase carica i dati nel db, e poi li presenta all'utente che se desidera li può variare. In questa ultima fase succede che le " vanno ad incasinae il campo VALUE = "" del modulo con i dati precaricati e succede di trovarmi un codice VALUE = "" "
    L'incasinamento NON deve esserci. Il concetto dovrebbe essere questo:
    codice:
    dati ---> PHP -+-> HTML "raw" (tags, nome attributi e balle varie)
                   +-> htmlentities() ---> HTML immesso dall'utente (valori attributi e contenuto)
                   +-> urlencode() ---> Indirizzi URL
                   +-> mysql_escape_string ---> database
    Notare l'ASCII art vecchio stampo...

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