Visualizzazione dei risultati da 1 a 6 su 6

Discussione: eval()

  1. #1
    Utente di HTML.it
    Registrato dal
    Nov 2001
    Messaggi
    274

    eval()

    supponendo che:
    $var = 'echo("asd"); return;';

    e che all'interno di uno script abbia:
    eval($var);

    return (all'interno di $var) mi fa terminare l'eval, esiste un modo per far si che venga terminato lo script all'interno del quale è richiamata l'eval e non l'eval stessa?
    Progeny

  2. #2
    Utente di HTML.it L'avatar di kuarl
    Registrato dal
    Oct 2001
    Messaggi
    1,093

    Re: eval()

    Originariamente inviato da Progeny
    supponendo che:
    $var = 'echo("asd"); return;';

    e che all'interno di uno script abbia:
    eval($var);

    return (all'interno di $var) mi fa terminare l'eval, esiste un modo per far si che venga terminato lo script all'interno del quale è richiamata l'eval e non l'eval stessa?
    eval('exit();');

  3. #3
    Utente di HTML.it
    Registrato dal
    Nov 2001
    Messaggi
    274
    purtroppo non posso usare exit perchè terminerebbe l'esecuzione di TUTTO compreso uno script che richiama lo script il quale richiama l'eval
    a quanto pare l'unica soluzione sarebbero le 5 righe di hardcoding... è un po` sux... ma funziona
    Progeny

  4. #4
    Utente bannato
    Registrato dal
    Jun 2003
    Messaggi
    3,657
    sicuramente quello che hai postato è un esempio, ma vorrei capire in che cotnesto è usato. Si secca mostrare un po' del tuo codice originale?

  5. #5
    Utente di HTML.it
    Registrato dal
    Dec 2005
    Messaggi
    434
    e perchè utilizzare eval per un return?

    eval("echo(\"asd\");");
    return;

    tanto semplice...

  6. #6
    Utente di HTML.it
    Registrato dal
    Nov 2001
    Messaggi
    274
    Originariamente inviato da FinalFantasy
    sicuramente quello che hai postato è un esempio, ma vorrei capire in che cotnesto è usato. Si secca mostrare un po' del tuo codice originale?
    il codice "originale" non c'è più, ho sostituito con qualche riga di hardcoding, ti spiego il contesto.
    ho scritto per una mia community un cms, ora ho avuto bisogno di restringere l'accesso ad alcuni moduli, solo agli utenti registrati, quindi avevo scritto una funzione add_rule($type) { ... } e quello che ritorna la funzione veniva eseguito dall'eval() in una pagina. La funzione add_rule si trova in un file funcs.php che è incluso nel prepand.

    quindi nel codice della pagina che mi visualizza il profilo degli utenti registrati avevo:

    add_rule('logged');
    che eseguiva qualcosa di simile a:

    if(!IsLogged())
    {
    $error_html = file_get_contents($errors_path . 'access_denided.html');
    $return = 'echo("'.$error_html.'"); return;';
    return $return;
    }

    in modo che quando richiamassi eval(add_rule('logged')); nella pagine del profili, se l'utente non è loggato, mostra l'errore e termina l'esecuzione della pagina che contiene l'eval.
    non posso usare l'exit perchè altrimenti non vengono richiamati altri script PHP che contribuiscono al "rendering" del layout

    Progeny

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.