8768 sujets

Développement web côté serveur, CMS

Bonjour,
J'ai mis en place la possibilité de télécharger sa fiche de ma bdd.
La personne, clique le script génère une requête met le résultat dans le dossier privacy.
Ca fonctionne nickel chrome. Sauf, que si une personne chope le lien, il peut télécharger la fiche de la personne précédente, vue que le fichier reste sur le serveur.
Ma question est la suivante, il y a t'il possibilité de créer une fiche, sans que ça génère un fichier sur le serveur ? Ou trouver un moyen pour que la fiche, soit détruite après 2 minutes après sa création ?
Mon code :
<?php               
$req = $bdd->prepare('SELECT nom, prenom FROM Compte WHERE id = :id');
$req->execute();        
 $handle = fopen('privacy/Vos_donnees.csv','w');
$req->setFetchMode(PDO::FETCH_ASSOC);
while($donnees = $req->fetch()) 
{
    fputcsv($handle, $donnees, ';');
}
?>


Le ficher Vos_donnees.csv, reste sur le serveur après la création. Niveau sécurité, c'est mauvais car on peut si on a le lien consulter la dernière fiche créer.

Merci par avance pour vos retours.
Modifié par Tintin75 (30 Aug 2018 - 15:52)
Le mime-type d'un fichier CSV est text/csv, tout simplement.
Tu as la liste des mime-type à la fondation Apache :
http://svn.apache.org/repos/asf/httpd/httpd/trunk/docs/conf/mime.types

Il y peu de chances que ton visiteur lise le fichier, vu que tu ne l'envoies jamais. En plus, il faudrait ajouter un header avec le Content-Length.
Une fois le fichier posté tu peux l'effacer avec la fonction unlink
Il vaudrait mieux travailler avec un fichier temporaire ou le nom est aléatoire et sans rapport avec le nom suggéré au visiteur.
http://php.net/manual/fr/function.tmpfile.php
Le mieux serait évidemment de travailler sans fichier et d'envoyer le résultat de la requête sur la sortie.
Je t'invite à jeter un oeil sur cette discussion :
https://forum.phpfrance.com/php-debutant/probleme-avec-header-content-disposition-t268506.html
Meilleure solution
Merci bazooka07, c'est ce que m'avait laissé entendre Greg Lumière hier soir.

Tu es un chef !!!
Modifié par Tintin75 (30 Aug 2018 - 10:20)