Pagina 1 di 2 12 UltimoUltimo
Visualizzazione risultati 1 fino 30 di 46

Discussione: [php] Creare pagine da codice php

  1. #1
    Guest

    Exclamation [php] Creare pagine da codice php

    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..

  2. #2
    Ospite Guest

    Predefinito

    Codice PHP:
    <?
    $apri
    =@fopen("file.php","r+");
    @
    fwrite($apri,"testo da scrivere nel file");
    ?>
    "file.php" va sostituito con il nome del file da creare.

  3. #3
    Guest

    Predefinito

    Sta cosa m'interessa...

    @ probid: come potrei fare se volessi fare il tutto da un form???
    ...thank's!

  4. #4
    Ospite Guest

    Predefinito

    Dovresti creare una nuova pagina in php nella quale inserire questo codice (es. "nuovofile.php").
    Successivamente potresti mettere come action del form "nuovofile.php".

  5. #5
    Guest

    Predefinito

    @ probid: non ho ben capito cosa intendi

  6. #6
    Ospite Guest

    Predefinito

    1.Crea la pagina nuovofile.php e inserisci al suo interno il codice:
    Codice PHP:
    <?
    $apri
    =@fopen("file.php","r+");
    @
    fwrite($apri,"testo da scrivere nel file");
    ?>
    2.Nella pagina che contiene il form inserisci:
    Codice HTML:
    <form action="nuovofile.php">

  7. #7
    Guest

    Predefinito

    il form lo faccio così:
    Codice HTML:
    <form action="nuovofile.php">
    <textarea rows="10" cols="10"> TESTO </textarea>
    <input type="submit" value="Insert">
    </form>
    è correto?

  8. #8
    Ospite Guest

    Predefinito

    Citazione Originalmente inviato da TurkoSoft
    il form lo faccio così:
    Codice HTML:
    <form action="nuovofile.php">
    <textarea rows="10" cols="10"> TESTO </textarea>
    <input type="submit" value="Insert">
    </form>
    è correto?
    Fai così:
    Codice HTML:
    <form action="nuovofile.php" method="POST">
    <textarea rows="10" cols="10" name="testo"> TESTO </textarea>
    <input type="submit" value="Insert">
    </form>
    Nuovofile.php:

    Codice PHP:
    <?
    $apri
    =@fopen("file.php","r+");
    @
    fwrite($apri,$_POST['testo']);
    ?>

  9. #9
    Guest

    Predefinito

    hmmm....dovresti dare un nome alla textarea (e a tutti gli input del forum)....sennò php non la può recuperare....esempio:
    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>
    poi in nuovofile.php....
    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+");
    $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!"; }
    ?>
    dovrebbe andare...fammi sapere

  10. #10
    Guest

    Predefinito

    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ì:
    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!"; }
    ?>
    Provato e funziona.

    EDIT: migliorato come ha detto jostock...
    Ultima modifica di tryphpnuke : 12-04-2006 alle ore 17.13.37

  11. #11
    Guest

    Predefinito

    ...oppure usare stripslashes()!

  12. #12
    Guest

    Predefinito

    Vero... funziona ugualmente.

  13. #13
    Guest

    Predefinito

    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/

  14. #14
    Guest

    Predefinito

    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:
    Codice PHP:
    $apri=@fopen("file.php","r+");
    // Cambiare in:
    $apri=@fopen("file.php","x+") or die("File già esistente!");
    EDIT: in questo modo, magari, possiamo anche scegliere dal form il nome del file... ;)
    Ultima modifica di tryphpnuke : 12-04-2006 alle ore 18.26.10

  15. #15
    Ospite Guest

    Predefinito

    Citazione Originalmente inviato da tryphpnuke
    Per farglielo creare (e mandare un errore se il file esiste già), bisogna cambiare così questa riga:
    Codice PHP:
    $apri=@fopen("file.php","x+") or die("File già esistente!");
    Oppure:
    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");
    }
    ?>

  16. #16
    Guest

    Predefinito

    No probid, perché 'r+' non gli permette di creare il file!
    Citazione Originalmente inviato da php.net
    'r+' Apre in lettura e scrittura; posiziona il puntatore all'inizio del file. (nota: non gli permette di crearli i file!)
    'a' Apre in sola scrittura; posiziona il puntatore alla fine del file. Se il file non esiste, tenta di crearlo.
    'a+' Apre in lettura e scrittura; posiziona il puntatore alla fine del file. Se il file non esiste, tenta di crearlo.
    'x+' Crea ed apre il file in lettura e scrittura; posiziona il puntatore all'inizio del file. Se il file esiste già la chiamata a fopen() fallirà restituendo FALSE e verrà generato un errore di lievllo E_WARNING. Se il file non esiste si tenterà di crearlo. (...)
    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!!! )
    Ultima modifica di tryphpnuke : 12-04-2006 alle ore 18.58.57

  17. #17
    Ospite Guest

    Predefinito

    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");
    }
    ?>

  18. #18
    L'avatar di funcool
    funcool non è connesso Utente storico
    Data registrazione
    05-02-2004
    Residenza
    Qui... Non lì, qui!
    Messaggi
    15,433

    Predefinito

    Citazione Originalmente inviato da probid
    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.
    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

  19. #19
    Guest

    Predefinito

    Per la cronaca:
    Citazione Originalmente inviato da php.net
    'w' Apre il file in sola scrittura; posiziona il puntatore all'inizio del file e tronca il file alla lunghezza zero. Se il file non esiste, tenta di crearlo.
    'w+' Apre in lettura e scrittura; posiziona il puntatore all'inizio del file e tronce il file alla lunghezza zero. Se il file non esiste, tenta di crearlo.
    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!

  20. #20
    L'avatar di funcool
    funcool non è connesso Utente storico
    Data registrazione
    05-02-2004
    Residenza
    Qui... Non lì, qui!
    Messaggi
    15,433

    Predefinito

    Citazione Originalmente inviato da tryphpnuke
    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!
    Lo so, ma infatti intendo dopo aver usato i vari controlli che avete scritto voi.
    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

  21. #21
    Guest

    Predefinito

    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!

  22. #22
    L'avatar di funcool
    funcool non è connesso Utente storico
    Data registrazione
    05-02-2004
    Residenza
    Qui... Non lì, qui!
    Messaggi
    15,433

    Predefinito

    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

  23. #23
    Guest

    Predefinito

    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...):
    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>
    E poi questo:
    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.";
    }
    }
    ?>
    EDIT: testato e ritestato: è garantito che funziona al 100% (beh... facciamo 99%...)
    Ultima modifica di tryphpnuke : 12-04-2006 alle ore 19.47.39

  24. #24
    L'avatar di Leo91
    Leo91 non è connesso Altervistiano Junior
    Data registrazione
    28-03-2004
    Residenza
    alle tue spalle
    Messaggi
    728

    Predefinito

    Consiglio:
    non ti conviene far creare agli utenti pagine con estensione.php perchè potrebbero causarti guai!
    Ciao!

  25. #25
    Guest

    Predefinito

    @ 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

  26. #26
    L'avatar di Leo91
    Leo91 non è connesso Altervistiano Junior
    Data registrazione
    28-03-2004
    Residenza
    alle tue spalle
    Messaggi
    728

    Predefinito

    Per aprirlo potresti fare che, siccome ti crei ste pagine in una cartella predefinita da te, fai un echo del link...così:
    Codice PHP:
    echo "<a href='http://turkosoft.altervista.org/cartellascript/$_POST[filename].$_POST[ext]'>$_POST[filename].$_POST[ext]</a>";
    Per eliminare un file usa unlink
    Codice PHP:
    unlink("file.php");

  27. #27
    Guest

    Predefinito

    Citazione Originalmente inviato da Leo91
    Per aprirlo potresti fare che, siccome ti crei ste pagine in una cartella predefinita da te, fai un echo del link...così:
    Codice PHP:
    echo "<a href='http://turkosoft.altervista.org/cartellascript/$_POST[filename].$_POST[ext]'>$_POST[filename].$_POST[ext]</a>";
    Per eliminare un file usa unlink
    Codice PHP:
    unlink("file.php");
    - come faccio ad impostare nello script una cartella predefinita?
    - 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?)

  28. #28
    Guest

    Predefinito

    @ Leo91: Il codice corretto (per quanto riguarda il mio script) è:
    Codice PHP:
    echo "<a href='http://tuosito.altervista.org/tuadirectory/$_POST[filename]$_POST[ext]'>$_POST[filename]$_POST[ext]</a>";
    (Togli il punto tra $_POST[filename] e $_POST[ext], perché c'è già in $_POST[ext]!)

    @ TurkoSoft: per quanto riguarda la cartella predefinita basta fare così:
    Codice PHP:
    $crea_file = @fopen("tuadirectory/$_POST[filename]$_POST[ext]","x+") or die("File già esistente!");
    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:
    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

  29. #29
    Guest

    Predefinito

    @ tryphpnuke: per quanto riguarda la cartella, avevo risolto da solo (per fortuna )...ma come faccio a far cancellare il file???

  30. #30
    Guest

    Predefinito

    Beh, gli metti un link di questo tipo:
    Codice HTML:
    <a href="cancellafile.php?nomefile=$nomefile">Cancella questo file</a>
    Dove $nomefile è il nome della variabile che mostra il file nella lista. E poi:
    Codice PHP:
    <?php
    $cancella
    = unlink($_GET[nomefile]) or die("Errore mentre cancellavo il file $_GET[nomefile].");
    echo(
    "File $_GET[nomefile] cancellato correttamente!");
    ?>

Pagina 1 di 2 12 UltimoUltimo

Regole di scrittura

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