• Super User

    [Script] Creare una pagina di annunci con foto

    Potete trovare la versione funzionante [url=http://www.tesiweb.net/testGT/annunci/upload.html]Qui

    Bene,
    questo post serve come tutorial per creare una pagina che effettua le seguenti operazioni:

    1. Inserimento di un annuncio (campi testuali) più upload di un file (foto) salvando il tutto in un file
      2)** Lettura del file e visualizzazione dell'annuncio in una pagina**

    Cominciamo con il punto 1:

    Cominciamo con il codice per l'inserimenti di campi testuali.
    Per fare questo ci rivolgiamo alla [url=http://www.giorgiotave.it/guida_php/scrivere_file_form.php]Guida php di Giorgio Taverniti per l'invio di informazioni tramite form php

    Ecco qui il codice:

    Pagina html: upload.html

    <html>
    <head>
    <title>Upload</title>
    </head>
    
    <body>
    
    <form enctype="multipart/form-data" action="upload.php" method="POST">
    
    Nome 
    <input type="text" name="nome" size="20"> 
    
    Recapito 
    <input type="text" name="recapito" size="20"> 
    
    
    
    Oggetto 
    
     <textarea name="oggetto" rows="3" cols="40"></textarea> </p> 
    <input type="submit" value="Invia">
    </form>
    
    </body>
    </html>
    

    Pagina upload.php

    <?
    if &#40;!empty&#40;$_POST&#91;'nome'&#93;&#41;&#41;&#123;
    $nome = $_POST&#91;'nome'&#93;;
    
    &#125;
    if &#40;!empty&#40;$_GET&#91;'nome'&#93;&#41;&#41;&#123;
    $nome = $_GET&#91;'nome'&#93;;
    &#125;
    
    if &#40;!empty&#40;$_POST&#91;'recapito'&#93;&#41;&#41;&#123;
    $recapito = $_POST&#91;'recapito'&#93;;
    
    &#125;
    if &#40;!empty&#40;$_GET&#91;'recapito'&#93;&#41;&#41;&#123;
    $recapito = $_GET&#91;'recapito'&#93;;
    &#125;
    
    
    if &#40;!empty&#40;$_POST&#91;'oggetto'&#93;&#41;&#41;&#123;
    $oggetto = $_POST&#91;'oggetto'&#93;;
    
    &#125;
    if &#40;!empty&#40;$_GET&#91;'oggetto'&#93;&#41;&#41;&#123;
    $oggetto = $_GET&#91;'oggetto'&#93;;
    &#125;
    
    
    echo "<center>"; 
    echo "Ciao ecco i risultati del tuo inserimento:"; 
    $errore= false; 
    
    If&#40;&#40;!$nome&#41; || &#40;!$recapito&#41; || &#40;!$oggetto&#41;&#41; &#123; 
    
    #controllo che nessun campo sia vuoto 
    $errore=true; 
    echo "Non hai compilato tutti i campi <a href=\"uno.htm\">torna indietro</a>"; 
    exit; 
    &#125; 
    else&#123; 
    echo " i campi sono ok"; 
    &#125; 
    
    echo "<HR>"; 
     
     che il file sia accessibile 
    if &#40;!$apri = fopen &#40;"file.txt","a+"&#41;&#41; &#123; 
    $errore=true; 
    echo "non posso aprire il file"; 
    &#125;else&#123; 
    $apriw = fopen &#40;"file.txt","a+"&#41;; 
    
    #ora creo una variabile che contiene la linea di reparazione 
    $linea ="<hr color=red>"; 
    # e sul file scrivo nome e vado a capo,il recapito e vado a capo 
    
    # l'oggetto e vado a capo e la linea ti separazione 
    fputs&#40;$apriw,"$nome\n"&#41;; 
    fputs&#40;$apriw,"$recapito\n"&#41;; 
    fputs&#40;$apriw,"$oggetto\n"&#41;; 
    fputs&#40;$apriw,"$linea"&#41;; 
    
    #chiudo il file 
    fclose&#40;$apriw&#41;; 
    &#125; 
    
    #se c'e l'errore mi dice di inserirli di nuovo altrimenti mi fa leggere gli annunci 
    if&#40;$errore&#41;&#123; 
    echo"
     Riinseriscili perfavore
    "; 
    &#125; 
    else&#123; 
    echo "
     <a href=\"annunci.php\">leggi gli annunci</a>"; 
    &#125; 
    
    
    ?> 
    

    Ecco la pagina che mi legge dal file chiamata annunci.php

    <?php
    echo "Ecco i vostri annunci
    ";
    if &#40;!$apri = fopen&#40;"file.txt","r"&#41;&#41;&#123;
    echo "Non posso aprire il file";
    &#125;else&#123;
    
    #Se il file si può leggere allora con un ciclo while
    
    # leggo tutte le righe del mio file
    while&#40;!feof&#40;$apri&#41;&#41;&#123;
    $leggo = fgets&#40;$apri,255&#41;;
    echo "$leggo
    ";
    &#125;
    &#125;
    fclose&#40;$apri&#41;;
    ?>
    

    Tra poco posterò il codice per l'upload del file


  • Super User

    Bene,
    ora passiamo al punto 2

    Prendiamo il codice dalla [url=http://www.giorgiotave.it/guida_php/upload_file.php]Guida PHP per l'upload di un file di giorgiotave e lo uniamo al codice usato prima.

    Aggiungiamo il box per lo sfoglia del file nella nostra pagina upload.html che diventerà:

    <html>
    <head>
    <title>Upload</title>
    </head>
    
    <body>
    
    <form enctype="multipart/form-data" action="upload.php" method="POST">
    
    Nome 
    <input type="text" name="nome" size="20"> 
    
    Recapito 
    <input type="text" name="recapito" size="20"> 
    
    
    
    Oggetto 
    
     <textarea name="oggetto" rows="3" cols="40"></textarea> </p> 
    <input type="hidden" name="MAX_FILE_SIZE" value="30000">
    Invia questo file: <input name="userfile" type="file">
    <input type="submit" value="Invia File">
    </form>
    
    </body>
    </html>
    

    Ora modifichiamo la nostra pagina upload.php:

    <?
    //percorso della cartella dove mettere i file caricati
    $uploaddir = '/home/httpd/vhosts/';
    
    if &#40;!empty&#40;$_POST&#91;'nome'&#93;&#41;&#41;&#123;
    $nome = $_POST&#91;'nome'&#93;;
    
    &#125;
    if &#40;!empty&#40;$_GET&#91;'nome'&#93;&#41;&#41;&#123;
    $nome = $_GET&#91;'nome'&#93;;
    &#125;
    
    if &#40;!empty&#40;$_POST&#91;'recapito'&#93;&#41;&#41;&#123;
    $recapito = $_POST&#91;'recapito'&#93;;
    
    &#125;
    if &#40;!empty&#40;$_GET&#91;'recapito'&#93;&#41;&#41;&#123;
    $recapito = $_GET&#91;'recapito'&#93;;
    &#125;
    
    
    if &#40;!empty&#40;$_POST&#91;'oggetto'&#93;&#41;&#41;&#123;
    $oggetto = $_POST&#91;'oggetto'&#93;;
    
    &#125;
    if &#40;!empty&#40;$_GET&#91;'oggetto'&#93;&#41;&#41;&#123;
    $oggetto = $_GET&#91;'oggetto'&#93;;
    &#125;
    
    
    echo "<center>"; 
    echo "Ciao ecco i risultati del tuo inserimento&#58;"; 
    $errore= false; 
    
    If&#40;&#40;!$nome&#41; || &#40;!$recapito&#41; || &#40;!$oggetto&#41;&#41; &#123; 
    
    #controllo che nessun campo sia vuoto 
    $errore=true; 
    echo "Non hai compilato tutti i campi <a href=\"uno.htm\">torna indietro</a>"; 
    exit; 
    &#125; 
    else&#123; 
    echo " i campi sono ok"; 
    &#125; 
    
    
    //Recupero il percorso temporaneo del file
    $userfile_tmp = $_FILES&#91;'userfile'&#93;&#91;'tmp_name'&#93;;
    
    //recupero il nome originale del file caricato
    $userfile_name = $_FILES&#91;'userfile'&#93;&#91;'name'&#93;;
    
    print "<pre>";
    //copio il file dalla locazione temporanea alla mia cartella upload
    if &#40;move_uploaded_file&#40;$userfile_tmp, $uploaddir . $userfile_name&#41;&#41;
    &#123;
    //Se l'operazione è andata a buon fine...
    print "File inviato con successo. Ecco alcune informazioni&#58;\n"; 
    print_r&#40;$_FILES&#41;;
    &#125;
    else
    &#123;
    //Se l'operazione è fallta...
    print "Upload NON valido! Alcune informazioni&#58;\n"; 
    print_r&#40;$_FILES&#41;;
    &#125;
    print "</pre>";
    
    echo "<HR>"; 
     
     che il file sia accessibile 
    if &#40;!$apri = fopen &#40;"file.txt","a+"&#41;&#41; &#123; 
    $errore=true; 
    echo "non posso aprire il file"; 
    &#125;else&#123; 
    $apriw = fopen &#40;"file.txt","a+"&#41;; 
    
    #ora creo una variabile che contiene la linea di reparazione 
    $linea ="<hr color=red>"; 
    # e sul file scrivo nome e vado a capo,il recapito e vado a capo 
    
    # l'oggetto e vado a capo e la linea ti separazione 
    fputs&#40;$apriw,"$nome\n"&#41;; 
    fputs&#40;$apriw,"$recapito\n"&#41;; 
    fputs&#40;$apriw,"$oggetto\n"&#41;; 
    fputs&#40;$apriw,"<img src=$userfile_name>\n"&#41;; 
    fputs&#40;$apriw,"$linea"&#41;; 
    
    #chiudo il file 
    fclose&#40;$apriw&#41;; 
    &#125; 
    
    #se c'e l'errore mi dice di inserirli di nuovo altrimenti mi fa leggere gli annunci 
    if&#40;$errore&#41;&#123; 
    echo"
     Riinseriscili perfavore
    "; 
    &#125; 
    else&#123; 
    echo "
     <a href=\"annunci.php\">leggi gli annunci</a>"; 
    &#125; 
    
    
    ?> 
    

    Il nostro file annunci.php non subisce variazioni:

    <?php 
    echo "Ecco i vostri annunci
    "; 
    if &#40;!$apri = fopen&#40;"file.txt","r"&#41;&#41;&#123; 
    echo "Non posso aprire il file"; 
    &#125;else&#123; 
    
    #Se il file si può leggere allora con un ciclo while 
    
    # leggo tutte le righe del mio file 
    while&#40;!feof&#40;$apri&#41;&#41;&#123; 
    $leggo = fgets&#40;$apri,255&#41;; 
    echo "$leggo
    "; 
    &#125; 
    &#125; 
    fclose&#40;$apri&#41;; 
    ?>
    

  • Super User

    Non ho ancora avuto tempo di testarlo.

    Fatemi sapere eventualmente se ci sono degli errori che li correggiamo insieme.

    Appena posso lo testo.

    CIAOCIAO! :ciauz:


  • User Attivo

    piccola precisazione di sicurezza (che esula dall'esempio specifico)

    attenzione a usare la varibili (GET,POST,SESSION,FILES) direttamente (cioè senza $_GET,$_POST,ecc.....)

    in particolare la cosa diventa pericolosa se si usane le sessioni, quindi conviene sempre recuperare il valore da:

    $val=$_SESSION[val];


  • User

    Grazie per l'esempio che hai fatto,dopo tanta mia insistenza,sei molto gentile,l'ho testato,ma non funge(preticamente non carica la foto),infatti il risultato è questo:

    Ciao ecco i risultati del tuo inserimento: i campi sono ok
    nome del file locale creato dopo l'invio: D:\WPM\djspot nuovo\ca3idch5.jpg
    nome originale del file remoto:
    dimensioni del file in byte:
    tipo di file:


    Invio del file fallito
    leggi gli annunci


  • Super User

    hai impostato il path assoluto del tuo sito?

    Ciao!


  • User

    hai impostato il path assoluto del tuo sito?

    Ciao! 😢 Oddio,non saprei come fare. Adesso mi odi vero?
    Ti riferisci alla directory dove salvare le foto? Ho specificato una directory,ma non funge lo stesso $path="/annunci/foto";


  • Super User

    devi dare il path assoluto /home/httpd/www/ecc ecc

    Ovviamente devi sapere qual'è quello del tuo provider...


  • User

    Ciao,eccomi dal momento che sto provando su un sito su altervista il mio path assoluto è $path="/membri/djperfeste/annunci/foto"; ,ma non funge aspita.

    http://forum.altervista.org/showthread.php?t=12648&highlight=path+assoluto <------ il path è giusto da quello che dicono qui.


  • Super User

    non ne sono certo ma credo che per altervista sia:

    "/home/utente"

    non ne sono certo però..

    PATERRRRRRRRRRRRR...tu lo sai?


  • Super User

    @Tuonorosso said:

    non ne sono certo ma credo che per altervista sia:

    "/home/utente"

    non ne sono certo però..

    PATERRRRRRRRRRRRR...tu lo sai?mmm... chiedere nel forum di supporto no eh? 😄

    Prova lì sae ti aiutano, magari dopo ci dici come è andata 😄


  • User

    Ci sono gia messaggi sul forum di altervista e tutti dicono la stessa cosa cioe' che il path assoluto è /membri/nick ecco i risultati http://forum.altervista.org/showthread.php?t=11898&highlight=path+assoluto

    Oddio non vorrei dire cavolate perche' non capisco praticamente quasi nulla in php,ma l'hai provato sul tuo server? Odiami pure ehhhhh

    Ho fatto comunque un post in altervista anche


  • User Attivo

    questo ti dovrebbe dare il path assoluto

    $_SERVER["SCRIPT_FILENAME"]


  • User

    Ecco fatto,il risultato è :/membri/djperfeste/annunci/annunci.php


  • Super User

    Allora,
    ho testato e sistemato lo script, l'ho modificato in un po di parti...ora così funziona alla grande ve lo assicuro...

    Buon divertimento..


  • User

    Ciao e grazie ora funziona,ma solo per alcune foto,per altre non c'è verso
    http://www.djperfeste.altervista.org/annunci/annunci.php

    Ok ok ho capito il perche',se ci sono degli spazi nel nome della foto,tipo gino_ .jpg,non funge mea culpa,c'è la possibilita' di accettare anche quelli?


  • Super User

    si, ti basta fare un replace dello spazio nella stringa, togliendolo!

    (ti lascio il divertimento di trovare la funzione per lo string replace(ti ho dato anche un bell'aiutino :D))


  • User

    Ehhh sono talmente ignorante che la funzione replace la sento per la prima volta ora,uhahahhahah
    http://www.camelotpub.com/galleria/pervert_night/index.php?directory=.&currentPic=1 <---un po' di pelozzo,lo so che non è il massimo pero' ehhh


  • User

    Frustami a sangue se vuoi,ehh.
    Scusami se sono ancora qui a rompere,ma grazia a tutti questi tutorial sto imparando anche io,mi spieghi quella cosa della stringa replace per piacere?
    A un piccolo bug,alcune foto jpg anche se col nome singolo,senza spazi o caratteri strani,non me le stampa,puoi vedere anche nella tua home(dove hai messo il tuo tutorial). :arrabbiato:


  • User Newbie

    @Tuonorosso said:

    Allora,
    ho testato e sistemato lo script, l'ho modificato in un po di parti...ora così funziona alla grande ve lo assicuro...

    Buon divertimento..

    Ciao e buongiorno a tutti

    Sto cercando di utilizzare gli scripts da te fatti per visualizzare sul sito che vorrei pubblicare, il contenuto di alcuni file txt. (sito di una società sportiva dilettantistica).

    Ho creato i files necessari (upload.html upload.php annunci.php) e li sto provando su piattaforma xp usando easy php.

    Il problema è che se faccio l'upload mi copia solo ed esclusivamente il file "upload.php".

    Dove combino una cavolata ?

    Grazie

    Gable :arrabbiato: 😮 😮