Visualizzazione risultati 1 fino 11 di 11

Discussione: Aiuto per script php

  1. #1
    Guest

    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.

  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
    Guest

    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.

  4. #4
    Guest

    Predefinito

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

  5. #5
    Guest

    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.

  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,324

    Predefinito

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

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

  8. #8
    Guest

    Predefinito

    E come dovrei impostare la funzione htmlspecialchars()?

  9. #9
    Guest

    Predefinito

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

  10. #10
    Guest

    Predefinito

    Grazie mille!

  11. #11
    Guest

    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>

    <?
    }
    ?>

Regole di scrittura

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