passage de 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 : passage de variable à

par netp » 14 août 2008, 17:44

Merci à tous pour vos suggestions !! J'ai vérifié tous les points suggérés et voici le code final qui marche très bien :

Code : Tout sélectionner

if(isset($_GET['img']) && $_GET['img']!="") { $image="contribution/upload/".$_GET['img']; $source = imagecreatefromjpeg($image); // source image $img_redim = imagecreatetruecolor(200, 150); //image miniature vide crée // Les fonctions imagesx et imagesy renvoient la largeur et la hauteur de l'image source $largeur_source = imagesx($source); $hauteur_source = imagesy($source); $largeur_destination = imagesx($img_redim); $hauteur_destination = imagesy($img_redim); // On crée la miniature imagecopyresampled($img_redim, $source, 0, 0, 0, 0, $largeur_destination, $hauteur_destination, $largeur_source, $hauteur_source); // On indique le chemin où positionner l'image redimensionnée $chemin = 'contribution/vignettes/'.$_GET['img'];; Imagejpeg($img_redim,"$chemin" ); //on affiche l'image redimensionnée echo '<div id="imageSoumise"><img src="'.$chemin.'"></div>'; }
encore merci !

par Aureusms » 14 août 2008, 11:02

Oui mais dans ce cas là, PHP peut traiter la variable avec ou sans l'extension ?
I.e
$source = imagecreatefromjpeg("photo/photo3");
//ou
$source = imagecreatefromjpeg("photo/photo3.JpG");

par Ryle » 13 août 2008, 21:15

Ce que je veux dire c'est que je suis pas catégorique sur le fait que le . passe bien lors des transmition par GET...
Ben dis le alors ;)
Quant à moi je suis catégorique là dessus, et le meilleur exemple que tu en ais se trouve dans tous les noms de domaine : ".com", ".fr", ".nimportequoi" et il passe très bien :)
Tiens une petite question pour Ryle (avant qu'il me dispute LOL) :
L'extension est-elle vraiment nécessaire ? Si oui, doit elle être .jpg, .jpeg, .JPG, ... Tu vois le genre ?
Arf, bah pour l'instant tu t'en sors pas mal comparé aux 2 autres ;)

Et en effet, l'extension est importante, elle fait partie intégrante du nom du fichier (même si les dernières versions de windows le masque par défaut). Tu peux ainsi très bien avoir deux fichiers jpg ayant le même nom et pour extension jpg et jpeg (sous windows) voire des JPG, jPg JpEg (sous unix qui distingue la casse). Il est donc important de la spécifier :)

Ceci étant, il est vrai que l'extension ne sert qu'à dire au système quel logiciel utiliser pour ouvrir le fichier. On pourrait donc très bien avoir une image jpeg portant le nom "fichier.mp3" (le seul inconvénient serait que winamp se lance quand on double clique dessus ;))

par Aureusms » 13 août 2008, 19:32

Tu n'as qu'à le rajouter après . C'est pourquoi j'avais préciser ?img=photo3 (et oublié l'extension on est d'accord LOL).

Un p'tit coup de pouce : pour enlever les espaces avant et après ta variable, utilises trim();
Ce qui te donnera :
<?php
$image="photo/".trim($_GET['img']).".jpg";
if (file_exists($image)) $source = imagecreatefromjpeg($image);
else echo 'pas de fichier image';
?>
Tiens une petite question pour Ryle (avant qu'il me dispute LOL) :
L'extension est-elle vraiment nécessaire ? Si oui, doit elle être .jpg, .jpeg, .JPG, ... Tu vois le genre ?

par katagoto » 13 août 2008, 16:05

Mais non, essaye par $_POST, ou alors urlencode(), urldecode()...
Aucun rapport. Il envoi une chaine de caractère correspondant au nom/chemin du fichier. Il pourrait l'envoyer en get, en post ou par pigeon voyageur que ca n'y changerait rien... et côté caractères spéciaux à encoder, "toto.jpg" ca me parait assez simple à transmettre...
tu as oublié l'extention...
c'est ça qui coince par GET
Une fois encore, je ne vois pas le rapport entre l'omission de l'extension dans la suggestion d'Aureusms et le bug de départ...
Ce que je veux dire c'est que je suis pas catégorique sur le fait que le . passe bien lors des transmition par GET...

par dogmongo » 13 août 2008, 14:28

je ne le savais pas 8-)

par Ryle » 13 août 2008, 14:18

:evil: :evil: :evil:
dans ta variable les apostrophes ne sont pas ajoutés essai donc ca
$source = imagecreatefromjpeg('$image');
C'est archifaux :!:
Une variable contient une valeur, et il peut très bien s'agir d'une chaine, il n'est pas nécessaire d'ajouter des apostrophes ou des guillemets autour. De plus le fait d'utiliser des apostrophes aura pour effet de déclarer la chaine '$image' telle quelle et certainement pas faire appel à la valeur contenue par la variable $image (voir la différence d'interprétation entre apostrophes et guillemets)
Mais non, essaye par $_POST, ou alors urlencode(), urldecode()...
Aucun rapport. Il envoi une chaine de caractère correspondant au nom/chemin du fichier. Il pourrait l'envoyer en get, en post ou par pigeon voyageur que ca n'y changerait rien... et côté caractères spéciaux à encoder, "toto.jpg" ca me parait assez simple à transmettre...
tu as oublié l'extention...
c'est ça qui coince par GET
Une fois encore, je ne vois pas le rapport entre l'omission de l'extension dans la suggestion d'Aureusms et le bug de départ...


Bref, tout ça pour dire qu'on a pas assez d'élément pour t'aider.

Si $source = imagecreatefromjpeg('toto.jpg'); fonctionne, c'est qu'il y a bien une image nommée toto.jpg dans le dossier courrant et qu'elle est du bon type, sinon ca ne fonctionnerait pas. Ton code semblant donc correct, assures-toi que quand tu remplaces 'toto.jpg' par $_GET['img'], la valeur de cette dernière soit bien égale à 'toto.jpg' en l'affichant (genre y a pas d'espace avant ou après..), et en vérifiant que tu ais bien dans l'url de la page la chaine : ?img=toto.jpg ou &img=toto.jpg puisque la donnée est apparement envoyée en GET...

par katagoto » 13 août 2008, 11:38

tu as oublié l'extention...
c'est ça qui coince par GET

par Aureusms » 12 août 2008, 20:31

Hmm si je comprend bien tu as dans une variable $_GET le line vers ton image jpeg ?
Si tu as $_GET['img'] = "photo3"; soit index.php?img=photo3 (on est daccord ?), tu devrais indiquer où ce situe la racine de ta photo, non ? Genre
<?php
$image="photo/".$_GET['img'];
if (file_exists($image)) $source = imagecreatefromjpeg($image);
else echo 'pas de fichier image';
?>
Au fait je te conseille de tester si c'est une image jpg avec pathinfo(); voir http://www.manuelphp.com/php/function.pathinfo.php

par katagoto » 12 août 2008, 19:05

Mais non, essaye par $_POST, ou alors urlencode(), urldecode()...

par dogmongo » 12 août 2008, 18:40

dans ta variable les apostrophes ne sont pas ajoutés essai donc ca
$source = imagecreatefromjpeg('$image');

passage de variable à

par netp » 12 août 2008, 15:33

Bonjour,

Je coince sur une fonction que je n'ai pas l'habitude de manipuler :

Code : Tout sélectionner

$image=$_GET['img']; $source = imagecreatefromjpeg($image); // source image
Me renvoit une image noire alors que si j'écris $source = imagecreatefromjpeg('toto.jpg') c'est tout bon !! Pourtant $_GET['img'] vaut "toto.jpg"

Grand merci