IdentifiantMot de passe
Loading...
Mot de passe oubli� ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les r�ponses en temps r�el, voter pour les messages, poser vos propres questions et recevoir la newsletter

JavaScript Discussion :

Autoclick suite � formulaire php


Sujet :

JavaScript

Vue hybride

Message pr�c�dent Message pr�c�dent   Message suivant Message suivant
  1. #1
    Membre confirm�
    Homme Profil pro
    Responsable de compte
    Inscrit en
    D�cembre 2019
    Messages
    67
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 44
    Localisation : France, Hauts de Seine (�le de France)

    Informations professionnelles :
    Activit� : Responsable de compte

    Informations forums :
    Inscription : D�cembre 2019
    Messages : 67
    Par d�faut Autoclick suite � formulaire php
    Bonjour � tous,

    Je ne connais vraiment pas grand chose en javascript, mais j'en aurais besoin je pense pour supporter le scn�ario suivant:
    - remplissage d'une formulaire html par un utilisateur
    - lancement d'un script php avec ces donn�es sur le serveur=> output: un pointeur sur le serveur
    - d�clanchement automatique du t�l�chargement du fichier (sans click suppl�mentaire du user)

    Le Dev est fait pour les 2 premiers points.
    Pour le t�l�chargement, est-ce que php peut passer � javascript un path qui sera d�clanch� automatiquement ?
    Comment faire concr�tement ?

    Merci pour votre aide !

  2. #2
    Membre Expert Avatar de darkstar123456
    Homme Profil pro
    D�veloppeur Web
    Inscrit en
    Mars 2008
    Messages
    1 895
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 41
    Localisation : Belgique

    Informations professionnelles :
    Activit� : D�veloppeur Web

    Informations forums :
    Inscription : Mars 2008
    Messages : 1 895
    Par d�faut
    Bonjour,

    Il est possible de forcer un t�l�chargement en Javascript via une petite fonction :
    Code javascript : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    function downloadFile(data, name = 'file', type = 'text/plain') {
      const { createElement } = document
      const { URL: { createObjectURL, revokeObjectURL }, setTimeout } = window
     
      const blob = new Blob([data], { type })
      const url = createObjectURL(blob)
     
      const anchor = createElement('a')
      anchor.setAttribute('href', url)
      anchor.setAttribute('download', name)
      anchor.click()
     
      setTimeout(() => { revokeObjectURL(url) }, 100)
    }
    Source : https://mindsers.blog/fr/post/telech...er-javascript/

    Cependant, il faut tenir compte du fait qu'il soit tout � fait possible que le navigateur block le script car il peut le voir comme malhonn�te !

    A voir donc si c'est vraiment comme �a que vous souhaitez faire. Sinon il est possible �galement de forcer un t�l�chargement via PHP mais �a veut dire qu'il faut faire un redirect d'URL mais en r�alit�, c'est souvent comme �a que �a se passe.
    Par exemple, les compteurs de t�l�chargements fonctionnent comme �a. Au lieu de rediriger directement vers le fichier final, le lien dirige vers une page qui va faire "+1" sur l'ID du fichier et il va ensuite rediriger vers une page qui va forcer le t�l�chargement

  3. #3
    R�dacteur/Mod�rateur

    Avatar de SpaceFrog
    Homme Profil pro
    D�veloppeur Web Php Mysql Html Javascript CSS Apache - Int�grateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 659
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 75
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activit� : D�veloppeur Web Php Mysql Html Javascript CSS Apache - Int�grateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 659
    Billets dans le blog
    1
    Par d�faut
    Je ne comprends pas l'int�ret de revenir sur le client pour lancer le t�l�chargement.
    La page de traitement du formulaire peut directement faire un force download en php ...
    Ma page Developpez - Mon Blog Developpez
    Pr�sident du CCMPTP (Comit� Contre le Mot "Probl�me" dans les Titres de Posts)
    Deux r�gles du succ�s: 1) Ne communiquez jamais � quelqu'un tout votre savoir...
    Votre post est r�solu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de D�veloppez !

  4. #4
    Membre confirm�
    Homme Profil pro
    Responsable de compte
    Inscrit en
    D�cembre 2019
    Messages
    67
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 44
    Localisation : France, Hauts de Seine (�le de France)

    Informations professionnelles :
    Activit� : Responsable de compte

    Informations forums :
    Inscription : D�cembre 2019
    Messages : 67
    Par d�faut
    Bonjour,

    C'est ce que j'essaye de faire, mais sans y parvenir.
    J'ai le fichier server.php qui fait le traitement de fichier et ensuite je voudrais appeller download.php mais sans y parvenir (j'ai fait diverses tentatives, j'ai soit des erreurs, soit le t�l�chargement ne s'effectue pas).

    Ci-dessous mon code download.php:

    Code php : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    <?php 
     
    if (!empty($_GET['Finalzip'])) {
    	$filepath = $_GET['Finalzip'];
    	$Finalzip = basename($filepath);
    	$encoded_Finalzip = rawurlencode($Finalzip);
     
    if ($send_header) {
    	header("Content-Disposition: attachment; Finalzip=\"{$encoded_Finalzip}\"");
    	header("Content-Type: {zip}");
    	header("Content-Length: ".filesize($filepath));
    	header('Cache-Control: no-store');
    	readfile($filepath);
    }
     
    }else{
     
    	http_response_code(500);
    }
     
    ?>

  5. #5
    R�dacteur/Mod�rateur

    Avatar de SpaceFrog
    Homme Profil pro
    D�veloppeur Web Php Mysql Html Javascript CSS Apache - Int�grateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 659
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 75
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activit� : D�veloppeur Web Php Mysql Html Javascript CSS Apache - Int�grateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 659
    Billets dans le blog
    1
    Par d�faut
    A priori tu tentes de retourner un zip, mais tu retournes le contenu pas le chemin vers le zip ...
    Comme c'est un zip et qu'un lien vers le zip force le navigateur � la t�l�charger il faut faire un header location vers le path de ton fichier zip


    sinon il faut renvoyer un header de force download
    https://php.developpez.com/faq/?page..._forcedownload
    Ma page Developpez - Mon Blog Developpez
    Pr�sident du CCMPTP (Comit� Contre le Mot "Probl�me" dans les Titres de Posts)
    Deux r�gles du succ�s: 1) Ne communiquez jamais � quelqu'un tout votre savoir...
    Votre post est r�solu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de D�veloppez !

  6. #6
    Membre confirm�
    Homme Profil pro
    Responsable de compte
    Inscrit en
    D�cembre 2019
    Messages
    67
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 44
    Localisation : France, Hauts de Seine (�le de France)

    Informations professionnelles :
    Activit� : Responsable de compte

    Informations forums :
    Inscription : D�cembre 2019
    Messages : 67
    Par d�faut
    Hello SpaceFrog,

    Comment faire pour que mon fichier server.php d�clanche download.php ?

    Avec un include ?
    et le path vers le zip, comment le passer ? include download.php($Finalzip); ?

    Thanks.

  7. #7
    Membre Expert Avatar de darkstar123456
    Homme Profil pro
    D�veloppeur Web
    Inscrit en
    Mars 2008
    Messages
    1 895
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 41
    Localisation : Belgique

    Informations professionnelles :
    Activit� : D�veloppeur Web

    Informations forums :
    Inscription : Mars 2008
    Messages : 1 895
    Par d�faut
    Bonjour,

    Il y a pas mal de choses qui ne vont pas dans ce code.

    1. D'o� vient la condition $send_header ? Dans le code pr�sent�, elle n'est jamais vraie donc les instructions de ce block ne sont jamais ex�cut�es.

    2. Finalzip=\"{$encoded_Finalzip}\"" non ce n'est pas Finalzip= mais filename=.

    3. header("Content-Type: {zip}"); le type de contenu n'est pas correct, il s'agit plut�t de : header("Content-Type: application/zip");.

    4. readfile($filepath); d'apr�s ce que vous avez �crit, � moins que vous ne passiez le chemin complet d'acc�s � votre fichier dans l'URL (et �a serait un �norme trou de s�curit�), la variable $filepath ne contient que le nom du fichier ou une r�f�rence (style un ID). Au lieu d'�crire $filepath = $_GET['Finalzip']; vous devriez �crire le chemin complet d'acc�s � votre fichier : $filepath = dirname(__FILE__).'/../my-files/'.$_GET['Finalzip']; (si par exemple, les fichiers sont dans un sous-dossier "my-files" situ� dans le parent du fichier PHP o� est �crit le code). Vous pouvez aussi �crire "en dur" le chemin d'acc�s mais c'est moins souple : $filepath = '/home/my-domain/uploads/my-files/'.$_GET['Finalzip'];.

    5. D'un point de vue s�curit�, il faudrait aussi v�rifier que le fichier (repr�sent� par $_GET['Finalzip']) fait bien partie d'un fichier autoris� a �tre t�l�charg�


    Voici un bout de code qui fait un peu tout, tout seul.
    Il d�tecte le MIME Type du fichier et son encodage
    Le truc le plus important est de fournir le chemin d'acc�s COMPLET au fichier
    Code php : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    <?php
    if (!empty($_GET['Finalzip'])) {
        $filepath = '/home/my-domain/uploads/my-files/' . $_GET['Finalzip'];
     
        if (file_exists($filepath)) {
            $finfo = finfo_open(FILEINFO_MIME_TYPE);
            header('Content-Type: ' . finfo_file($finfo, $filepath));
     
            $finfo = finfo_open(FILEINFO_MIME_ENCODING);
            header('Content-Transfer-Encoding: ' . finfo_file($finfo, $filepath));
     
            header('Content-disposition: attachment; filename="' . basename($filepath) . '"');
            readfile($filepath);
            exit;
        } else {
            echo PHP_EOL . '<pre>Le fichier n\'existe pas : ' . print_r($filepath, true) . '</pre>' . PHP_EOL;
        }
    }

+ R�pondre � la discussion
Cette discussion est r�solue.

Discussions similaires

  1. [Artichow] Image PNG en caract�res ASCII suite � formulaire en PHP
    Par x86master dans le forum Biblioth�ques et frameworks
    R�ponses: 1
    Dernier message: 09/03/2011, 11h06
  2. [MySQL] Formulaire PHP ->MySQL
    Par shub dans le forum PHP & Base de donn�es
    R�ponses: 14
    Dernier message: 09/02/2010, 22h42
  3. Nom d'un Formulaire Php
    Par etiennegaloup dans le forum Langage
    R�ponses: 2
    Dernier message: 03/11/2005, 21h55
  4. Formulaire PHP+ envoi de fichier joint
    Par GraphicProvider dans le forum Langage
    R�ponses: 2
    Dernier message: 29/10/2005, 18h12
  5. [MySQL] Formulaire php + bdd = perte des sauts de ligne html ?
    Par sunshine33 dans le forum PHP & Base de donn�es
    R�ponses: 8
    Dernier message: 03/10/2005, 11h19

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo