Visualizzazione risultati 1 fino 4 di 4

Discussione: Eseguire codice PHP memorizzato in MySQL

  1. #1
    L'avatar di miki92
    miki92 non è connesso AlterGuru 2500
    Data registrazione
    21-04-2007
    Residenza
    Procida (NA)
    Messaggi
    4,233

    Predefinito Eseguire codice PHP memorizzato in MySQL

    Buonasera,
    oggi mi ritrovo con il problema di dover eseguire del codice PHP memorizzato in un database MySQL.

    Il codice viene visualizzato (in phpMyAdmin) così:

    Codice PHP:
    <p style="text-align:center">Benvenuti su MessenWorld.</p>

    <?php

    echo date("d/m/Y H:i:s");

    ?>
    Ciò vuol dire che è stato inserito proprio in questo modo.

    Ora quando vado ad estrarre i dati filtro la variabile tramite eval ma purtroppo mi viene restituito questo errore:

    Parse error: syntax error, unexpected '<' in C:\www\index.php(35) : eval()'d code on line 1
    Il codice in uso è:

    Codice PHP:
    $pag = mysql_fetch_array($spm);

    ob_start();
    eval(
    $pag['body']);
    $body = ob_get_contents();
    ob_end_clean();
    Soluzioni?
    Apprezzi l'aiuto? Offrimi un caffè!

  2. #2
    L'avatar di alemoppo
    alemoppo non è connesso Staff AV
    Data registrazione
    24-08-2008
    Residenza
    PU / BO
    Messaggi
    22,691

    Predefinito

    perché è come se facessi
    Codice PHP:
    <?php
    <p style="text-align:center">Benvenuti su MessenWorld.</p>

    <?
    php

    echo date("d/m/Y H:i:s");

    ?>
    ?>
    ...giustamente questo:
    Codice PHP:
    <p style="text-align:center">Benvenuti su MessenWorld.</p>
    è errato a livello PHP. Dovresti filtrare l'HTML puro dal vero php

    EDIT:

    Sulla documentazione, giustamente, suggeriscono questa soluzione:

    Codice PHP:
    <?php

    eval("?>".$pag['body']."<?");

    ?>
    Ciao!
    Ultima modifica di alemoppo : 09-05-2010 alle ore 18.10.03

  3. #3
    L'avatar di javascripter
    javascripter non è connesso Moderatore
    Data registrazione
    14-02-2010
    Messaggi
    1,114

    Predefinito

    Stai usando eval in modo sbagliato, questa funzione accetta soltanto codice php (senza tag):
    Codice PHP:
    eval("echo 'ciao';");
    Comunque sia esiste una soluzione :P!
    Codice PHP:
    $body = str_replace('<?php', '<?', $pag['body']); // questa soluzione funziona soltanto con gli short tags!

    eval('
    ?>' . $body);
    La spiegazione la trovi qui: http://php.net/manual/en/function.eval.php
    Ultima modifica di javascripter : 09-05-2010 alle ore 18.10.35

  4. #4
    L'avatar di miki92
    miki92 non è connesso AlterGuru 2500
    Data registrazione
    21-04-2007
    Residenza
    Procida (NA)
    Messaggi
    4,233

    Predefinito

    Vi ringrazio entrambi per le risposte, ho utilizzato questo codice che ho notato funzionare:

    Codice PHP:
    <?php

    eval("?>".$pag['body']."<?");

    ?>
    Comunque è strano ciò perchè in altre pagine utilizzo eval come scritto sopra e non ho problemi.

    Bah...sarà che sto scrivendo righe e righe di PHP da 5 ore senza sosta!?
    Apprezzi l'aiuto? Offrimi un caffè!

Regole di scrittura

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