Visualizzazione dei risultati da 1 a 8 su 8
  1. #1

    Eseguire codice PHP all'interno dei codice HTML contenuto in una variabile PHP

    Ciao a tutti.
    Ho realizzato i seguenti file:

    pannello.html
    codice:
    <!doctype html>
    <html>
    <head>
    <meta charset="utf-8">
    <title>Documento senza titolo</title>
    </head>
    
    <body>
    Ciao <?php echo $username ?>, benvenuto nel pannello di controllo!
    </body>
    </html>
    index.php
    codice:
    <?php
    $view = file_get_contents("pannello.html");
    $username = "PAOLO";
    echo $view;        
    ?>
    L'output è il seguente:
    codice:
    Ciao , benvenuto nel pannello di controllo!
    Come faccio ad eseguire il codice PHP dentro la variabile $view ed inserire l'output nella stessa variabile?

  2. #2
    Utente di HTML.it L'avatar di .Kurt
    Registrato dal
    Jul 2007
    Messaggi
    654
    Quello che vorresti fare è utilizzare eval: http://php.net/manual/it/function.eval.php
    Quello che dovresti fare è qualcosa tipo:
    codice:
    $username = "PAOLO";
    require "pannello.html";

  3. #3
    Faccio vedere l'esempio completo di cosa voglio realizzare:

    pannello.html
    codice:
    <!doctype html>
    <html>
    <head>
    <meta charset="utf-8">
    <title>Documento senza titolo</title>
    </head>
    
    <body>
    Ciao <?php echo $username ?>, benvenuto nel pannello di controllo!
    </body>
    </html>
    index.php
    codice:
    <?php
    $header = file_get_contents("header.html");
    $view = file_get_contents("pannello.html");
    $footer = file_get_contents("footer.html");
    $username = "PAOLO";
    include("structure.html");
    ?>
    structure.html
    codice:
    <!doctype html>
    <html>
    <head>
    <meta charset="utf-8">
    <title>Documento senza titolo</title>
    </head>
    <body>
    <iframe
        srcdoc=<?php echo $header ?>
        width=100%
        height=100p
        frameborder="2">
    </iframe>
    <iframe
        srcdoc=<?php echo $view ?>
        width=100%
        height=300p
        frameborder="2">
    </iframe>
    <iframe
        srcdoc="<?php echo $footer ?>"
        width=100%
        height=100p
        frameborder="2">
    </iframe>
    </body>
    </html>
    Il risultato grafico che mi aspetto è in allegato.
    Immagini allegate Immagini allegate

  4. #4
    Utente di HTML.it L'avatar di .Kurt
    Registrato dal
    Jul 2007
    Messaggi
    654
    Rinomina structure.html, header.html, etc. in structure.php, ..., etc. Se contiene codice php da fare eseguire -> deve avere l'estensione .php.


    structure.php
    codice:
    <!doctype html>
    <html>
    <head>
    <meta charset="utf-8">
    <title>Documento senza titolo</title>
    </head>
    <body>
    <iframe
        srcdoc="<?php require "header.html"; ?>"
        width=100%
        height=100p
        frameborder="2">
    </iframe>
    <iframe
        srcdoc="<?php require "pannello.php"; ?>"
        width=100%
        height=300p
        frameborder="2">
    </iframe>
    <iframe
        srcdoc="<?php require "footer.php"; ?>"
        width=100%
        height=100p
        frameborder="2">
    </iframe>
    </body>
    </html>

    codice:
    $username = "PAOLO";
    include("structure.php");
    Mi sfugge totalmente il motivo per cui stai utilizzando degli iframe.
    Utilizzare un template engine come twig (http://twig.sensiolabs.org/) può esserti molto utile e ti semplifica la vita.

  5. #5
    L'esempio di codice che mi hai dato non credo sia adatto al problema che sto affrontando.

    Semplicemente voglio creare un sito web che abbia sempre la stessa struttura grafica, ma la parte centrale (view) è variabile.
    Quindi il file index.php devi costruire la pagina in base all'url (sito.dominio/pannello, sito.dominio/home, ecc...).
    I file html che compongono le pagine devono essere indipendenti, nel senso che io potrei in futuro incaricare un grafico di creare le pagine header e footer, poi io mi limiterò ad assemblarle.

    Non credo sia impossibile.

  6. #6
    Utente di HTML.it L'avatar di .Kurt
    Registrato dal
    Jul 2007
    Messaggi
    654
    voglio creare un sito web che abbia sempre la stessa struttura grafica
    Dalla prossima volta, consiglio di iniziare la discussione con il problema che stai cercando di risolvere, e non con la soluzione che ti sei dato da solo, ma che non funziona come vorresti. Altrimenti
    This can lead to frustration by people who are trying to help you solve the problem because by the time you ask about it, the solution that you need help with might not have any obvious connections to the problem that you are trying to solve.
    In questo caso la soluzione al problema si chiama decorating template (chiamato così per via del "decorator pattern", che consiglio di vedere velocemente). Puoi documentarti sul web, e se c'è qualcosa di poco chiaro puoi chiedere qui.
    L'esempio sciocco può essere qualcosa come:

    structure.php

    codice:
    <!doctype html>
    <html>
    <head>
    <meta charset="utf-8">
    <title>Documento senza titolo</title>
    </head>
    <body>
    <!-- HEADER HERE,
    in questo caso non c'è necessità di includerlo separatamente
    ma, nel caso fosse necessario,
    puoi adottare lo stesso procedimento utilizzato per $view qui sotto
    -->
    
    <?php echo $view; ?>
    
    <!-- FOOTER HERE -->
    </body>
    </html>
    index.php

    codice:
    ob_start();
    $username = "PAOLO";
    include "pannello.php";
    $view = ob_get_clean();
    
    require "structure.php";
    pannello.php
    codice:
    Ciao <?php echo $username ?>, benvenuto nel pannello di controllo!

  7. #7
    Dalla prossima volta, consiglio di iniziare la discussione con il problema che stai cercando di risolvere, e non con la soluzione che ti sei dato da solo, ma che non funziona come vorresti.
    Sentivo il dovere di pubblicare il codice da me realizzato perchè in generale non è mai ben vista una richiesta d'aiuto priva del proprio tentativo di soluzione.
    Comunque va bene, seguirò il consiglio.

    Sul pattern non trovo alcun riferimento in rete.

    Le istruzioni ob_start() a ob_get_clean() funzionano, ma visto il loro modo di lavorare, che assomiglia più a un trucchetto da mago (reinderizzare l'output in un buffer) preferirei approfondire l'uso di eval, che ancora non sono riuscito a far funzionare.

    La scelta degli iframe l'avevo fatta perchè mantengono una separazione funzionale delle pagine che compogono la pagina, quindi se ad esempio header e footer hanno elementi div con uguale id allora grazie ad iframe non ho conflitti.

    Sto cercando di elaborare una soluzione "full div based", ma che deve funzionare senza problemi.

  8. #8
    Sono riuscito a realizzare quello che volevo.
    Naturalmente perfezionerò il mio engine nel corso del tempo.

    index.php
    codice:
    <?php
    $username = "PAOLO";
    $header = file_get_contents("header.html");
    $view = file_get_contents("pannello.html");
    $footer = file_get_contents("footer.html");
    $structure = file_get_contents("structure.html");
    eval("\$view = \"$view\";");
    eval("\$structure = \"$structure\";");    
    echo $structure;
    ?>
    structure.html
    codice:
    <!doctype html>
    <html>
    <head>
    <title>Documento senza titolo</title>
    </head>
    <body>
    <div style='border: 7px solid #ff0000'>
    $header
    </div>
    <div style='border: 7px solid #00ff00'>
    $view
    </div>
    <div style='border: 7px solid #0000ff'>
    $footer
    </div>
    </body>
    </html>
    header.html
    codice:
    <!doctype html>
    <html>
    <head>
    <title>Documento senza titolo</title>
    </head>
    
    <body>
    <h1>INTESTAZIONE</h1>
    
    </body>
    </html>
    footer.html
    codice:
    <!doctype html>
    <html>
    <head>
    <meta charset="utf-8">
    <title>Documento senza titolo</title>
    </head>
    
    <body>
    <h1>PIE' DI PAGINA</h1>
    </body>
    </html>
    pannello.html
    codice:
    <html>
    <body>
    Ciao $username, benvenuto nel pannello di controllo!
    </body>
    </html>
    Immagini allegate Immagini allegate

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.