Navigazione

  • CATEGORIES
  • Discussioni
  • Non letti
  • Recenti
  • Hashtags
  • Popolare
  • Utenti
  • Registrati
  • Accedi
Privacy - Termini e condizioni
© 2020 Search On Media Group S.r.l.
  • Registrati
  • Accedi
  • CATEGORIES
  • Discussioni
  • Non letti
  • Recenti
  • Hashtags
  • Popolare
  • Utenti
  • Stream
  • Interest
  • Categories
  1. Home
  2. Categorie
  3. Coding e Sistemistica
  4. Coding
  5. Upload file in php da zero
Questa discussione è stata cancellata. Solo gli utenti con diritti di gestione possono vederla.
  • D
    davide.al User Attivo • 23 ott 2008, 18:58 ultima modifica di

    Upload file in php da zero

    Salve ho un form di invio dati che spedisce a invio.php dove risiede il codice che invia la email a un indirizzo di posta elettronica. A questo voglio aggiungere un upload file, quindi quando ho compilato tutto il form in invio.php che invia il form sottoforma di email all'indirizzo di posta elettronica voglio che mi invia anche il file che ho uplodato.

    questo è form.php

    [php]
    <form action="invio.php" method="post" id="modulo">

    //ci sono altri campi ma non sn necessari adesso
    //nome cognome e testo ognuno con il suo id=""

    <input type="hidden" name="MAX_FILE_SIZE" value="100000" />
    <input name="file" type="file" class="Stile55" size="30" id="file"/>

    <input name="submit" type="submit" id="submit" value="INVIA" />
     
    <input name="cancella" type="reset" id="cancella" value="RESETTA" />
    </span>
    <label></label></form>

    [/php]
    A questo punto deve interagire invio.php che viene richiamato da:
    <form action="invio.php" method="post" id="modulo">

    invio.php

    [php] <?php
    if ((trim($_POST['oggetto']) != "") && (trim($_POST['testo']) != "") && (trim($_POST['nome']) != "") && (trim($_POST['cognome']) != "") && (trim($_POST['mail']) != "") && (trim($_POST['siamo_di']) != "") && (trim($_POST['provincia']) != "")) { //questo fa si che se i campi "oggetto" e "messaggio" sono vuoti la form non invia nessuna mail
    $to = " \n info@miaemail.net";
    $headers = "From: " . $_POST['mail'] . "\n";
    // oggetto della mail
    $subject = "Modulo proveniente da www.miositonet";

    // corpo messaggio
    $body = "Contenuto del modulo:\n\n";

    $body .= "Inviata da: " . trim(stripslashes($_POST["mail"])) . "\n"; //indirizzo e-mail che manda la mail, come si vede riprende l'id del campo destinato all'inserimento della mail del mittente

    $body .= "nome: " . trim(stripslashes($_POST["nome"])) . "\n";
    $body .= "cognome: " . trim(stripslashes($_POST["cognome"])) . "\n";
    $body .= "oggetto: " . trim(stripslashes($_POST["oggetto"])) . "\n";
    $body .= "testo: " . trim(stripslashes($_POST["testo"])) . "\n";
    $body .= "mail: " . trim(stripslashes($_POST["mail"])) . "\n";

    $body .= "file: " . trim(stripslashes($_POST["file"])) . "\n"; //UPLOAD FILE

    // invio mail
    mail($to, $subject, $body, $headers); // SE L'INOLTRO E' ANDATO A BUON FINE...

    echo "La e-mail è stata inviata con successo. Grazie per averci contattato";

    } else {// altrimenti
    echo "Attenzione, deve compilare tutti i campi per l'invio dei dati, grazie.";

    }

    ?>[/php]
    Ok, la email mi arriva ma vorrei aggiungere qualcosa a questo script che mi permetta di uploadare il file ed inviarmelo via email..
    Ho provato un paio di codici ma non funzionavano, mi dava sempre errore di sintassi....... 😞

    Sapreste darmi una mano?

    grazie di cuore :vai:
    :ciauz:

    0 Miglior Risposta Ringrazia Cita Rispondi

      1 Risposta Ultima Risposta
      Caricamento altri post
      Rispondi
      • Topic risposta
      Effettua l'accesso per rispondere
      • Da Vecchi a Nuovi
      • Da Nuovi a Vecchi
      • Più Voti
       

    • M
      momino User Attivo • 23 ott 2008, 19:25 ultima modifica di

      Potresti uploadare il file sul tuo spazio web e magari inviarti il link nel messaggio di posta elettronica...
      Semplice e funzionale :wink3:

      0 Miglior Risposta Ringrazia Cita Rispondi

        1 Risposta Ultima Risposta
      • D
        davide.al User Attivo • 23 ott 2008, 21:57 ultima modifica di

        come se fa? 🙂

        😢

        0 Miglior Risposta Ringrazia Cita Rispondi

          1 Risposta Ultima Risposta
        • M
          momino User Attivo • 23 ott 2008, 22:15 ultima modifica di

          Allora, partiamo dalle basi: la pagina html deve contenere un form con "enctype=multipart/form-data" per poter caricare i file tramite php.
          La pagina php che accoglie i dati deve avere questo codice:
          [php] if ($_FILES['foto']['name'] != '')
          {
          $updir = "./dir_upload/";
          if (!is_dir($updir))
          mkdir($updir);
          $ext = $_FILES['foto']['type'];
          if ($FILES['foto'] < 500000)
          {
          if (($ext == 'image/jpeg') | ($ext == 'image/jpg') | ($ext == 'image/pjpeg') | ($ext == 'image/gif') | ($ext == 'image/png') | ($ext == 'image/x-png') | ($ext == 'image/bmp') | ($ext == 'image/tiff'))
          {
          $nome = str_replace(' ','
          ',$FILES['foto']['name']);
          $nome = str_replace("'","
          ",$nome);
          $new_path = $updir.$nome;
          if (!move_uploaded_file($_FILES['foto']['tmp_name'],$new_path))
          die ("errore nel caricamento file!");
          else
          {
          $link_allegato = "url_assoluta_del_sito/$new_path";
          /* invia la mail con nel testo la variabile $link_allegato */
          }
          }
          }
          }[/php]Spero sia chiaro, se non fosse così continua a chiedere spiegazioni 😉

          p.s. io l'ho fatto in modo ke controlli l'estensione dei file immagine, e una dimensione non superiore a 500k circa, ma tu puoi metterci quello che vuoi, sia come estensione ke come dimensione.

          0 Miglior Risposta Ringrazia Cita Rispondi

            1 Risposta Ultima Risposta
          • D
            davide.al User Attivo • 23 ott 2008, 22:29 ultima modifica di

            Ma alla fine che faccio invia modulo testo e file allegato insieme lo invio con il tasto invia modulo vero?

            Poi, io all'inizio del form ho:
            <form action="invio.php" method="post" id="modulo">

            tu mi dici
            "enctype=multipart/form-data"

            Non è che non mi funziona ?

            0 Miglior Risposta Ringrazia Cita Rispondi

              1 Risposta Ultima Risposta
            • M
              momino User Attivo • 23 ott 2008, 22:34 ultima modifica di

              infatti l'enctype va inserito insieme a method, id, e action, risultando:
              <form action="invio.php" method="post" id="modulo" enctype="multipart/form-data">

              Ovviamente per caricare un file, devi mettere nel tuo form:
              <input type="file" name="allegato">

              E carichi il tutto col pulsante "invia" del form.

              p.s. nel codice php che ti ho scritto prima, dove c'è la variabile "$_FILES['foto']", "foto" è il nome dell'input file ke hai nel form html; se nel form metti un input file con name="allegato" (come ho fatto poco prima), nella pagina php richiamerai quel valore con "$_FILES['allegato']".

              0 Miglior Risposta Ringrazia Cita Rispondi

                1 Risposta Ultima Risposta
              • D
                davide.al User Attivo • 23 ott 2008, 22:38 ultima modifica di

                Stò provando adesso
                ma poi i file allegati dove vanno?

                0 Miglior Risposta Ringrazia Cita Rispondi

                  1 Risposta Ultima Risposta
                • M
                  momino User Attivo • 23 ott 2008, 22:40 ultima modifica di

                  Vanno in una directory che io ho chiamato:
                  $updir = "./dir_upload/";
                  cioè una cartella che sta nella stessa posizione del file "invio.php" che elabora il tutto.

                  0 Miglior Risposta Ringrazia Cita Rispondi

                    1 Risposta Ultima Risposta
                  • D
                    davide.al User Attivo • 23 ott 2008, 22:41 ultima modifica di

                    La crea da sola?
                    E il link nella email?

                    0 Miglior Risposta Ringrazia Cita Rispondi

                      1 Risposta Ultima Risposta
                    • M
                      momino User Attivo • 23 ott 2008, 22:44 ultima modifica di

                      Nel codice php che ti ho scritto prima, se non esiste quella directory te la crea automaticamente.
                      Il link da mettere nella mail è l'url assoluto del tuo sito (compreso di http e di www) concatenato la variabile $new_path.

                      0 Miglior Risposta Ringrazia Cita Rispondi

                        1 Risposta Ultima Risposta
                      • D
                        davide.al User Attivo • 23 ott 2008, 22:45 ultima modifica di

                        Mi carica i files uploadati sul server, come posso cambiarla directory? La voglio mettere in una cartella che si chiama uploads

                        e il link nella mia_email per vedere il file allegato?

                        0 Miglior Risposta Ringrazia Cita Rispondi

                          1 Risposta Ultima Risposta
                        • M
                          momino User Attivo • 23 ott 2008, 22:47 ultima modifica di

                          Se vuoi cambiare directory, basta cambiare il valore della variabile $updir nel mio script php;
                          leggi sopra come è composto il link dell'allegato....

                          0 Miglior Risposta Ringrazia Cita Rispondi

                            1 Risposta Ultima Risposta
                          • D
                            davide.al User Attivo • 23 ott 2008, 22:53 ultima modifica di

                            Così?
                            $link_allegato = "http://www.miosito.net/uploads.$new_path";

                            0 Miglior Risposta Ringrazia Cita Rispondi

                              1 Risposta Ultima Risposta
                            • M
                              momino User Attivo • 23 ott 2008, 22:55 ultima modifica di

                              Sostituisci il "." tra uploads e $new_path con "/" e sei a posto!

                              0 Miglior Risposta Ringrazia Cita Rispondi

                                1 Risposta Ultima Risposta
                              • D
                                davide.al User Attivo • 23 ott 2008, 22:57 ultima modifica di

                                La cartella si è creata dir_upload mi va bene ma i files non ci sono all'interno, non carica....

                                0 Miglior Risposta Ringrazia Cita Rispondi

                                  1 Risposta Ultima Risposta
                                • M
                                  momino User Attivo • 23 ott 2008, 22:59 ultima modifica di

                                  Hai provato a togliere il limite sulla dimensione e il filtro sulle estensioni? Se vuoi tenere queste limitazioni, sei costretto a rispettarle...

                                  0 Miglior Risposta Ringrazia Cita Rispondi

                                    1 Risposta Ultima Risposta
                                  • D
                                    davide.al User Attivo • 23 ott 2008, 23:03 ultima modifica di

                                    Ho fatto > al posto di <

                                    if ($_FILES['file'] > 500000)

                                    qua dici?
                                    Non funziona lo stesso.

                                    0 Miglior Risposta Ringrazia Cita Rispondi

                                      1 Risposta Ultima Risposta
                                    • M
                                      momino User Attivo • 23 ott 2008, 23:07 ultima modifica di

                                      Prova a scrivere** if (true)**, toglilo per ora il controllo, così vediamo se è quello il problema; e così fai anche dove controlla l'estensione del file da caricare; sono quei 2 gli unici controlli che potresti non rispettare nel caricare il file, perchè i permessi di scrittura nella cartella ci sono tutti (0777 di default), l'unico intoppo possono essere quei 2 controlli.
                                      Toglili e riprova.

                                      0 Miglior Risposta Ringrazia Cita Rispondi

                                        1 Risposta Ultima Risposta
                                      • D
                                        davide.al User Attivo • 23 ott 2008, 23:24 ultima modifica di

                                        Niente ancora... non carica li files....

                                        😞

                                        0 Miglior Risposta Ringrazia Cita Rispondi

                                          1 Risposta Ultima Risposta
                                        • D
                                          davide.al User Attivo • 23 ott 2008, 23:26 ultima modifica di

                                          Ma if (true)
                                          al posto di
                                          if ($_FILES['file'] < 500000)

                                          ?

                                          Ma alla fine non ci vuole ---> ;

                                          0 Miglior Risposta Ringrazia Cita Rispondi

                                            1 Risposta Ultima Risposta
                                          Caricamento altri post
                                          Rispondi
                                          • Topic risposta
                                          Effettua l'accesso per rispondere
                                          • Da Vecchi a Nuovi
                                          • Da Nuovi a Vecchi
                                          • Più Voti