Pagina 1 di 2 12 UltimoUltimo
Visualizzazione risultati 1 fino 30 di 38

Discussione: ma brutto ereg...

  1. #1
    Guest

    Predefinito ma brutto ereg...

    allora come al solito il mio sito è attaccato dagli ufo o roba simile...

    io non so come mai alcume volte l'ereg funziona e altre no...

    io ho bisogno che faccia questo...

    se il campo è di soli numeri e lettere (no spazio) lo richiamo con $SGET
    se il campo è di numeri, lettere, spazio, @, punto, due punti, punto e virgola, virgola, _, -, àèéòìù, &, !, #, lo richiamo con $SGETSpec
    altrimenti restituisce un errore... tipo un alert js...

    io lo avevo fatto ma poi ho modificato il tutto, sembrava funzionare a puntino, ma alcune volte non funziona... qualcuno saprebbe scrivermi l'espressione che dovrei usare con ereg?

    grazie... :grin:

  2. #2
    Guest

    Predefinito

    Allora, iniziamo con lettere e numeri.

    La sintassi per ereg e' "^[[:alnum:]]$"

    Per cui:
    Codice PHP:
    if (ereg("^[[:alnum:]]$", $variabile)) {
    $SGET = $variabile;
    }
    Per il resto, dovrebbe essere "^[A-Za-z0-9@\.:;,\-_&!#]$" ma non ne sono mica sicuro.

    Fai un po' di prove e vedi se funziona, perche' forse bisogna "Escappare" (blah che neologismo assurdo che mi e' uscito) un po' di cose.


  3. #3
    Guest

    Predefinito

    ah, quindi i caratteri àèéòìù sono compresi nelle lettere, non vengono trattati come caratteri a parte... va be adesso provo... grazie per adesso...

  4. #4
    Guest

    Predefinito

    Credo, te l'ho detto non so.

    Comunque mi trovi qui (o in pvt): tienimi informato che c'e' sempre da imparare con le espressioni regolari :grin:

  5. #5
    Guest

    Predefinito

    non mi accetta questo carattere -

  6. #6
    Guest

    Predefinito

    a me serve controllare i dati che immettono... quindi mi serve ereg... non accetta soltanto il -... come posso fare?

  7. #7
    Guest

    Predefinito

    Mettilo come primo carattere della lista:

    ^[-A-Za-z0-9@\.:;,_&!#]$

    Altrimenti puoi sempre specificare i codici ascii di ogni carattere. Funziona persino con il sistema unicode (io lo usavo per riconoscere lettere arabe, che sono sopra l'ascii 1530)
    Se non funziona come ti ho detto ti cerco la sintassi per i codici ascii

  8. #8
    Guest

    Predefinito

    adesso sembra funzionare... ma come faccio a mettergli anche gli accapo? cioè se un testo va a capo non me lo passa... mi da errore... che modifiche devo fargli?

  9. #9
    Guest

    Predefinito

    http://www.regularexpressions.info/reference.html
    \n e \r mentre \t per il tab.

    Non voglio assolutamente polemizzare, ma se ogni volta che comlichiamo l'espressione poi ti viene in mente che vuoi aggiungerci ancora qualcosa, non potresti fare un'espressione al contrario?

    Invece che riconoscere le 100 cose che vuoi che siano presenti, perche' non provi a fargli riconoscere le 4 o 5 cose che non vuoi che ci siano?

    Ad ogni modo si puo' fare quasi tutto con ereg, quindi se quella che vuoi e' un'espressione che riconosca tutte queste cose, piano piano la componiamo

  10. #10
    Guest

    Predefinito

    si, sarebbe molto più facile, e allora come facciamo a fare al contrario?

  11. #11
    Guest

    Predefinito

    Se abbiamo finito con i ritorno a capo non hai piu' da modificare niente, altrimenti inizia a fare una lista dei caratteri che NON vuoi.

  12. #12
    Guest

    Predefinito

    allora non voglio xkè sono dispettosi:

    '
    $
    |

    mi sa che se facevamo così da subito ci risparmiavamo molti grattacapi...

    ps: non è che mi faresti un txt mettendomi i caratteri che posso includere e in che modo li devo scrivere... ho provato http://www.regularexpressions.info/ ma non ci ho capito molto tnx

  13. #13
    Guest

    Predefinito

    anzi, quali sono i caratteri pericolosi (sql injection)? così li levo...

  14. #14
    Guest

    Predefinito

    Per la sql injection sono pericolosi molti piu' caratteri, inoltre non c'e' mica solo la sql come injection.

    Diciamo ad esempio (ma non sono sicuramente tutti):

    : / \ ' " ( ) { } - > < ? $ % |

    personalmente tendo a restringere i parametri a puro testo, usando l'espressione ^[[:alnum:]]$

    Esclusi ovviamente i parametri in POST che possono contenere ad esempio testi formattati (e quindi contenenti anche punteggiatura e altre cose).

    Se vuoi fare una prova di javascript-injection, scriviti una pagina tipo:
    Codice PHP:
    <?php
    echo "Ciao $_GET[nome] !";
    ?>
    e poi prova a passargli ?nome=javascript:alert(document.compatMode);

  15. #15
    Guest

    Predefinito

    a me esce questo



    dove sta il problema?

  16. #16
    Guest

    Predefinito

    comunque come funziona l'ereg al contrario? dove metto i dati che non voglio?

  17. #17
    Guest

    Predefinito

    Sorry errore mio: intendevo passagli

    ?nome=<script>javascript:alert(document.compatMode );</script>

    io il javascript non lo so tanto bene.

    Se devi riconoscere anche solo un'occorrenza di un carattere ti serve una sintassi un po' diversa: ora sono di fretta ma appena posso ci studio, altrimenti prova ad usare quella fatta fin'ora (a proposito: funziona?)

    Puoi anche fare un'altra cosa: invece che usare ereg puoi usare ereg_replace e sostituire tutti i caratteri "pericolosi" con qualcosa di innocuo. Il bello e' che ti basta fare due array tipo:
    Codice PHP:
    $a[0] = "\";
    $b[0] = "barra";
    $a[1] = "\ " ";
    $b[1] = "virgolette";
    e poi passarli a ereg_replace e lui scorrera' in parallelo gli array sostituendo ad ogni occorrenza di $a[0] il contenuto di $b[0] ecc...
    io lo uso per convertire il bbcode

  18. #18
    Guest

    Predefinito

    ah, interessante adesso provo.... quindi faccio un ereg_replace quando mettono i dati e ad esempio ' lo trasformo in § e poi quando lo tiro fuori dal db lo faccio al contrario da § a '.... bhe bella pensata adesso provvedo a scrivermi il codicino ad hoc...

  19. #19
    Guest

    Predefinito

    Puoi anche semplicemente convertirli nelle rispettive entities

  20. #20
    Guest

    Predefinito

    in che senso? parla come mangi

  21. #21
    Guest

    Predefinito

    Convertire ad esempio:
    " &# 34;
    ' &# 39;

    Vedi qui: http://www.w3schools.com/html/html_asciiref.asp

  22. #22
    Guest

    Predefinito

    Puoi usare anche la semplice funzioncina strtr

    Codice:
    <?php
    $trans = array("hello" => "hi", "hi" => "hello");
    echo strtr("hi all, I said hello", $trans);
    ?>
    E ti scambia tutte le occorrenze definite nell'array $trans.

  23. #23
    Guest

    Predefinito

    grazie per il consiglio... adesso provo...

  24. #24
    Guest

    Predefinito

    ma non c'è qualche funzione che converta automaticamente questi caratteri in catatteri innoqui?

  25. #25
    Guest

    Predefinito

    come posso fare a farglielo fare in automatico quando faccio una query al db?

  26. #26
    Guest

    Predefinito

    Creati una funzione che restituisca la stringa di partenza "ripulita" dei caratteri malevoli.

    Poi, se hai un array, puoi usare la funzione array_map() che consente di applicare una funzione (anche scritta da te) a tutti gli elementi di un array.

  27. #27
    Guest

    Predefinito

    come posso farla... non riesco a capire come combinare il codice...

  28. #28
    Guest

    Predefinito

    Allora, fino a scrivere una funzione che restituisca la stringa "pulita" ci sei?

    Qualcosa che funzioni tipo:

    $pulita = ripulisci($originale);

    Ora, se hai i dati in un array, tutto quello che devi fare e' scrivere:

    $array_pulito = array_map('ripulisci', $array_originale);

    Ad esempio lo puoi usare per l'array $_GET o $_POST o quello che ti pare.

  29. #29
    Guest

    Predefinito

    quindi la funziona verrebbe così?

    Codice PHP:
    function coverti_sicurezza($valore) {
    $valore_pulito = htmlentities($valore);
    return
    $valore_pulito;
    }

    funcition riconverti_sicurezza($valore) {
    $valore_sporco = html_entity_decode($valora);
    return
    $valore_sporco;
    }
    e poi

    Codice PHP:
    $array_pulito = array_map('converti_sicurezza', $array_originale);
    $array_sporco = array_map('riconverti_sicurezza', $array_originale);
    così?
    Ultima modifica di neoscript : 07-08-2004 alle ore 11.23.15

  30. #30
    Guest

    Predefinito

    Esatto!

    Sto andando a memoria ma mi pare proprio cosi'

Pagina 1 di 2 12 UltimoUltimo

Regole di scrittura

  • Non puoi creare nuove discussioni
  • Non puoi rispondere ai messaggi
  • Non puoi inserire allegati.
  • Non puoi modificare i tuoi messaggi
  •