Pagina 1 di 3 1 2 3 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 28
  1. #1

    come eseguire uno script creato da altro script?

    Cercherò di illustrare il mio problema:
    in una pagina php amministro il contento principale (incluso), mediante questo switch:

    switch($p) {
    case "home": include ("$dirScelta/0_home.php");
    break;
    case "cont_a": include ("$dirScelta/1_cont_a.php");
    break;
    case "cont_b": include ("$dirScelta/2_cont_b.php");
    break;
    case "cont_c": include ("$dirScelta/3_cont_c.php");
    break;
    default: include ("$dirScelta/0_home.php"); break;
    }

    la parte di codice sopra deve essere ricreata dinamicamente in base al numero di contenuti presenti in una cartella.
    Ho provato con questo:

    echo "<?php\n";//apertura php
    echo "switch(\$p) {\n";
    while (list(, $links) = each ($arr_str_comp)) { //$arr_str.. contiene l'elenco dei file di contenuto in ($dirScelta)

    $nomeLinkPUL=str_replace("index.php?p=","",$links) ; //$p è il nome ridotto del file passato via get dal menu dei links
    $nomeLinkPUL=str_replace(".php","",$nomeLinkPUL);
    $nomeLinkPUL=ereg_replace("[0-9]_","",$nomeLinkPUL);

    echo "case \"$nomeLinkPUL\": include (\"$dirScelta/$links\");\n"; //$nomeLinkPUL è il nome del file pulito come da menu
    echo "break;\n";
    };
    echo "default: include (\"$dirScelta/0_home.php\"); break;\n";
    echo "};\n";
    echo "?>\n";//chiusura php

    in effetti lo script viene creato e se copiato in un altra pagina funziona correttamente.
    Il problema è che questo viene stampato nel codice html ma non eseguito (naturalmente).
    Esiste un modo per risolvere questo problema?
    Ringrazio infinitamente chiunque abbia un'idea.

  2. #2
    Utente di HTML.it L'avatar di dottwatson
    Registrato dal
    Feb 2007
    Messaggi
    3,012
    hai verificato l' estensione della pagina in cui scrivi lo script? una svista magari... pagina.php
    Non sempre essere l'ultimo è un male... almeno non devi guardarti le spalle

    il mio profilo su PHPClasses e il mio blog laboweb

  3. #3
    lo script che viene generato è l'output che mandi all'utente ma che non può essere letto dal php stesso.
    L'alternativa è quella di scrivelo in un file e poi includere il file appena creato.

    Comunque questo tipo di operazione è confusionaria e può generare problemi, prova invece ad usare una funzione.

  4. #4
    Le inclusioni funzionano il problema è che dovrei far funzionare lo switch che invece viene solo stampato nella pagina.
    Se copio il codice html che viene creato la pagina funziona mentre la pagina php non funge, in pratica andrebbe mandata in esecuzione la parte creata con ciclo while ed echo.

  5. #5
    Utente di HTML.it L'avatar di dottwatson
    Registrato dal
    Feb 2007
    Messaggi
    3,012
    Originariamente inviato da loHacker
    lo script che viene generato è l'output che mandi all'utente ma che non può essere letto dal php stesso.
    L'alternativa è quella di scrivelo in un file e poi includere il file appena creato.

    Comunque questo tipo di operazione è confusionaria e può generare problemi, prova invece ad usare una funzione.
    quello che vuoloe dirti LoHacker ( ) è che il codice generato dinamicamente è considerato output, ovvero il risultato di una elaborazione già avvenuta della pagina php!

    segui il suo consiglio, manda il codice in un file e includilo successivamente, anche alla riga dopo magari! è un doppio passaggio....

    sennè crea tutto il codice, lo metti nella variabile $codice

    e poi

    eval($codice);
    Non sempre essere l'ultimo è un male... almeno non devi guardarti le spalle

    il mio profilo su PHPClasses e il mio blog laboweb

  6. #6
    Avevo pensato di scriverlo su file ma non saprei come fare a scrivere quello che è generato dal ciclo.
    per quanto riguarda la funzione se non capisco il procedeimento da fare non posso nemmeno creare la funzione.
    Se pui indicarmi una strada grazie, non voglio codice scodellato sto cercando di imparare.

  7. #7
    Utente di HTML.it L'avatar di dottwatson
    Registrato dal
    Feb 2007
    Messaggi
    3,012
    Originariamente inviato da dottwatson


    sennè crea tutto il codice, lo metti nella variabile $codice

    e poi

    eval($codice);
    Non sempre essere l'ultimo è un male... almeno non devi guardarti le spalle

    il mio profilo su PHPClasses e il mio blog laboweb

  8. #8
    Invece di usare echo per generare il codice, scrivilo in un file:
    Codice PHP:
    <?php

    $codice 
    "codice generato...";

    $fp fopen("nuovoscript.php","w+");  //Crei un nuovo file
    fwrite($fp,$codice);                  //Scrivi il codice generato nel file
    fclose($fp);                        

    include(
    "nuovoscript.php");           //Includi il file appena creato

    ?>

  9. #9
    bisogna che mi studi questo eval. Oggi la mia connessione fa schifo mi ci vogliono due minuti e 30 aggiorna per ricaricare una pagina.
    Credevo però che esistesse un qualche sistema per far ricaricare un codice dal parser php.

  10. #10
    Quoto
    Originariamente inviato da dottwatson

    sennè crea tutto il codice, lo metti nella variabile $codice

    e poi

    eval($codice);

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