Sono quasi sicuro che si possa fare, ma non riesco a trovare niente che mi spieghi come.. il mio problema è questo:
è possibile, tramite codice php, creare nuove pagine??
spero di essermi spiegato..
Sono quasi sicuro che si possa fare, ma non riesco a trovare niente che mi spieghi come.. il mio problema è questo:
è possibile, tramite codice php, creare nuove pagine??
spero di essermi spiegato..
"file.php" va sostituito con il nome del file da creare.Codice PHP:
<?
$apri=@fopen("file.php","r+");
@fwrite($apri,"testo da scrivere nel file");
?>
Sta cosa m'interessa...
@ probid: come potrei fare se volessi fare il tutto da un form???
...thank's!
Dovresti creare una nuova pagina in php nella quale inserire questo codice (es. "nuovofile.php").
Successivamente potresti mettere come action del form "nuovofile.php".
@ probid: non ho ben capito cosa intendi
1.Crea la pagina nuovofile.php e inserisci al suo interno il codice:
2.Nella pagina che contiene il form inserisci:Codice PHP:
<?
$apri=@fopen("file.php","r+");
@fwrite($apri,"testo da scrivere nel file");
?>
Codice HTML:<form action="nuovofile.php">
il form lo faccio così:
è correto?Codice HTML:<form action="nuovofile.php"> <textarea rows="10" cols="10"> TESTO </textarea> <input type="submit" value="Insert"> </form>
Fai così:Originalmente inviato da TurkoSoft
Nuovofile.php:Codice HTML:<form action="nuovofile.php" method="POST"> <textarea rows="10" cols="10" name="testo"> TESTO </textarea> <input type="submit" value="Insert"> </form>
Codice PHP:
<?
$apri=@fopen("file.php","r+");
@fwrite($apri,$_POST['testo']);
?>
hmmm....dovresti dare un nome alla textarea (e a tutti gli input del forum)....sennò php non la può recuperare....esempio:
poi in nuovofile.php....Codice HTML:<form action="nuovofile.php" method="post"> <textarea name="testo" rows="10" cols="10"> TESTO </textarea> <input type="submit" name="vai" value="Insert"> </form>
dovrebbe andare...fammi sapereCodice PHP:
<?
$vai=$_POST["vai"];
$testo=$_POST["testo"]; //...ovviamente avanti così x tutti gli input del forum
if ($vai) { //verifichiamo che la pagina sia stata chiamata veramente dal form
$apri=@fopen("file.php","r+");
$fwrite=fwrite($apri,"$testo");
if ($fwrite) {echo "Il testo è stato inserito!";} else { echo "Ci sono stati dei problemi in fase di scrittura";}
}
else { echo "Richiesta non corretta!"; }
?>
Scusate... Il form traduce ogni " con \" e ogni ' con \'. Per rimediare a questa cosa (che provoca un errore in PHP e un qualcosa assai spiacevole in HTML), si portebbe modificare così:
Provato e funziona.Codice PHP:
<?
$vai=$_POST["vai"];
$testo=$_POST["testo"]; //...ovviamente avanti così x tutti gli input del forum
if ($vai) { //verifichiamo che la pagina sia stata chiamata veramente dal form
$apri=@fopen("file.php","r+");
$testo=stripslashes($testo);
$fwrite=fwrite($apri,"$testo");
if ($fwrite) {echo "Il testo è stato inserito!";} else { echo "Ci sono stati dei problemi in fase di scrittura";}
}
else { echo "Richiesta non corretta!"; }
?>
EDIT: migliorato come ha detto jostock...
Ultima modifica di tryphpnuke : 12-04-2006 alle ore 17.13.37
...oppure usare stripslashes()!
Vero... funziona ugualmente.
piccola informazione: le slash vengono aggiunte perchè il server è configurato con il magic_quotes_gpc settato su on. maggiori info su: http://www.phpnews.it/content/view/130/86/
Una cosa... ma nel modo che abbiamo scritto fino ad ora il codice NON PUO' CREARE IL FILE DA ZERO, ma lo sovrascrive! Per farglielo creare (e mandare un errore se il file esiste già), bisogna cambiare così questa riga:
EDIT: in questo modo, magari, possiamo anche scegliere dal form il nome del file... ;)Codice PHP:
$apri=@fopen("file.php","r+");
// Cambiare in:
$apri=@fopen("file.php","x+") or die("File già esistente!");
Ultima modifica di tryphpnuke : 12-04-2006 alle ore 18.26.10
Oppure:Originalmente inviato da tryphpnuke
Codice PHP:
<?
if (file_exists("file.php")) {
echo "il file esiste già e non può essere creato";
} else {
$apri=@fopen("file.php","r+");
$fwrite=@fwrite($apri,"$testo");
}?>
No probid, perché 'r+' non gli permette di creare il file!
Quello che hai scritto tu andrebbe bene con 'a' o 'a+' (http://it.php.net/fopen/). (Io lo so solo perché sto testando in tempo reale, sai, mica pensare che finalmente ci capisca qualcosa di PHP!!! )Originalmente inviato da php.net
Ultima modifica di tryphpnuke : 12-04-2006 alle ore 18.58.57
Azz...
è vero...
In effetti lo sapevo che r e r+ non danno la possibilità di creare nuovi files quando ho postato il codice nn mi sn ricordato (è da un'pò che non traffico più cn questo tipo di scripts )
Vabbè...significa che questo thread è servito anche a me per ricordare qualcosa...
Comunque...nn risp sennò andiamo troppo OT...
Ecco allora lo script corretto:
Codice PHP:
<?
if (file_exists("file.php")) {
echo "il file esiste già e non può essere creato";
} else {
$apri=@fopen("file.php","a+");
$fwrite=@fwrite($apri,"$testo");
}?>
Comunque il metodo migliore credo che sia W.Originalmente inviato da probid
Mattia vi manda a FunCool - Matriz - Directory Gogol - Sfondo rosso per la Birmania
«Tu mi dai fastidio perché ti credi tanto un Dio!» «Bè, dovrò pur prendere un modello a cui ispirarmi, no?» Woody Allen
Per la cronaca:
Scusami funcool, ma questo vuol dire che se il file esiste già (e non abbiamo messo quel controllo 'if (file_exists(blabla.php))' che diceva probid) il file te lo cancella tutto direttamente e ci riscrive solo quello che gli hai detto! Può darsi che sia migliore e più veloce a stare alle annotazioni sulla funzione, ma è anche più rischioso!Originalmente inviato da php.net
Lo so, ma infatti intendo dopo aver usato i vari controlli che avete scritto voi.Originalmente inviato da tryphpnuke
Mattia vi manda a FunCool - Matriz - Directory Gogol - Sfondo rosso per la Birmania
«Tu mi dai fastidio perché ti credi tanto un Dio!» «Bè, dovrò pur prendere un modello a cui ispirarmi, no?» Woody Allen
raga, non ci ho capito + niente...potreste rielencarmi tutti gli script che devo inserire???
...grazie 10000000
PS: ho visto solo adesso le risp. al post!
Io ti suggerisco di fare così:
Codice PHP:
<?
if (file_exists("file.php")) {
echo "il file esiste già e non può essere creato";
} else {
$apri=fopen("file.php","w");
fwrite($apri,"$testo");
fclose($apri);
}
?>
Mattia vi manda a FunCool - Matriz - Directory Gogol - Sfondo rosso per la Birmania
«Tu mi dai fastidio perché ti credi tanto un Dio!» «Bè, dovrò pur prendere un modello a cui ispirarmi, no?» Woody Allen
Io invece ti suggerisco questo (ho fatto qualche piccola modifica al form, in modo che puoi anche scegliere il nome e l'estensione del file...):
E poi questo:Codice HTML:<form name="createfilefromphp" method="POST" action="creafile.php"> Nome pagina :<br> <input type="text" name="filename"> <select size=1 name="ext"> <option value=".php" selected>.PHP</option> <option value=".htm">.HTM</option> <option value=".html">.HTML</option></select><p> Codice da inserire:<br> <textarea name="code" cols="50" rows="10"></textarea><p> <input type="submit" name="save" value="Salva"></form>
EDIT: testato e ritestato: è garantito che funziona al 100% (beh... facciamo 99%...)Codice PHP:
<?
if ((!$_POST[save]) OR (!$_POST[filename]) OR (!$_POST[ext]) OR (!$_POST[code])) {
echo "Errore: campi non compilati o modulo non inviato.";
} else {
$_POST[code] = stripslashes($_POST[code]); // stripslashes(); elimina gli slash messi in più dal php...
$crea_file = @fopen("$_POST[filename]$_POST[ext]","x+") or die("File già esistente!");
// Gli ho detto di creare il file e, se esiste già, dare un errore, inoltre lo salvo con l'estensione selezionata.
$scrivi_in_file = fwrite($crea_file,"$_POST[code]");
if ($scrivi_in_file) {
echo "File creato!";
} else {
echo "Problemi in fase di scrittura.";
}
}
?>
Ultima modifica di tryphpnuke : 12-04-2006 alle ore 19.47.39
Consiglio:
non ti conviene far creare agli utenti pagine con estensione.php perchè potrebbero causarti guai!
Ciao!
@ tryphpnuke: grazie 10000...ma se io volessi far aprire sto file creato (ad un utente esterno ke lo crea) come faccio? inoltre vorrei mettere 1 opzione di eliminazione del file...
...credo di essermi spiegato bene
Per aprirlo potresti fare che, siccome ti crei ste pagine in una cartella predefinita da te, fai un echo del link...così:
Per eliminare un file usa unlinkCodice PHP:
echo "<a href='http://turkosoft.altervista.org/cartellascript/$_POST[filename].$_POST[ext]'>$_POST[filename].$_POST[ext]</a>";
Codice PHP:
unlink("file.php");
- come faccio ad impostare nello script una cartella predefinita?Originalmente inviato da Leo91
- ma unlink è solo per il file che scelgo io...io dovrei selezionare il file e cancellarlo...cioè, dovrei visualizzare tutti i file e poi settare quelli che devo cancellare! (come faccio?)
@ Leo91: Il codice corretto (per quanto riguarda il mio script) è:
(Togli il punto tra $_POST[filename] e $_POST[ext], perché c'è già in $_POST[ext]!)Codice PHP:
echo "<a href='http://tuosito.altervista.org/tuadirectory/$_POST[filename]$_POST[ext]'>$_POST[filename]$_POST[ext]</a>";
@ TurkoSoft: per quanto riguarda la cartella predefinita basta fare così:
EDIT: Per quanto riguarda unlink devi fare la lista dei file nella directory e farli stampare allo script. Appena trovo come fare te lo posto, perché adesso non mi ricordo! Altrimenti usalo così:Codice PHP:
$crea_file = @fopen("tuadirectory/$_POST[filename]$_POST[ext]","x+") or die("File già esistente!");
Codice PHP:
unlink("$nomefile$ext") or die("Errore! File non cancellato.");
echo("File cancellato correttamente.");
Ultima modifica di tryphpnuke : 12-04-2006 alle ore 20.25.53
@ tryphpnuke: per quanto riguarda la cartella, avevo risolto da solo (per fortuna )...ma come faccio a far cancellare il file???
Beh, gli metti un link di questo tipo:
Dove $nomefile è il nome della variabile che mostra il file nella lista. E poi:Codice HTML:<a href="cancellafile.php?nomefile=$nomefile">Cancella questo file</a>
Codice PHP:
<?php
$cancella = unlink($_GET[nomefile]) or die("Errore mentre cancellavo il file $_GET[nomefile].");
echo("File $_GET[nomefile] cancellato correttamente!");
?>