Visualizzazione risultati 1 fino 25 di 25

Discussione: Permettere ad un utente di gestire una pagina HTML

  1. #1
    topdeskle non è connesso Utente giovane
    Data registrazione
    12-03-2012
    Messaggi
    42

    Predefinito Permettere ad un utente di gestire una pagina HTML

    Ciao a tutti, mi sapreste dire come permettere ad un utente di gestire una pagina HTML?

    Ecco come vorrei:
    - Una specie di pannello amministratore (es: pannello.php) con una textarea dove mettere i codici e un pulsante salva.
    - Tutto quello che viene scritto nella textarea si salverà su un altro file (esempio: pagina.html).


    Per il login non preoccupatevi, ho già qualche codice che mi permette di evitare che qualcuno modifichi senza permesso. Credo che sia semplice, ma non ne ho idea dove mettere le mani :D.

    Fatemi sapere, ciao

  2. #2
    Guest

    Predefinito

    Codice PHP:
    <?
    if(!isset($_POST['salva']) || !$_POST['nomefile'] || !$_POST['codice'])
    {
    ?>
    <form method="post">
    File <input type="text" name="nomefile" /><br />
    Codice<textarea name="codice"></textarea><br />
    <input type="submit" name="salva" />
    </form>
    <?
    }
    else
    {
    $fp = fopen($_POST['nomefile'] . '.html', 'w');
    if(
    fwrite($fp, $_POST['codice']))
    {
    echo
    'File scritto con successo';
    }
    else
    {
    echo
    'Si è verificato un errore';
    }
    fclose($fp);
    }
    ?>
    Attento però che così ogni file già esistente viene sovrascritto (se nella input scrivi 'pagina' ed hai già un file chiamato 'pagina.html' verrà sostituita con il contenuto della textarea).
    Ultima modifica di orgxiiipu : 27-12-2012 alle ore 18.28.33

  3. #3
    topdeskle non è connesso Utente giovane
    Data registrazione
    12-03-2012
    Messaggi
    42

    Predefinito

    Ottimo il codice, però vorrei che modificasse solo una pagina, cioè che quel textarea registra e salva i codici html in una semplice pagina (che già esiste) e non che ne crea altre. Fammi sapere cosa riesci a fare (sei un grande)!

    Saluti

  4. #4
    Guest

    Predefinito

    Cioè la pagina in cui salvi il codice è sempre la stessa? Se è così ti basta togliere la input.
    Codice PHP:
    <?
    if(!isset($_POST['salva']) || !$_POST['codice'])
    {
    ?>
    <form method="post">
    Codice<textarea name="codice"></textarea><br />
    <input type="submit" name="salva" />
    </form>
    <?
    }
    else
    {
    $fp = fopen('pagina.html', 'w');
    if(
    fwrite($fp, $_POST['codice']))
    {
    echo
    'File scritto con successo';
    }
    else
    {
    echo
    'Si è verificato un errore';
    }
    fclose($fp);
    }
    ?>
    Sostituendo poi pagina.html con il nome della pagina che vuoi tu.
    Se comunque è sempre la stessa potresti anche far visualizzare il contenuto attuale della pagina, invece di far visualizzare una textarea vuota (se ti intessa posso scriverti il codice, tanto è sulla falsa riga di questo).

  5. #5
    topdeskle non è connesso Utente giovane
    Data registrazione
    12-03-2012
    Messaggi
    42

    Predefinito

    uhm, non ho capito precisamente cosa intendi, ma sono curioso, fai pure :D.

    Grazie mille in anticipo :D.

  6. #6
    Guest

    Predefinito

    XD Intendevo questo:
    Codice PHP:
    <?
    $pagina
    = 'pagina.html';
    if(!isset(
    $_POST['salva']) || !$_POST['codice'])
    {
    $contenuto = implode('', file($pagina));
    ?>
    <form method="post">
    Codice<textarea name="codice"><?=$contenuto; ?></textarea><br />
    <input type="submit" name="salva" />
    </form>
    <?
    }
    else
    {
    $fp = fopen($pagina, 'w');
    if(
    fwrite($fp, $_POST['codice']))
    {
    echo
    'File scritto con successo';
    }
    else
    {
    echo
    'Si è verificato un errore';
    }
    fclose($fp);
    }
    ?>
    In questo modo se pagina.html non è vuota, il suo contenuto finisce nella textarea.

  7. #7
    topdeskle non è connesso Utente giovane
    Data registrazione
    12-03-2012
    Messaggi
    42

    Predefinito

    Sei un grande, anzi di più :D. TI RINGRAZIO tantissimo :D.

  8. #8
    L'avatar di alemoppo
    alemoppo non è connesso Staff AV
    Data registrazione
    24-08-2008
    Residenza
    PU / BO
    Messaggi
    22,683

    Predefinito

    Codice PHP:
    <?php
    $pagina
    = 'pagina.html';

    if(isset(
    $_POST['codice']))
    file_put_contents($pagina,$_POST['codice']);
    ?>
    <form method="post" action="<?= $_SERVER['PHP_SELF'] ?>">
    Codice<textarea name="codice"><?= file_get_contents($pagina) ?></textarea><br />
    <input type="submit" value="salva" />
    </form>
    Ciao!
    Ultima modifica di alemoppo : 28-12-2012 alle ore 22.08.00

  9. #9
    Guest

    Smile

    Citazione Originalmente inviato da orgxiiipu Visualizza messaggio
    Codice PHP:
    <?
    if(!isset($_POST['salva']) || !$_POST['nomefile'] || !$_POST['codice'])
    {
    ?>
    <form method="post">
    File <input type="text" name="nomefile" /><br />
    Codice<textarea name="codice"></textarea><br />
    <input type="submit" name="salva" />
    </form>
    <?
    }
    else
    {
    $fp = fopen($_POST['nomefile'] . '.html', 'w');
    if(
    fwrite($fp, $_POST['codice']))
    {
    echo
    'File scritto con successo';
    }
    else
    {
    echo
    'Si è verificato un errore';
    }
    fclose($fp);
    }
    ?>
    Attento però che così ogni file già esistente viene sovrascritto (se nella input scrivi 'pagina' ed hai già un file chiamato 'pagina.html' verrà sostituita con il contenuto della textarea).
    Ciao, ora mi son chiesto. Ma se metto questo codice, come potrei fare per permettere all'utente di visualizzare tutti i file che ci sono in una cartella del sito?

    Saluti :D.

  10. #10
    Guest

    Predefinito

    Usando glob(): per esempio, invece di
    Codice HTML:
    File <input type="text" name="nomefile" /><br />
    metti
    Codice PHP:
    Seleziona file <select name="file">
    <?
    $cartella
    = 'cartella/';
    foreach (
    glob($cartella . '*.html') as $file)
    {
    echo
    '<option value="' . $file . '">' . $file . "</option>";
    }
    ?>
    </select>

  11. #11
    topdeskle non è connesso Utente giovane
    Data registrazione
    12-03-2012
    Messaggi
    42

    Predefinito

    Okay, ma non mi funziona, cosa dovrei fare?
    Ultima modifica di topdeskle : 30-12-2012 alle ore 17.03.49

  12. #12
    Guest

    Predefinito

    ...Hai modificato di conseguenza il resto del codice?
    Codice PHP:
    <?
    $cartella
    = 'cartella/';
    if(!
    iiset($_POST['file']) || !$_POST['codice'])
    {
    ?>
    <form method="post">
    Seleziona file <select name="file">
    <?
    foreach (glob($cartella . '*.html') as $file)
    {
    echo
    '<option value="' . $file . '">' . $file . "</option>";
    }
    ?>
    </select>
    Codice<textarea name="codice"></textarea><br />
    <input type="submit" name="salva" />
    </form>
    <?
    }
    else
    {
    $file = $cartella . $file;
    if(
    file_exists($file) && file_put_contents($file, $_POST['codice']))
    {
    echo
    'File scritto con successo';
    }
    else
    {
    echo
    'Si è verificato un errore';
    }
    }
    ?>

  13. #13
    topdeskle non è connesso Utente giovane
    Data registrazione
    12-03-2012
    Messaggi
    42

    Predefinito

    Ciao, ho inserito il tuo codice (e modificato la riga 3 perché conteneva un errore all'isset, però non funziona: http://topdeskle.altervista.org/prove/pannello.php .
    Ho modificato cartella/ con prove/ ma nel selezionare i file, non ci sono. Devo fare qualche altra modifica ?
    Codice PHP:
    <?
    $cartella
    = 'prove/';
    if(!isset(
    $_POST['file']) || !$_POST['codice'])
    {
    ?>
    <form method="post">
    Seleziona file <select name="file">
    <?
    foreach (glob($cartella . '*.html') as $file)
    {
    echo
    '<option value="' . $file . '">' . $file . "</option>";
    }
    ?>
    </select>
    Codice<textarea name="codice"></textarea><br />
    <input type="submit" name="salva" />
    </form>
    <?
    }
    else
    {
    $file = $cartella . $file;
    if(
    file_exists($file) && file_put_contents($file, $_POST['codice']))
    {
    echo
    'File scritto con successo';
    }
    else
    {
    echo
    'Si è verificato un errore';
    }
    }
    ?>

  14. #14
    Guest

    Predefinito

    Ah, ho notato ora qualche errore nel codice che ti avevo dato, ma non l'avevo provato e quindi non me n'ero accorto, comunque se tu cerchi con
    Codice PHP:
    $cartella = 'prove/';
    e pannello.php è nella cartella prove (dal link che hai messo), allora glob andrà a cercare in http://topdeskle.altervista.org/prove/prove, che suppongo non esista.
    Quindi, correggendo gli errori e questo, il codice dovrebbe essere così
    Codice PHP:
    <?
    $cartella
    = '';
    if(!isset(
    $_POST['file']) || !$_POST['codice'])
    {
    ?>
    <form method="post">
    Seleziona file <select name="file">
    <?
    foreach (glob($cartella . '*.html') as $file)
    {
    echo
    '<option value="' . $file . '">' . $file . "</option>";
    }
    ?>
    </select>
    Codice<textarea name="codice"></textarea><br />
    <input type="submit" name="salva" />
    </form>
    <?
    }
    else
    {
    $file = $_POST['file'];
    if(
    file_exists($file) && file_put_contents($file, $_POST['codice']))
    {
    echo
    'File scritto con successo';
    }
    else
    {
    echo
    'Si è verificato un errore';
    }
    }
    ?>
    E dovrebbe comparire la lista di tutti i file con estensione .html in http://topdeskle.altervista.org/prove.

  15. #15
    topdeskle non è connesso Utente giovane
    Data registrazione
    12-03-2012
    Messaggi
    42

    Predefinito

    Siiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii, giusto, funziona, grazie :D :D. Ultima cosa e poi possiamo considerare il problema risolto:

    1) Applicare a questo nuovo codice la possibilità di creare altri file con estensione.html :D.
    2) Selezionando il file dal menu a tendina, venisse inserito nel textarea, il codice sorgente.

    Fammi sapere se è possibile, ciao :D.
    Ultima modifica di topdeskle : 30-12-2012 alle ore 18.23.41

  16. #16
    Guest

    Predefinito

    Per crearne di nuovi ti basta aggiungere la input che avevo messo la prima volta.
    Per quanto riguarda il contenuto ci sono due strade:
    -se lo fai con PHP, ciò significherebbe dover selezionare il file, premere salva con la textarea vuota e comparirebbe il codice (sarà ciò che farò nel codice qui sotto)
    -l'altra strada è molto più bella, ma usa AJAX (o JQuery, se lo usi), con questo basterebbe selezionare un file e caricherebbe subito il contenuto nella textarea, ma siccome devi avere JQuery o, se non ti piace, usare semplice AJAX con Javascript, aspetto di sapere cosa ne pensi tu.
    Comunque questo è il codice con il punto 1) e il 2) fatto con la strada del PHP
    Codice PHP:
    <?
    $cartella
    = '';
    if(!(isset(
    $_POST['file']) || isset($_POST['nuovofile'])) || !$_POST['codice'])
    {
    ?>
    <form method="post">
    Seleziona file <select name="file">
    <?
    foreach (glob($cartella . '*.html') as $file)
    {
    echo
    '<option value="' . $file . '">' . $file . "</option>";
    }
    ?>
    </select>
    oppure creane uno nuovo <input type="text" name="nuovofile" /><br />
    Codice<textarea name="codice"><?=((isset($_POST['file'])) ? file_get_contents($_POST['file']) : '') ?></textarea><br />
    <input type="submit" name="salva" />
    </form>
    <?
    }
    else
    {
    if(isset(
    $_POST['file']))
    {
    $file = $_POST['file'];
    }
    else
    {
    $file = $_POST['nuovofile'] . '.html';
    }

    if((
    file_exists($file) || isset($_POST['nuovofile'])) && file_put_contents($file, $_POST['codice']))
    {
    echo
    'File scritto con successo';
    }
    else
    {
    echo
    'Si è verificato un errore';
    }
    }
    ?>

  17. #17
    topdeskle non è connesso Utente giovane
    Data registrazione
    12-03-2012
    Messaggi
    42

    Predefinito

    Ciao, certamente, mi fa piacere provare il jQuery (non lo conosco molto, anzi, niente xD).

    ps: nel codice c'è un bug: se creo un nuovo file e metto il contenuto nella textarea, invece di crearmi il file, mi sovrascrive il file selezionato nel menu a finestra.

    Fammi sapere, campione!

  18. #18
    Guest

    Predefinito

    Ok, allora puoi fare così.
    Codice PHP:
    <?
    $cartella
    = '';
    if(!(isset(
    $_POST['file']) || isset($_POST['nuovofile'])) || !$_POST['codice'])
    {
    ?>
    <form method="post">
    Seleziona file <select name="file" onChange="$('#codice').load($(this).val());">
    <?
    foreach (glob($cartella . '*.html') as $file)
    {
    echo
    '<option value="' . $file . '">' . $file . "</option>";
    }
    ?>
    </select>
    oppure creane uno nuovo <input type="text" name="nuovofile" /><br />
    Codice<textarea id="codice" name="codice"><?=((isset($_POST['file'])) ? file_get_contents($_POST['file']) : '') ?></textarea><br />
    <input type="submit" name="salva" />
    </form>
    <?
    }
    else
    {
    if(
    $_POST['nuovofile'])
    {
    $file = $_POST['nuovofile'] . '.html';
    }
    else
    {
    $file = $_POST['file'];
    }

    if((
    file_exists($file) || isset($_POST['nuovofile'])) && file_put_contents($file, $_POST['codice']))
    {
    echo
    'File scritto con successo';
    }
    else
    {
    echo
    'Si è verificato un errore';
    }
    }
    ?>
    e poi inserisci
    Codice HTML:
    <script type="text/javascript" src="http://code.jquery.com/jquery-latest.min.js"></script>
    nella head, del tipo
    Codice HTML:
    <html>
      <head>
        <!-- altro codice -->
        <script type="text/javascript" src="http://code.jquery.com/jquery-latest.min.js"></script>
      </head>
      <body>
        <!-- eccetera -->

  19. #19
    topdeskle non è connesso Utente giovane
    Data registrazione
    12-03-2012
    Messaggi
    42

    Predefinito

    Si, ottimo, funziona tutto alla grande :D.

    EDIT:

    Ultima richiesta (almeno credo): è possibile impostare un eliminazione automatica delle pagine html dopo tot di giorni?
    Ultima modifica di alemoppo : 30-12-2012 alle ore 22.04.40 Motivo: Usa il tasto "Edita" per editare i messaggi

  20. #20
    L'avatar di alemoppo
    alemoppo non è connesso Staff AV
    Data registrazione
    24-08-2008
    Residenza
    PU / BO
    Messaggi
    22,683

  21. #21
    topdeskle non è connesso Utente giovane
    Data registrazione
    12-03-2012
    Messaggi
    42

    Predefinito

    Ciao alemoppo, grazie dei link ma non saprei proprio come applicarli. Di php non capisco nulla D:

  22. #22
    L'avatar di alemoppo
    alemoppo non è connesso Staff AV
    Data registrazione
    24-08-2008
    Residenza
    PU / BO
    Messaggi
    22,683

    Predefinito

    Non credi che sia bene imparare, così diventi indipendente dagli altri, puoi fare qualsiasi script vuoi, e soprattutto divertirti?

    Avere delle pagine che funzionano, fatte da altri, a me sinceramente non piace per niente.

    Ciao!

  23. #23
    topdeskle non è connesso Utente giovane
    Data registrazione
    12-03-2012
    Messaggi
    42

    Predefinito

    già, hai ragione, ma tramite script fatti da altri si incomincia a imparare qualcosa su questo misterioso e fantastico linguaggio :D. Un po ti capisco dato che faccio parte dello staff di una piattaforma di forum e ogni giorni sono soggetto a questi tipi di richieste (solo che si tratta di HTML, CSS e cose di questo tipo). Grazie comunque del vostro aiuto :P.
    Ultima modifica di topdeskle : 31-12-2012 alle ore 12.35.36

  24. #24
    Guest

    Predefinito

    Beh, in ogni caso le funzioni che ha linkato alemoppo si possono usare così
    Codice PHP:
    <?
    $cartella
    = '';
    $giorni = 1;

    $intervallo = $giorni * 24 * 60 * 60;
    foreach(
    glob($cartella . '*.html') as $file)
    {
    if(
    time() - filectime($file) > $intervallo)
    {
    unlink($file);
    }
    }

    /* Qui metti il resto del codice */
    ?>
    in cui $giorni è il numero di giorni che vuoi passino affinché il file venga cancellato.

  25. #25
    topdeskle non è connesso Utente giovane
    Data registrazione
    12-03-2012
    Messaggi
    42

    Predefinito

    Grazie mille orgxiiipu, sei stato davvero gentile, tenterò di applicarlo al codice. Vi auguro un buon anno 2013, ciao.

Regole di scrittura

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