Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 11
  1. #1
    Utente di HTML.it
    Registrato dal
    Aug 2004
    Messaggi
    94

    generazione nome random per file dopo form upload

    Ciao a tutti, ho un form per l'upload di un file sul server, l'unico problema è che se invio un file con lo stesso nome lo sovrascrive, come posso fare per generare un nome casuale al file inviato?
    il codice è questo:

    <?php
    // Where the file is going to be placed
    $target_path = "uploads/";

    /* Add the original filename to our target path.
    Result is "uploads/filename.extension" */
    $target_path = $target_path . basename( $_FILES['uploadedfile']['name']);

    //Percorso dove raccoglieremo gli allegati
    $percorso = "http://www.nomesito.com/uploads/";
    //Nome e Cognome
    $numordine = $_POST['numordine'];
    $nota = $_POST['nota'];
    $file = $percorso.$_FILES['uploadedfile']['name'];
    //Messaggio
    $oggetto = "Invio file per ordine $numordine";
    $messaggio = "
    Numero ordine: $numordine
    Nota: $nota
    File: $file
    ";


    //Inclusione della libreria
    require_once("phpmailer/class.phpmailer.php");
    //Creiamo un oggetto PHPMailer e ne settiamo le variabili

    if(move_uploaded_file($_FILES['uploadedfile']['tmp_name'], $target_path)) {
    echo "The file ". basename( $_FILES['uploadedfile']['name']).
    " has been uploaded
    Numero ordine: $numordine

    Nota: $nota

    File: $file";
    } else{
    echo "There was an error uploading the file, please try again!";
    }
    $mail = new PHPMailer();
    $mail->From = "test@test.it";
    $mail->FromName = "Invio file";
    $mail->AddAddress("test@test.it");
    $mail->IsHTML(true);
    $mail->Subject = $oggetto;
    $mail->Body = $messaggio;
    $mail->AddAttachment = ($percorso.$_FILES['uploadedfile']['name']);
    //Inviamo l'email
    if($mail->Send())
    echo "Email inoltrata correttamente";

    ?>

    lo script dovrebbe anche mandare il file come allegato ma non so per quale oscuro motivo non lo fa, mi accontenterei quindi di rendere il nome random, cosi da non avere una sovrascrizione del file, come posso modificare il mio codice per farlo?

  2. #2
    Utente di HTML.it L'avatar di Ranma2
    Registrato dal
    Mar 2003
    Messaggi
    2,648
    Codice PHP:
    echo md5(time()); 

  3. #3
    Utente di HTML.it
    Registrato dal
    Aug 2004
    Messaggi
    94
    Originariamente inviato da Ranma2
    Codice PHP:
    echo md5(time()); 
    grazie, ma dove lo metto? qui mi perdo un pò...

  4. #4
    Utente di HTML.it L'avatar di boots
    Registrato dal
    Oct 2012
    Messaggi
    1,626
    Codice PHP:
    // $target_path = $target_path . basename( $_FILES['uploadedfile']['name']);
    $target_path $target_path md5(time()).<.estensione_del_file>; 

  5. #5
    Utente di HTML.it
    Registrato dal
    Aug 2004
    Messaggi
    94
    grazie, funziona perfettamente, l'ho solo modificato cosi:
    codice:
    $random = md5(time()); $target_path = $target_path . $random . basename( $_FILES['uploadedfile']['name']);
    in modo che quando passo il nome via mail passa anche il codice random giusto.
    Un ultima domanda, nella mail mi arriva il link del file, ma non è cliccabile, ho provato aggiungendo <a href=\ ma non restituisce il link, come posso fare?
    Codice PHP:
    $file $percorso.$random.$_FILES['uploadedfile']['name']; //Messaggio  $oggetto = "Invio file per ordine $numordine"; $messaggio = "
     
    Numero ordine$numordine
     Nota
    $nota
     File
    $file ";  //Inclusione della libreria require_once("phpmailer/class.phpmailer.php"); //Creiamo un oggetto PHPMailer e ne settiamo le variabili $mail = new PHPMailer(); $mail->From = "test@test.it"; $mail->FromName = "Invio file"; $mail->AddAddress("test@test.it"); $mail->IsHTML(true); $mail->Subject = $oggetto$mail->Body = $messaggio$mail->AddAttachment = ($percorso.$_FILES['uploadedfile']['name']); //Inviamo l'email if($mail->Send()) echo "
    sarete ora reindirizzati al vostro account"; header("refresh:3;url=http://www.test.com/index.php");  ?> 
    cosi in mail arriva il link come testo ma non cliccabile

  6. #6
    Utente di HTML.it L'avatar di boots
    Registrato dal
    Oct 2012
    Messaggi
    1,626
    Codice PHP:
    $mail->AddAttachment = ($percorso.$_FILES['uploadedfile']['name']); 
    Non dovresti mettere $file come attachment? adesso manca $random.

    PS: Sistema il codice, che tutto su una riga non si capisce

  7. #7
    Utente di HTML.it
    Registrato dal
    Aug 2004
    Messaggi
    94
    il codice della seconda parte è questo:

    //Percorso dove raccoglieremo gli allegati
    $percorso = "http://www.test.com/uploads/";
    $numordine = $_POST['numordine'];
    $nota = $_POST['nota'];
    $file = $percorso.$random.$_FILES['uploadedfile']['name'];
    //Messaggio

    $oggetto = "Invio file per ordine $numordine";
    $messaggio = "

    Numero ordine: $numordine

    Nota: $nota

    File: $file
    ";

    //Inclusione della libreria
    require_once("phpmailer/class.phpmailer.php");
    //Creiamo un oggetto PHPMailer e ne settiamo le variabili
    $mail = new PHPMailer();
    $mail->From = "test@test.it";
    $mail->FromName = "Invio file";
    $mail->AddAddress("test@test.it");
    $mail->IsHTML(true);
    $mail->Subject = $oggetto;
    $mail->Body = $messaggio;
    $mail->AddAttachment = ($file);
    //Inviamo l'email
    if($mail->Send())
    echo "
    sarete ora reindirizzati al vostro account";
    header("refresh:3;url=http://www.test.com/index.php");



    i problemi di questo codice sono 2, il primo che nella mail dove mi manda $messaggio = "

    Numero ordine: $numordine

    Nota: $nota

    File: $file
    ";
    a file mi da il link del file non cliccabile, il secondo è che non manda l'allegato, la mail arriva col testo, soggetto, ecc, ma senza allegato

  8. #8
    Utente di HTML.it L'avatar di boots
    Registrato dal
    Oct 2012
    Messaggi
    1,626
    Se lo vuoi far cliccabile lo devi mettere dentro ad <a> ... è html !

    Codice PHP:
    $messaggio "

    Numero ordine: 
    $numordine

    Nota: 
    $nota

    File: <a href=\"
    $file\"> Scarica il file! </a>
    "


  9. #9
    Utente di HTML.it
    Registrato dal
    Aug 2004
    Messaggi
    94
    Originariamente inviato da boots
    Se lo vuoi far cliccabile lo devi mettere dentro ad <a> ... è html !

    Codice PHP:
    $messaggio "

    Numero ordine: 
    $numordine

    Nota: 
    $nota

    File: <a href=\"
    $file\"> Scarica il file! </a>
    "

    sai che scrivevo il codice identico senza \ dopo file e non prendeva nessun link, credevo fosse + complicato :P
    Grazie mille

  10. #10
    Utente di HTML.it L'avatar di boots
    Registrato dal
    Oct 2012
    Messaggi
    1,626
    Per l'attachment, prova a mettere il percorso del file su filesystem (es /var/www/...), non l'url

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.