Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 11

Discussione: php eval

  1. #1

    php eval

    Ciao a tutti,

    volevo chiedere a voi, visto che non sono riuscito a trovare niente google-ando ...
    mi trovo in una situazione del genere:

    $variabile1=10;
    $variabile2="-2";

    devo ottenere il valore numerico facendo l'operazione matematica 10-2=8. l'operatore matematico puo variare.

    Ho gia provato con eval ma nn sn riuscito a farlo andare, continua a darmi degli errori...

    sapete darmi qualche consiglio ?

    Grazie!

    EDIT:

    avevo provato anche a separare l'operatore matematico dal numero(per poi usare degli if) usando

    strpos($variabile2,'-')
    strpos($variabile2,'+')
    etc...

    pero $operatore=strpos($variabile2,'-') mi continua a dare come risultato il valore "0", anche se $variabile2='-2'

    non riesco proprio ad uscirne fuori...

  2. #2
    ciao,
    prova

    Codice PHP:
    $variabile1=10;
    $variabile2="-2";
    eval(
    "\$sum= $variabile1$variabile2;");
    echo 
    $sum
    Funziona. Non mi piace l'uso dell'eval, forse c'è un modo più elegante per fare quello che devi fare ma dipende dal progetto intero (anche perché devi fare anche un controllo sui dati in input se non vuoi generare un errore).

  3. #3

  4. #4
    visto che la $variabile2 e l'unica che viene presa da una textbox, quindi uno volendo ci puo inserire anche "pippo", c'e un modo veloce per verificare che questa variabile nn contenga lettere e/o altri caratteri che non siano numeri o operatori matematici ?
    in prattica devo solo valutare le espressioni di tipo: 5'-1', 5'+1', 5'/1', 5'*1' e 5'+1%'

    se no mi faccio il vettore di tutti i caratteri ....

  5. #5
    Ti conviene fare tutti i controlli possibili se vuoi usare eval.
    Prova questo codice:

    Codice PHP:
    $db="mydb";
    $pass="mypass";
    define(GLOBALPASS,"#12b3^^'1j2nb");
    $variabile1=10;
    $variabile2="; print_r(\$GLOBALS); print_r(get_defined_constants())";

    eval(
    "\$sum= $variabile1$variabile2;");
    echo 
    $sum
    e vedi se ancora vuoi usare l'input di un form in un eval =)

  6. #6
    come dicono in inglese...OMFG )

    allora quale altra alternativa posso prendere in considerazione per ottenere lo stesso risultato ?

  7. #7
    Utente di HTML.it L'avatar di bubi1
    Registrato dal
    Dec 2009
    Messaggi
    1,230
    forse mi mi sfugge qualcosa, ma..

    Perche' non fai semplicemente $sum=$variabile1+$variabile2 ?

  8. #8
    Non ho mai affrontato il problema.. e non è di poco conto.

    Dipende dal grado di sicurezza.
    L'eval lo puoi pure usare ma fai un controllo con una regexp della "bontà" dell'input.

    (deve contenere solo numeri più "+*/%-")

    E' già qualcosa. Poi non so... meglio aspettare qualcuno che abbia già affrontato il problema =)

  9. #9
    Originariamente inviato da bubi1
    forse mi mi sfugge qualcosa, ma..

    Perche' non fai semplicemente $sum=$variabile1+$variabile2 ?
    perché $variabile2 può anche contenere un * o un / mi semrba di aver capito. Non fa solo somme.

  10. #10
    Utente di HTML.it L'avatar di bubi1
    Registrato dal
    Dec 2009
    Messaggi
    1,230
    Originariamente inviato da chumkiu
    perché $variabile2 può anche contenere un * o un / mi semrba di aver capito. Non fa solo somme.
    a, ecco, non avevo letto tutto, scusate

    Si, la cosa piu' facile e' eval, con un filtraggio preventivo dei dati.. ma non funzionera' il calcolo con le percentuali... In quel caso bisogna fare qualche specie di parsing avanzato della stringa :master:

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