Visualizzazione dei risultati da 1 a 9 su 9

Discussione: guestbook php

  1. #1

    guestbook php

    ragazzi avrei bisogno di una dritta: ho provato a fare un guestbook con questi 3 file:
    -database.txt
    -guest.php
    -form.php

    nella pagina del form scrivo le info da scrivere nel guestbook, con l'invio mi richiama guest.php che mi scrive il contenuto (i messaggi degli utenti) nel database.txt

    ora, vorrei poter far apparire il contenuto del database.txt nella stessa pagina del forum possibilmente sotto in modo tale che gli utenti possano leggere i messaggi lasciati... che codice potrei usare per far apparire il contenuto del file di testo nella pagina html del form?

    grazie a tutti coloro che mi daranno una mano

  2. #2
    Mmm..
    Dipende dalla struttura di database.txt.
    Suppongo che tu scriva i vari messaggi nel file con un fwrite, separati da un separatore.
    In questo caso ti consigliere un codice del genere:
    Codice PHP:
    //form
    <?php
    $open
    =fopen("database.txt","r");//apro il file in lettura
    $text=fread($open,filesize("database.txt"));//leggo il contenuto del file
    $posts=explode("/separatore/",$text);//suddivido il contenuto in base ad un separatore
    echo'<table>';//creo la tabella in cui si inseriranno i messaggi
    for($i=0;$i<count($posts);$i++)//stampo tutti i messaggi inseriti

    echo
    '<tr>';//creo una nuova riga nella tabella
    echo'<td>'.$posts[$i].'</td>';//creo una casella dove scrivo il messaggio
    echo'</tr>';//chiudo la riga
    }
    echo
    '</table>';//chiudo la tabella
    ?>
    Non l'ho provato, ma dovrebbe andare, fammi sapere come funziona la pagina guest.php e potrò essere più preciso.
    Spero di esserti stato utile.
    Fammi sapere!

  3. #3
    grazie mille! sei stato gentilissimo..ho provato ma mi fa apparire 2 copie dello stesso messaggio...come posso fare per visualizzarne solo una?

    poi un'ultima cosa, nella parte finale del codice di guest ho questa stringa:
    echo 'Torna indietro';
    cliccando ovviamente mi torna alla pagina del guestbook, si puo' fare in modo automatico senza cliccare?
    __________________________________________________ ___________________________________________

    il codice del form è questo:
    <form action="guest.php" method="post">



    Inserisci il tuo nome:

    <input type="text" id="utente" name="utente" /></p>



    Inserisci la tua e-mail:

    <input type="text" id="email" name="email" /></p>




    Inserisci il messaggio:


    <textarea name="messaggio" rows="5" cols="30"></textarea>





    <input type="submit" value="Firma">

    <input type="reset" valur="Cancella">

    </form>

    </td>

    </tr>



    </p>


    Vai all'ultimo messaggio</p>



    <?php

    include ("database.txt");

    ?>
    __________________________________________________ ________________________
    questo di guest.php:
    <?php

    //recupero i dati e li inserisco in tre variabili di tipo stringa

    $utente=$_POST['utente'];

    $messaggio=$_POST['messaggio'];

    $email=$_POST['email'];



    //ricavo l'ora e la data odierna

    $data_ora = date("d/m/Y H:i:s");



    //assegno ad una variabile il database di testo

    $db_testo="database.txt";



    //Ora viene controllato che i dati inseriti

    //dall'utente siano corretti



    if($utente==""){

    echo "Il nome inserito non è corretto, inserisci il nome";

    }elseif($messaggio==""){

    echo "Inserisci il tuo messaggio";

    }elseif($email==""){

    echo "Inserisci un indirizzo e-mail";

    }else{

    //se tutto è corretto procedo a scrivere le

    //informazioni sul database di testo

    $guestbook = fopen($db_testo, "a");
    $txt='<tr><td>'.$utente.'

    ';
    $txt .= $messaggio . "
    ";
    $txt .= "Messaggio scritto in data: " . $data_ora . "</td></tr>";
    fwrite($guestbook, $txt);
    fclose($guestbook);

    echo 'Torna indietro';

    }


    ?>


    forse puo' essere utile..

  4. #4
    a proposito, prima di inserire alcun messaggio mi compare nella pagina:
    Warning: fread() [function.fread]: Length parameter must be greater than 0 on line 239

  5. #5
    In qusto caso è tutto molto più sempice:
    Codice PHP:
    <?php
    $open
    =fopen("database.txt","r");//apro il file in lettura
    $text=fread($open,filesize("database.txt"));//leggo il contenuto del file
    echo $text;
    ?>
    Inquanto alla tua seconda domanda, basta inserire ala fine di guest.php, nella parte php il codice:
    Codice PHP:
    header("location:paginadelsito"); 
    Per l'ultima domanda:
    il problema è
    Codice PHP:
    <?php  
    include ("database.txt");  
    ?>
    A che cosa serve questo codice?

  6. #6
    ok perfetto! adesso mi visualizza un solo messaggio per volta ;-) viene reindirizzato correttamente e riguardo l'ultima parte del codice (quella dell'include) posso tranquillamente eliminarla allora giusto?

    ultimissima questione, è possibile volendo dare la possibilità di inserira anche immagini da uplodare o da linkare e magari allegati doc o di immagini?

  7. #7
    Sì: si può fare, però la cosa è alquanto complessa,
    Ti scrivo un codice come traccia:
    pagina di upload(ad esempio upload.html)
    codice:
    <form action="upload.php" method="post" enctype="multipart/form-data">
        <input name="uploadfile" type="file" size="40" />
        <input name="upload" type="submit" value="Carica il file" />
    </form>
    pagina upload.php
    Codice PHP:
    <?php
    // controllo che non ci siano stati errori nell'upload
    if ($_FILES['uploadfile']['error'] == 0){
    // upload ok
    // copio il file dalla cartella temporanea a quella di destinazione mantenendo il nome originale 
    copy($_FILES['uploadfile']['tmp_name'], "file_caricati/".$_FILES['uploadfile']['name']) or die("Impossibile caricare il file");
    // upload terminato, stampo alcune info sul file
    echo "Upload terminato con successo!
    Se si tratta di un'immagine inserisci questo codice:

    <code>
    &lt;img src=\"file_caricati/"
    .$_FILES['uploadfile']['tmp_name']."\">
    </code>


    Se si tratta di un file qualsiasi, per inserire un link per farlo scaricare scrivi:
    <code>
    &lt;a href=\"file_caricati/"
    .$_FILES['uploadfile']['tmp_name']."\">Scarica ".$_FILES['uploadfile']['tmp_name']."&lt;/a>
    </code>
    "
    ;
    }
    else{
    // controllo il tipo di errore
    if ($_FILES['uploadfile']['error'] == 2){
    // errore, file troppo grande (> 1MB)
    die("Errore, file troppo grande: il massimo consentito è 1MB");
    }
    else{
    // errore generico
    die("Errore, impossibile caricare il file");
    }
    }
    ?>
    Non ho potuto provarlo, ma dovrebbe funzionare, attento però, ricorda di creare la cartella file_caricati nella stessa cartella di upload.php, upload.html e della pagina che visualizza i commenti.
    Fammi sapere!!

  8. #8
    quit10 sei un grande!
    allora ho fatto come hai detto, quasi perfetto: mi uploda sia file immagini che pdf suppongo anche altro quindi ma non ho fatto altre prove..

    non ho capito bene il passaggio del codice :
    echo "Upload terminato con successo!
    Se si tratta di un'immagine inserisci questo codice:

    <code>
    &lt;img src=\"file_caricati/".$_FILES['uploadfile']['tmp_name']."\">
    </code>


    Se si tratta di un file qualsiasi, per inserire un link per farlo scaricare scrivi:
    <code>
    &lt;a href=\"file_caricati/".$_FILES['uploadfile']['tmp_name']."\">Scarica ".$_FILES['uploadfile']['tmp_name']."&lt;/a>
    </code>
    __________________________________________________ ________________
    inserendolo come l'hai postato mi uploda e al termine mi da questo messaggio: "Upload terminato con successo!
    Se si tratta di un'immagine inserisci questo codice:
    [img]file_caricati//tmp/phpJcwxGr[/img]
    Se si tratta di un file qualsiasi, per inserire un link per farlo scaricare scrivi: Scarica /tmp/phpJcwxGr "

    ..forse perchè devo lasciare la stringa appropriata al tipo di file? nel caso del link dovrei uplodare il file e poi con la seconda variante linkarlo? non si puo' fare che uplodo un file e mi riporta il link al posto del messaggio?

  9. #9
    allora ho messo altre info per il file, ho dovuto togliere le due stringhe che mi hai postato, non ho capito ancora come inserirle.. per ora il codice è questo:

    <?php
    // controllo che non ci siano stati errori nell'upload
    if ($_FILES['uploadfile']['error'] == 0){
    // upload ok
    // copio il file dalla cartella temporanea a quella di destinazione mantenendo il nome originale
    copy($_FILES['uploadfile']['tmp_name'], "file_caricati/".$_FILES['uploadfile']['name']) or die("Impossibile caricare il file");
    // upload terminato, stampo alcune info sul file
    echo "Upload terminato con successo!";
    echo "Upload terminato con successo:
    ";
    echo "Nome file: ".$_FILES['uploadfile']['name']."
    ";
    echo "Dimensione file: ".$_FILES['uploadfile']['size']."
    ";
    echo "Tipo MIME file: ".$_FILES['uploadfile']['type'];
    }
    else{
    // controllo il tipo di errore
    if ($_FILES['uploadfile']['error'] == 2){
    // errore, file troppo grande (> 1MB)
    die("Errore, file troppo grande: il massimo consentito è 1MB");
    }
    else{
    // errore generico
    die("Errore, impossibile caricare il file");
    }
    }
    ?>

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.