Changeset 101190 in spip-zone


Ignore:
Timestamp:
Dec 18, 2016, 10:08:27 PM (3 years ago)
Author:
maieul@…
Message:

finalement il faut utiliser une action securisée, qui renvoie le document

Location:
_plugins_/formidable/branches/v3_dev
Files:
1 added
3 edited

Legend:

Unmodified
Added
Removed
  • _plugins_/formidable/branches/v3_dev/formidable_fonctions.php

    r101189 r101190  
    1212
    1313include_spip('inc/formidable');
    14 include_spip('inc/utils');
    1514include_spip('public/formidable_criteres');
    1615
     
    165164        $id_formulaires_reponse = strval($id_formulaires_reponse);
    166165        $vignette_par_defaut = charger_fonction('vignette', 'inc/');
    167 
     166        $securiser_action = charger_fonction('securiser_action','inc');
    168167        if (array_key_exists($nom_saisie, saisies_lister_avec_type($saisies_du_formulaire, 'fichiers'))) { //saisies SPIP
    169168                foreach ($saisie_a_modifier as $i => $valeur){
    170                         $param = 'id_formulaire='.$id_formulaire
    171                                 . '&id_formulaires_reponse='.$id_formulaires_reponse
    172                                 . '&fichier='.$valeur['nom']
    173                                 . '&saisie='.$nom_saisie;
    174                         $url = generer_url_action('formidable_recuperer_fichier',$param,true,false);
     169                        $param = serialize(array(
     170                                'formulaire' => $id_formulaire,
     171                                'reponse' => $id_formulaires_reponse,
     172                                'fichier' => $valeur['nom'],
     173                                'saisie' => $nom_saisie
     174                        ));
     175                        $url = $securiser_action('formidable_recuperer_fichier',$param,'',false);
    175176                        $saisie_a_modifier[$i]['url'] = $url;
    176177                        $saisie_a_modifier[$i]['vignette'] = $vignette_par_defaut($valeur['extension'],false);
  • _plugins_/formidable/branches/v3_dev/inc/formidable_fichiers.php

    r101188 r101190  
    115115
    116116}
     117
     118/**
     119 * Fournit à l'utilisateur·trice un fichier qui se trouve normalement dans un endroit inaccessible, par exemple dans config.
     120 * La fonction ne vérifie ni l'existence effective du fichier,
     121 * ni le droit effectif de l'utilisateur.
     122 * Ceci doit être fait dans l'action qui appelle cette fonction
     123 * @param string $chemin le chemin du fichier
     124 * @param string $f le nom du fichier qui sera envoyé à l'utilisateur·trice.
     125 *
     126**/
     127function formidable_retourner_fichier($chemin, $f) {
     128                        header('Content-Type: '.mime_content_type($chemin));
     129                        header("Content-Disposition: attachment; filename=\"$f\";");
     130                        header("Content-Transfer-Encoding: binary");
     131                        // fix for IE catching or PHP bug issue (inspiré de plugins-dist/dump/action/telecharger_dump.php
     132                        header("Pragma: public");
     133                        header("Expires: 0"); // set expiration time
     134                        header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
     135                        if ($cl = filesize($chemin)) {
     136                                header("Content-Length: " . $cl);
     137                        }
     138                        readfile($chemin);
     139                        exit;
     140}
  • _plugins_/formidable/branches/v3_dev/lang/formidable_fr.php

    r101187 r101190  
    7979        'erreur_autorisation' => 'Vous n’avez pas le droit d’éditer les formulaires du site.',
    8080        'erreur_base' => 'Une erreur technique est survenue durant l’enregistrement.',
     81        'erreur_fichier_introuvable' => 'Le fichier demandé est introuvable.',
    8182        'erreur_generique' => 'Il y a des erreurs dans les champs ci-dessous, veuillez vérifier votre envoi.',
    8283        'erreur_identifiant' => 'Cet identifiant est déjà utilisé.',
Note: See TracChangeset for help on using the changeset viewer.