Visualizzazione risultati 1 fino 11 di 11

Discussione: Aiuto per script php

  1. #1
    server8 non è connesso Utente
    Data registrazione
    15-09-2008
    Messaggi
    103

    Predefinito Aiuto per script php

    Ho un problemino. Ho creato uno script php di amministrazione che dopo aver inserito una password mi permetta di visualizzare un textarea con il codice del file index.php e di modificarlo.
    Però questo script mi fa visualizzare solo i primi 1024 caratteri. Come posso impostarlo in modo che legga tutto il codice.
    Ecco lo script:
    Codice PHP:
    <?

    // Script: Amministrazione Sito
    // by Portale Online
    // www.portaleonline.tk

    // Configurazione
    $password="Password"; //imposta la password di amministrazione
    $titolo="Titolo di Prova"; //imposta il titolo per la pagina

    //imposto la variabile semplificata
    $pwd=$_POST['pwd'];

    if (
    $pwd==$password){

    //recupero le variabili
    $prima=$_POST['ver'];
    $codice=$_POST['codice'];

    //controllo se la variabile $prima è vuota
    if($prima==''){

    //specifico il file che voglio aprire
    $file="index.php";

    //apro il file in modalità lettura
    $open=fopen($file,'r');

    //specifico il parametro in modo che visualizzi il codice originale (ERRORE)
    $cont=fread($open,1024);

    //chiudo il file
    fclose($open);
    ?>

    <html>
    <head>
    <title><?=$titolo?></title>
    </head>
    <body>
    <center>
    <h1><?=$titolo?></h1>
    <form name="modifica" method="post">
    <textarea name="codice" rows="35" cols="120"><?=$cont?></textarea>
    <br>
    <input type="submit" value="Modifica pagina" name="ver">
    </center>
    </form>
    </body>
    </html>

    <?

    //se invece la variabile $prima non è vuota aggiorno il file
    }else{

    //specifico il file che voglio aprire
    $file="index.php";

    //apro il file in modalità scrittura
    $open=fopen($file,'w');

    //scrivo il file
    fwrite($open,$codice);

    //chiudo il file
    fclose($open);

    //reindirizzo alla pagina principale
    header("Location: index.php");
    }

    }else{
    ?>

    <html>
    <head>
    <title><?=$titolo?></title>
    </head>
    <body>
    <center>
    <h1><?=$titolo?></h1>
    <form method="POST">
    <b>Password:</b>
    <input type=password name=pwd>
    <input type=submit value="Invia">
    </form>
    </center>
    </body>
    </html>

    <?
    }
    ?>
    O scritto tra parentesi ERRORE nel codice dove avevo impostato il parametro che leggeva solo i primi 1024 caratteri.
    carlino1994 - Moderatore e Modder di phpBB.it

  2. #2
    Guest

    Predefinito

    con il comando

    Codice PHP:
    $cont=fread($open,1024);
    tu prendi i primi 1024 caratteri per prendere tutto il file ti conviene fare cosi :

    Codice PHP:
    $cont = implode('', file ($file));
    la funzione file crea un array dove mette tutte le righe e implode le riunisce tutte :)

  3. #3
    server8 non è connesso Utente
    Data registrazione
    15-09-2008
    Messaggi
    103

    Predefinito

    Grazie mille, ma ora è sorto un altro problema.
    Nella textarea visualizzo solo una parte del codice sorgente il resto è stato interpretato come codice html, quindi viene eseguito e non mostrato il codice.
    carlino1994 - Moderatore e Modder di phpBB.it

  4. #4
    Guest

    Predefinito

    un pezzo del codice entra nella textarea e una aprte viene visualizzata sotto interpretata dal browser?

  5. #5
    server8 non è connesso Utente
    Data registrazione
    15-09-2008
    Messaggi
    103

    Predefinito

    Si. Forse il problema è legato al fatto che nella pagina che il codice che viene aperto nella textare contenga un form con un altra textarea.
    carlino1994 - Moderatore e Modder di phpBB.it

  6. #6
    Guest

    Predefinito

    Controlla che le textarea siano tutte chiuse bene potrebbero essere quelle.

  7. #7
    L'avatar di dreadnaut
    dreadnaut non è connesso Super Moderatore
    Data registrazione
    22-02-2004
    Messaggi
    6,253

    Predefinito

    ma se il testo contiene la stringa </textarea>, sei da capo

    prima di darlo in output, passalo attraverso htmlspecialchars().

  8. #8
    server8 non è connesso Utente
    Data registrazione
    15-09-2008
    Messaggi
    103

    Predefinito

    E come dovrei impostare la funzione htmlspecialchars()?
    carlino1994 - Moderatore e Modder di phpBB.it

  9. #9
    Guest

    Predefinito

    Semplicemente così:
    Codice PHP:
    $cont=htmlspecialchars($cont);
    Il tutto naturalmente prima di stamparlo.

  10. #10
    server8 non è connesso Utente
    Data registrazione
    15-09-2008
    Messaggi
    103

    Predefinito

    Grazie mille!
    carlino1994 - Moderatore e Modder di phpBB.it

  11. #11
    server8 non è connesso Utente
    Data registrazione
    15-09-2008
    Messaggi
    103

    Predefinito

    Scusa ma ora si è sorto un altro problema.
    Quando clicco sul pulsante Modifica pagina non salva le modifiche.
    Vi posto l'attuale codice:

    Codice PHP:
    <?

    // Script: Amministrazione Sito
    // by Portale Online
    // www.portaleonline.tk

    // Configurazione
    $password="Password"; //imposta la password di amministrazione
    $titolo="Titolo di Prova"; //imposta il titolo per la pagina


    ?>

    <?

    //imposto la variabile semplificata
    $pwd=$_POST['pwd'];

    if (
    $pwd==$password){

    //recupero le variabili
    $prima=$_POST['ver'];
    $codice=$_POST['codice'];

    //controllo se la variabile $prima è vuota
    if($prima==''){

    //specifico il file che voglio aprire
    $file="index.php";

    //apro il file in modalità lettura
    $open=fopen($file,'r');

    //specifico il parametro in modo che visualizzi il codice originale
    $cont = implode('', file ($file));
    $cont=htmlspecialchars($cont);


    //chiudo il file
    fclose($open);
    ?>

    <html>
    <head>
    <title><?=$titolo?></title>
    </head>
    <body>
    <center>
    <h1><?=$titolo?></h1>
    <form name="modifica" method="post" action="amministrazione.php">
    <textarea name="codice" rows="35" cols="120"><?=$cont?></textarea>
    <br>
    <input type="submit" value="Modifica pagina" name="ver">
    </center>
    </form>
    </body>
    </html>

    <?

    //se invece la variabile $prima non è vuota aggiorno il file
    }else{

    //specifico il file che voglio aprire
    $file="index.php";

    //apro il file in modalità scrittura
    $open=fopen($file,'w');

    //scrivo il file
    fwrite($open,$codice);

    //chiudo il file
    fclose($open);

    //reindirizzo alla pagina principale
    header("Location: index.php");
    }

    }else{
    ?>

    <html>
    <head>
    <title><?=$titolo?></title>
    </head>
    <body>
    <center>
    <h1><?=$titolo?></h1>
    <form method="POST">
    <b>Password:</b>
    <input type=password name=pwd>
    <input type=submit value="Invia">
    </form><br><br>

    <? if (isset($codice)) { ?>
    <h3>Modifiche apportate con successo!</h3>
    <? } ?>

    </center>
    </body>
    </html>

    <?
    }
    ?>
    carlino1994 - Moderatore e Modder di phpBB.it

Regole di scrittura

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