Programmare in PHP: Lezione 4

Lezione PHP, Programmazione — il aprile 15, 2008 alle 14:29 |
Scarica l'articolo in formato PDF


Programmare in PHP: Lezione 4

Rieccoci qui, dopo qualche settimana saltata, con le lezioni sulla programmazione PHP.
In questa lezioni vi voglio mostrare come sia semplice poter realizzare un Guestbook senza database.

In questo script utilizzaremmo come archivio per i commenti un file testuale, che verrà scritto da un form compilato dall’utente.
Vi mostrerò quindi la funzione include(“file”); e ripasseremo la lettura e scrittura dei file attraverso gli script.

Come prima cosa dobbiamo realizzare una pagina dove verranno mostrati i commenti del guestbook e dove sarà possibile inserirne di nuovi, quindi semplicemente realizziamo:


<form method="post" action="guestbook.php">
<div align="center">Tuo nome<br>
<input type="text" name="nome">
<br>
Messaggio<br>
<textarea name="messaggio" rows="5" cols="30"></textarea>
<br>
<br>
<input type="submit" value="Firma il guestbook">
</div>
</form>
<?php
include("guestbook.txt");
?>

Un semplice form per l’inserimento del nome e uno per il messaggio, dopodichè richiamiamo il file guestbook.txt, il quale stamperà a video il contenuto di tale file.
Premendo sul tasto “Firma Guestbook” richiameremo la pagina guestbook.php, contenente il seguente codice, il quale permetterà di salvare nel file tutti i dati necessari:
<?
$nome = $_POST["nome"];
$messaggio = $_POST["messaggio"];
$data = date("d/m/Y H:i:s");
$file = "guestbook.txt";


if ($nome == "")
{
echo "Inserisci il tuo nome";
}
elseif ($messaggio == "")
{
echo "Inserisci il messaggio";
}
else
{
$guestbook = fopen($file, "a");
$scrivi = "<b>" . $nome . "</b><br>\r";
$scrivi .= $messaggio . "<br>\r";
$scrivi .= "<i>Scritto in data " . $data . "</i><hr>\r";
fwrite($guestbook, $scrivi);
fclose($guestbook);


Header("Location: http://www.tuosito.it");
}
?>

Il codice è abbastanza semplice, ma andiamo ad analizzare:

Riceve i dati dal campo compilato dall’utente e controlla se ha inserito sia il nome che il messaggio, in caso contrario mosterà un messaggio d’allerta.
A questo punto se i campi sono compilati scrive sul file guestbook.txt i dati inseriti, formattandoli con il linguaggio HTML.
Una volta fatto tutto ciò rimanda l’utente ad una pagina scelta :)

Semplice, no? :)

PDF Creator    Invia l'articolo in formato PDF   

    10 commenti

  • funny scrive:

    Ciao luca,

    stavo pensando e se volessi includere invece che guestbook.txt un .txt che un utente mi vuole specificare con una input box si puo’ fare?

    Io farei così:

    include($_GET['spec_file']);

    tu che dici?

  • Luca Mercatanti scrive:

    @Funny:

    Bè se vuoi si, puoi far specificare all’utente in file nel quale salvare i dati, ma non capisco a quale scopo nei guestbook :)

  • funny scrive:

    Non per fare un guestbook ma.. magari qualcosa di diverso..

    Ma posso fare come ho detto io o e’ errato?

  • Luca Mercatanti scrive:

    @Funny:

    Con quel comando riprendi il file

  • Crashover scrive:

    ottimo luca!!!!! come sempre XD !!!!!

  • funny scrive:

    Ah.. ok!

    Quindi posso farlo tranquillamente senza problemi..
    Funziona e non da problemi.

    Peerfetto! Grazie.

  • Luca Mercatanti scrive:

    @Funny:

    Guarda ti do un consiglio: quando non sei sicuro di qualcosa testala, provala e riprovala, scoprirai tante cose :)

  • The_devil scrive:

    Ciao Luga…
    ma il corso non continua?
    in merito a questa lezione
    <?
    $nome = $_POST["nome"];
    $messaggio = $_POST["messaggio"];
    $data = date(“d/m/Y H:i:s”);
    $file = “guestbook.txt”;

    if ($nome == “”){echo “Inserisci il tuo nome”;}
    elseif ($messaggio == “”)
    {echo “Inserisci il messaggio”;}
    else
    {$guestbook = fopen($file, “a”);
    $scrivi = “” . $nome . “\r”;
    $scrivi .= $messaggio . “\r”;
    $scrivi .= “Scritto in data ” . $data . “\r”;
    fwrite($guestbook, $scrivi);
    fclose($guestbook);
    ECHO “MESSAGGIO RICEVUTO CORRETTAMENTE”;
    header(“Location: http://www.miosito.altervista.org“);

    in coda al form ho inserito

  • iTech Blog scrive:

    Attenzione che il guestbook pubblicato in questo articolo è vulnerabile ad attacchi XSS molto ma molto pericolosi. E’ consigliabile usare sempre la funzione htmlentities o strip_tags per rimuovere il possibile “codice malevolo” quando si parla di mostrare su schermo dati forniti in input dagli utenti.

    Inoltre sconsiglio assolutamente di utilizzare un comando del tipo

    include($_GET['file']);

    Che comporta cose ancora più gravi, come LFI e probabilmente anche RFI (local e remote file inclusion)

Lascia un commento

Trackbacks

Inserisci Trackback