Télécharger une image qui viens juste d'être générée par PHP

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Télécharger une image qui viens juste d'être générée par PHP

par chrislabricole » 01 juin 2008, 17:01

Oops oui pardon ^^

par Ryle » 01 juin 2008, 14:36

Et l'résolu alors ?! ;)

Télécharger une image qui viens juste d'être générée par PHP

par chrislabricole » 01 juin 2008, 14:17

Bonjour,

Quand je génère une image, je voudrais que PHP force le download de cette image générée...

Voici mon code (qui ne force pas le download mais qui la génère...) :
<?php
header ("Content-type: image/png");
$mot_de_passe = $_GET['password'];
$save ='./cartes/'.$mot_de_passe.'.png';

if( !file_exists('./cartes/'.$mot_de_passe.'.png') ){

	$image = imagecreatefrompng('./cartes/carte_vierge.png');
	$rouge = imagecolorallocate($image, 255, 0, 0);

	imagettftext($image, 25, 0, 195, 140, $rouge, 'corbel.ttf', $mot_de_passe);
	
	imagepng($image);
	imagepng($image, $save);
	imagedestroy($image);

} else {
	readfile('./cartes/'.$mot_de_passe.'.png');
}
header("Content-disposition: attachment; filename=$save");
header("Content-Type: application/force-download");
header("Content-Transfer-Encoding: image/png\n"); // Surtout ne pas enlever le \n
header("Content-Length: ".filesize($save));
header("Pragma: no-cache");
header("Cache-Control: must-revalidate, post-check=0, pre-check=0, public");
header("Expires: 0"); 
?>
Merci à vous !


EDIT : en bidouillant encore, j'ai fini par trouver... :D
<?php
header ("Content-type: image/png");
$mot_de_passe = $_GET['password'];
$save ='./cartes/'.$mot_de_passe.'.png';
// Hearders pour le téléchargement
header('Content-Type: application/octet-stream');
header('Content-Disposition: attachment; filename='.basename($save) );
header('Accept-Ranges: bytes');


if( !file_exists('./cartes/'.$mot_de_passe.'.png') ){

	$image = imagecreatefrompng('./cartes/carte_vierge.png');
	$rouge = imagecolorallocate($image, 255, 0, 0);

	imagettftext($image, 25, 0, 195, 140, $rouge, 'corbel.ttf', $mot_de_passe);
	
	imagepng($image);
	imagepng($image, $save);
	imagedestroy($image);

} else {
	readfile('./cartes/'.$mot_de_passe.'.png');
}

// Telechargement
header('Content-Length: '.filesize($save) );
?>