-
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.
-
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 :)
-
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.
-
un pezzo del codice entra nella textarea e una aprte viene visualizzata sotto interpretata dal browser?
-
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.
-
Controlla che le textarea siano tutte chiuse bene potrebbero essere quelle.
-
ma se il testo contiene la stringa </textarea>, sei da capo :mrgreen:
prima di darlo in output, passalo attraverso htmlspecialchars().
-
E come dovrei impostare la funzione htmlspecialchars()?
-
Semplicemente così:
Codice PHP:
$cont=htmlspecialchars($cont);
Il tutto naturalmente prima di stamparlo.
-
-
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>
<?
}
?>