[PHP] Pulsante SUBMIT per download diretto dei file

spider81man

Utente Attivo
7 Lug 2018
25
0
1
Roma
Ciao a tutti ragazzi,
ho bisogno che se clicco un pulsante di tipo submit mi parta una funzione che faccia poi partire il download.
Questo mi serve perchè così posso tracciare l'utente che ha scaricato il file mettendo il tutto in un DB.
Sapete aiutarmi?
Grazie
spider81man
 
Ultima modifica:

macus_adi

Utente Attivo
5 Dic 2017
1.333
91
48
IT/SW
Quando chiami il submit, la funzione "finale" dovrebbe avere settato l'header in base al content type così da poter effettuare il download:
PHP:
header("Content-type:application/pdf");

// It will be called downloaded.pdf
header("Content-Disposition:attachment;filename='downloaded.pdf'");

// The PDF source is in original.pdf
readfile("original.pdf");
Preso da w3c https://www.w3schools.com/php/func_http_header.asp
 

spider81man

Utente Attivo
7 Lug 2018
25
0
1
Roma
Ciao,
guarda ho fatto cosi

PHP:
header("Content-Disposition:attachment;filename='$path_down'

dove $path_down è la variabile con il puntamento al file esatto. La cosa strana è che dentro la variabile vi è questo percorso ad esempio "uploadtest/treno.jpg" mentre se clicco su download mi da "uploadtest_treno.jpg" sostituisce la / con _ per questo no mi fa scaricare il file.
Sa dirmi come mai??
 

macus_adi

Utente Attivo
5 Dic 2017
1.333
91
48
IT/SW
filename='$path_down'
In realtà qui andrebbe il nome del file e non il percorso...

Invece qui ci va il percorso!
PHP:
readfile("original.pdf");

Quindi ricapitolando;
PHP:
header("Content-type:application/pdf");

// It will be called downloaded.pdf
header("Content-Disposition:attachment;filename='SOLO_NOME_DEL_FILE.pdf'");

// The PDF source is in original.pdf
readfile("/VAR/WWW/DOVE/SI/TROVA/IL/FILE/FILE.pdf");
 

spider81man

Utente Attivo
7 Lug 2018
25
0
1
Roma
Grazie per la celere risposta,
ho scritto così
PHP:
// It will be called downloaded.pdf
    header("Content-Disposition:attachment;filename=$nome_file");
    
// The PDF source is in original.pdf
    readfile("/uploadtest");

Mi fa scaricare il file ma non me lo fa aprire e mi da la risposta che vedi nell'immagine, cioè "IMPOSSIBILE CARICARE L'IMMAGINE. Errore nell'interpretare la jpeg".
Sai dirmi come mai??
Grazie
 

Allegati

  • schermata.png
    schermata.png
    77,6 KB · Visite: 152

spider81man

Utente Attivo
7 Lug 2018
25
0
1
Roma
Lo script è tutto questo
PHP:
if (isset($_POST["Download"])) {
    $search_desc = $_REQUEST['search_desc'];
    $search_proc_pen = $_REQUEST['search_proc_pen'];
    $id_file = $_REQUEST['id_file'];
    $nome_file= $_REQUEST['nome_file'];
    $path_down=$_REQUEST['path'];
    $orario_download= date("d-m-Y H:i:s");
    $query_download = "INSERT into `download` (cip_down, id_file, nome_file , orario_download)
              VALUES ('$cip','$id_file','$nome_file', '$orario_download')";
    $result = mysqli_query($con,$query_download) or die(mysql_error());

// It will be called downloaded.pdf
    header("Content-Disposition:attachment;filename=$nome_file");
   
// The PDF source is in original.pdf
    readfile("/uploadtest");  

}

Il problema è che non mi inserisce neanche i dati nel DB se metto "header" è come se si bloccasse tutto e da li in avanti non legga più nulla.

EDIT:

Facendo delle prove ho notato che se commento SOLO

PHP:
header("Content-Disposition:attachment;filename=$nome_file");

Mi finisce la funzione e mi fa quindi l'inserimento nel DB quindi dive essere questa parte che lo manda in paranoia
1f603.png
 
Ultima modifica:

macus_adi

Utente Attivo
5 Dic 2017
1.333
91
48
IT/SW
Spezza il flusso in 2 parti:

funzione per inserire i dati con valore di ritorno
Header per scaricare il file:
PHP:
function insert_in_db($data,$map){

try{

//mysql e ciò che vuoi che venga eseguito
   return TRUE;
  } catch(Exception $e){
     return FALSE;
}


}
if(insert_in_db(data,$map){

     header_etc....

    }else {
    //errore
}
Prova a strutturare un pò il codice, così hai i break point da poter analizzare e non tutto in IF!
 

spider81man

Utente Attivo
7 Lug 2018
25
0
1
Roma
per scaricare il file al click ho fatto cosi

HTML:
><a href="<?php echo $path?>" download="<?php echo $path?>" onclick="show_alert()"><?php echo $path?></a></td>

Mi scarica il file tranquillamente, ora sto facendo richiamare una funzione che mostra una alert box ma a questo punto potrei da li fare l'inserimento con sul DB? Come sarebbe la sintassi?
Grazie
 

spider81man

Utente Attivo
7 Lug 2018
25
0
1
Roma
Ragazzi buongiorno,
io non riesco a capire come mai se metto tutto il codice di cui sopra e commento la parte
/*
header("Content-type:application/pdf");
header("Content-Disposition:attachment;filename=$nome_file");
readfile("/uploadtest");
*/
Mi effettua tranquillamente la query e mi inserisce i dati nel DB, mentre se tolgo i commenti al CLICK mi parte il download del File, che mi dice essere danneggiato una volta scaricato, ma non mi fa la query.
Sto impazzendo!!!
 

spider81man

Utente Attivo
7 Lug 2018
25
0
1
Roma
Ho trovato una soluzione, non molto elegante lo so ma intanto per ora facciamocela bastare.
In praica alla fine dello script download metto

header("Location: uploadtest/"$nome_file");

così mi apre direttamente il file che sia IMG o PDF, visto che non riesco a scaricarlo almeno lo vedo sujl browser e poi lo scarico.
Ora la mia domanda è, come faccio a far aprire una NUOVA PAGINA con header?
Grazie
 
Discussioni simili
Autore Titolo Forum Risposte Data
M [PHP] [HTML] Centrare in verticale un pulsante in una tabella PHP 3
C [PHP] Aggiungere pulsante paypal PHP 2
C [PHP] Creare un Pulsante che ricopia valori di un campo in altro record PHP 4
L php - pulsante premuto che mostra #div PHP 3
M Creare tabella da pulsante php PHP 6
Occhioverde [PHP] Incrementare variabile al click di un pulsante PHP 5
D [WordPress] [PHP] Pulsante per auto riempire i campi in un modulo WordPress 1
S [PHP] Abilitare un pulsante dopo scelta file... PHP 3
Z [PHP] Informazione al pulsante REFRESH PHP 2
G Ciclo if php per far comparire un pulsante solo nel caso in cui una variabile sia 0 PHP 2
G Problema php relativo a funzione di un pulsante PHP 8
E php problema incremento e decremento di 2 variabili con click da pulsante PHP 0
A pulsante salva in pagina php PHP 5
L php/mysql - anteprima notizia con pulsante PHP 2
A Pulsante per compilare una form php in automatico con dati presi da un db PHP 6
M Visulizzare immagine con php PHP 8
G [PHP] Creare script di prenotazione con controllo disponibilità. PHP 7
G leggere file txt e stampare con php il contenuto a video PHP 7
F Ricreare struttura php+mysql su Xampp Apache 0
Z PHP.INI - STMP per invio email con PHP Server Dedicati e VPS 0
M Array associativi php su 2 campi mysql PHP 10
G Invio form con PHP PHP 3
T fatture con voci fattura in php PHP 0
T ALTRO PROBLEMA CON ARRAY PHP PHP 1
M Collegamento tra form html e script php PHP 4
M Problemi con la stampa dei valori in php PHP 1
W [Cerco collaborazioni] Sviluppatore Web (PHP) Offerte e Richieste di Lavoro e/o Collaborazione 1
D passare valori da database sql a php PHP 1
L Ricezione dei dati su file php da modulo html PHP 6
E Inviare variabile a PHP da ciclo in JS Javascript 0
A form PHP prenotazione tramite query PHP 2
A Form php prenotazione di un azienda sanitaria locale presso studio medico PHP 1
F menù select dinamico da db in php PHP 3
L Problemi form Pagina php HTML e CSS 3
L php mysql non salva solo id PHP 21
L php mysql cerca e visualizza pagina PHP 0
F Il codice php è giusto? PHP 2
R Aggiornare record mysql con Ajax, jQuery e php Ajax 2
A invio massivo dati a file php Javascript 4
Z MySql injection PHP PHP 1
V PHP form intersecate PHP 0
I [Offro][Retribuito] Programmatore Php Offerte e Richieste di Lavoro e/o Collaborazione 0
P Funzione jQuery Ajax invio file a php jQuery 1
C Dopo chiusura del tag php la stringa html va a capo PHP 1
E Transaction php PHP 11
B ciclare file xml con PHP PHP 1
L Estrazione dati php Database 6
A Aiuto per pagina php PHP 0
E Php select option e ajax PHP 23
I Aiuto php Dependent Lookup PHP 0

Discussioni simili