Affichage d'une image avec un nom variable

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 : Affichage d'une image avec un nom variable

par Je Débute » 01 juin 2005, 08:03

Merci PJL

C'est ce que je pense aussi maintenant.
Comment régler le truc.

J'ai essayé l'indication de Cyrano dans mon méta de formulaire comme ceci

<HEAD>
<META HTTP-EQUIV="CONTENT-TYPE" CONTENT="text/html; charset=windows-1252">
<TITLE></TITLE>
<meta http-equiv="Pragma" content="no-cache" />
>
</HEAD>

Mais cela ne marche pas .

par pjl » 28 mai 2005, 19:07

On dirait que PHP execute d'abord tout , pour envoyer ensuite au client le resualta de son traitement. Ne peut on pas forcer à envoyer l'image au client d'abord et terminer ensuite (effacement du fichier) ?
tu ne peux pas forcer l'ordre dans lequel arrivent les données sur une page web.
et dans ton cas, le code html de ta page est téléchargé par ton navigateur avant que l'image ne soit elle téléchargée, donc dans la pratique, tu effaces l'image alors qu'elle n'a pas encore été téléchargée.

par Cyrano » 28 mai 2005, 17:48

ben non animal :D c'est une balise meta, ça se met dans l'en-tête html entre <head> et </head>

par Je Débute » 28 mai 2005, 14:37

Ah bon et ça se mets où ? Avant la commande, comme cela ?


<meta http-equiv="Pragma" content="no-cache" />
<img src="<?php echo($nomplan); ?>" />

par Cyrano » 28 mai 2005, 14:02

Je crois que tu peux simplifier en forçant la vérification du cache avant d'afficher de vieilles images:

Code : Tout sélectionner

<meta http-equiv="Pragma" content="no-cache" />
Ce sera plus simple que ce bricolage à mon avis.

par Je Débute » 28 mai 2005, 13:53

On dirait que PHP execute d'abord tout , pour envoyer ensuite au client le resualta de son traitement. Ne peut on pas forcer à envoyer l'image au client d'abord et terminer ensuite (effacement du fichier) ?

par Je Débute » 28 mai 2005, 13:43

Lire

PC's s'obstinaient à ne pas afficher le rafraichissement

par Invité » 28 mai 2005, 13:39

Ouh la ça va être difficile d'expliquer.

Je me heurtais à la création d'une image avec
header ("Content-type: image/png");
Je ne sais pas pourquoi d'ailleurs , j'appelais des fonctions etc..
Je suis passé outre en créant une image sur un répertoire .

Cela marche bien ... sauf que Windows XP memorise dans son buffer les images en provenance d'internet et certains PC's s'obstinaient à afficher le rafraichissement, d'où l'idée de créer à chaque fois une image avec un nom aléatoire, de faire le traitement et l'affichage, puis une fois l'affichage fait à l'internaute, détruire le fichier qui ne sert plus à rien.

par Cyrano » 28 mai 2005, 13:31

Depuis un petit moment, je comprends mal l'idée de supprimer le fichier après l'avoir affiché. Quelle est l'idée générale de ton système ?

par Invité » 28 mai 2005, 13:23

Oui je suis d'accord, mais il est bien APRES !

par Cyrano » 28 mai 2005, 13:15

Forcément, si le unlink est avant la ligne d'affichage, tu vas ruiner ton boulot.

par Invité » 28 mai 2005, 13:07

Mon fichier est dans le même répertoire,
et ça ne règle pas le PB, on dirait que unlink efface le fichier avant que l'affichage ai pu se faire .

par Cyrano » 28 mai 2005, 11:53

Tu dois faire la même chose avec unlink();
unlink ("./chemin/vers/repertoire/image/". $nomplan);

par Invité » 28 mai 2005, 11:45

Merci beaucoup Cyrano,

En fait chez moi il semble qu'il y ai une accumulation de 2 problèmes.
Le premier vient d'être réglé grace à toi.

Maintenant si j'active la fonction unlink aprsè ... ça recommance !

<p>
<br />
<img src="<?php echo($nomplan); ?>" />
</p>

<?
unlink ($nomplan);
//effacement du fichier;
?>


Dès que je fais

<p>
<br />
<img src="<?php echo($nomplan); ?>" />
</p>


<?
//unlink ($nomplan);
//effacement du fichier;
?>

c'est bon mais je ne détruits pas le fichier de travail et je fais une accumlation de fichiers aléatoires dans mon répértoire !!!

par Cyrano » 28 mai 2005, 11:23

Bon ok, j'ai fait la correction sur ton fichier qui devient ceci : (explications après)
<?php
// création du plan dans le fichier image plan.png

$code= generer_code();

$nomplan= "$code".".png";

imagepng($image,$nomplan);


?>


<p>
<br />
<img src="<?php echo($nomplan); ?>" />
</p>


<?
unlink ($nomplan);
//effacement du fichier;
?>

<?
//Fonction utilisée pour la génération du code

function generer_code()
{
    $code = "" ;
    $valeur =
    "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ" ;
    for($i = 1 ; $i < 11 ; $i++)
    $code .= substr($valeur,rand(1,62),1) ;
    return $code ;
}
?>
Ce qui se passe, c'est que l'adresse indiquée pour la source du fichier telle quelle implique que l'image est dans le même répertoire que le fichier qui l'appelle. Sinon, il faut modifier l'origine du fichier comme ceci:
<p>
<br />
<img src="./chemin/vers/repertoire/image/<?php echo($nomplan); ?>" />
</p>