[RESOLU] Insérer une image pour une 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 : [RESOLU] Insérer une image pour une variable

Re: Insérer une image pour une variable

par yoann38 » 12 mai 2017, 23:18

Bon j'ai pu avancer et enfin compris le problème, ça vient de ma condition en fait
$url_inexistante = get_headers($ligne['photo'], 1);

if (!empty($ligne['photo']) && $ligne['id_simply_user'] <> '1000' && file_exists('annonce/img-big-format/miniature/'.$ligne['photo'])) {
    $image = '../annonce/img-big-format/miniature/'.$ligne['photo'];
	  // Si l'image renvoyé est une 404
      }elseif (!empty($ligne['photo']) && $ligne['id_simply_user'] = '1000' && preg_match("#Not Found#i", $url_inexistante[0])) {
        $ligne['photo'] = 'http://tripday.fr/annonce/img-big-format/defaut.jpg';
          }else{
            $image = '../annonce/remplacement/'.simplification($aLoisirs[$ligne['id_type_loisirs']]).'.jpg';
            }	
Le but est que si l'id_symply_user est différent de 1000 alors on affiche : /annonce/img-big-format/miniature/'.$ligne['photo'];

Si id_symply_user = 1000 et que la page retourne une 404 alors on affiche l'image par defaut

Sinon bah on applique la photo selon le type de loisir

Le problème vient des photos posté par les internautes qui on un id_simply_user différent de 1000

Re: Insérer une image pour une variable

par yoann38 » 12 mai 2017, 17:54

Effectivement, "ne peut etre que utilisé sur des urls"
Effectivement c'est le but puisque je teste afin de savoir si ca rend un NOT FOUND ou pas

Mais pourquoi ca marche pour une page et pas l'autre comme dans mon exemple fourni:
http://tripday.fr/sortie/sortir-avignon.html ( ça marche )
http://tripday.fr/sortie/sortir-voiron.html ( ça marche pas )

Le code est le même pour les 2 pages ...

J'ai fait un var_dump de $url_inextante et j'obtiens donc par exemple :

array (size=11)
0 => string 'HTTP/1.1 404 Not Found' (length=22)
'Server' => string 'nginx/1.2.3' (length=11)
'Date' => string 'Fri, 12 May 2017 17:04:59 GMT' (length=29)
'Content-Type' => string 'text/html; charset=iso-8859-1' (length=29)
'Content-Length' => string '234' (length=3)
'Connection' => string 'close' (length=5)
'Accept-Ranges' => string 'bytes' (length=5)
'X-Varnish' => string '2728308185 2728306629' (length=21)
'Age' => string '51' (length=2)
'Via' => string '1.1 varnish' (length=11)
'X-Varnish-Cache' => string 'HIT' (length=3)

Pour rapel j'ai ce problème que en ligne pas en local

Edit:
J'ai testé ceci mais pareil :
if (!empty($ligne['photo']) && file_exists('annonce/img-big-format/miniature/'.$ligne['photo'])) {
    $image = '../annonce/img-big-format/miniature/'.$ligne['photo'];
	  // Si l'image renvoyé est une 404
      }elseif (preg_match("#Not Found#i", $url_inexistante[0])) {
        $ligne['photo'] = 'http://monsite.fr/annonce/img-big-format/defaut.jpg';
          }else{
            $image = '../annonce/remplacement/'.simplification($aLoisirs[$ligne['id_type_loisirs']]).'.jpg';
            }
Le lien qui génére la 404 du coup:
https://static.ticketmaster.fr/static/i ... 398186.gif

Re: Insérer une image pour une variable

par @rthur » 12 mai 2017, 16:53

Non ça ne veut pas dire cela, fait un effort ou utilise Google Translate si tu ne parles pas anglais.
get_headers(): This function may only be used against URLs
Je ne vais pas te donner la solution clé-en-main car il faut que tu travailles un peu par toi même pour comprendre et apprendre, c'est comme cela que tu progresseras

Re: Insérer une image pour une variable

par yoann38 » 12 mai 2017, 16:28

Je suis pas sur d'avoir compris, mais en gros je ne peut l'utiliser qu'une seule fois c'est pas ça ?
Mais comment régler ce soucis justement ?

Re: Insérer une image pour une variable

par @rthur » 12 mai 2017, 09:06

Lis le message d'erreur, qu'est-ce que tu en comprends ?

Re: Insérer une image pour une variable

par yoann38 » 12 mai 2017, 07:04

Bon en fait j'ai un message d'erreur une fois mis en ligne mais pas de pbm en local.

Warning: get_headers(): This function may only be used against URLs in /home/users6/n/nky7966/www/sortie.php on line 559

Le code est :
$url_inexistante = get_headers($ligne['photo'], 1);
 
  if (!empty($ligne['photo']) && file_exists('annonce/img-big-format/miniature/'.$ligne['photo'])) {
    $image = '../annonce/img-big-format/miniature/'.$ligne['photo'];
	  // Si l'image renvoyé est une 404 ou inférieur à 10 px ...
      }elseif (preg_match("#Not Found#i", $url_inexistante[0])) {
        $ligne['photo'] = '../annonce/img-big-format/defaut.jpg';
          }else{
            $image = '../annonce/remplacement/'.simplification($aLoisirs[$ligne['id_type_loisirs']]).'.jpg';
            }
L'exemple du probème :
http://tripday.fr/sortie/sortir-voiron.html

Mais sur une autre page ou le code agit pareil aucun problème : http://tripday.fr/sortie/sortir-avignon.html
Je ne comprends pas trop je dois dire

Mon Server est en php 7.0 ( si ça peut aider )

Re: Insérer une image pour une variable

par yoann38 » 11 mai 2017, 22:04

Merci
Voici le résultat :
 // Vérification de la photo
  $url_inexistante = get_headers($ligne['photo'], 1);
 
  if (!empty($ligne['photo']) && file_exists('annonce/img-big-format/miniature/'.$ligne['photo'])) {
    $image = '../annonce/img-big-format/miniature/'.$ligne['photo'];
	  // Si l'image renvoyé est une 404 ou inférieur à 10 px ...
      }elseif (preg_match("#Not Found#i", $url_inexistante[0])) {
        $ligne['photo'] = '../annonce/img-big-format/defaut.jpg';
          }else{
            $image = '../annonce/remplacement/'.simplification($aLoisirs[$ligne['id_type_loisirs']]).'.jpg';
            }

Re: Insérer une image pour une variable

par @rthur » 11 mai 2017, 09:25

Soit tu mets ta fonction dans un try/catch et tu analyses le message d'erreur pour savoir si c'est bloquant ou pas.

Soit tu utilises la fonction get_headers() pour vérifier que l'url soit valide avant de faire ton traitement
http://php.net/manual/fr/function.get-headers.php

Re: Insérer une image pour une variable

par yoann38 » 11 mai 2017, 07:01

Oui effectivement, une belle 404.
Du coup comment éviter ceci justement
 // Affiche d'une photo par defaut si la photo est inférieur à 10px
  list($width, $height, $type, $attr) = getimagesize($ligne['photo']);

  if (!empty($ligne['photo']) && file_exists('annonce/img-big-format/miniature/'.$ligne['photo'])) {
    $image = '../annonce/img-big-format/miniature/'.$ligne['photo'];
      }elseif ($height <10 ) {
        $ligne['photo'] = '../annonce/img-big-format/defaut.jpg';
          }else{
            $image = '../annonce/remplacement/'.simplification($aLoisirs[$ligne['id_type_loisirs']]).'.jpg';
            }
Merci du temps qui m'est accordé

Re: Insérer une image pour une variable

par @rthur » 11 mai 2017, 01:09

Le principe marche mais j'ai ce message d'erreur qui s'affiche comment faire pour l'éviter svp:

Warning: getimagesize(https://static.ticketmaster.fr/static/i ... 398186.gif): failed to open stream: HTTP request failed! HTTP/1.1 404 Not Found in C:\wamp\www\azerty\sortie.php on line 561
Le message d'erreur est pourtant plutôt explicite : failed to open stream: HTTP request failed! HTTP/1.1 404 Not Found
Et quand on clic sur le lien de ton image : https://static.ticketmaster.fr/static/i ... 398186.gif

Re: Insérer une image pour une variable

par yoann38 » 10 mai 2017, 21:00

je me réponds à moi même :
// Affiche d'une photo par defaut si la photo est inférieur à 10px
	list($width, $height, $type, $attr) = getimagesize($ligne['photo']);

	if (!empty($ligne['photo']) && file_exists('annonce/img-big-format/miniature/'.$ligne['photo'])) {
		$image = '../annonce/img-big-format/miniature/'.$ligne['photo'];
			}elseif ($height <10 ) {
				$ligne['photo'] = '../annonce/img-big-format/defaut.jpg';
					}else{
						$image = '../annonce/remplacement/'.simplification($aLoisirs[$ligne['id_type_loisirs']]).'.jpg';
						}
Le principe marche mais j'ai ce message d'erreur qui s'affiche comment faire pour l'éviter svp:

Warning: getimagesize(https://static.ticketmaster.fr/static/i ... 398186.gif): failed to open stream: HTTP request failed! HTTP/1.1 404 Not Found in C:\wamp\www\azerty\sortie.php on line 561

Re: Insérer une image pour une variable

par yoann38 » 10 mai 2017, 19:30

oK OK,
Bon j'ai mis ça de façon plus claire enfin je pense :)
if (!empty($ligne['photo']) && file_exists('annonce/img-big-format/miniature/'.$ligne['photo'])) {
		$image = '../annonce/img-big-format/miniature/'.$ligne['photo'];
			}else{
				$image = '../annonce/remplacement/'.simplification($aLoisirs[$ligne['id_type_loisirs']]).'.jpg';
				}
J'ai vu un autre poste qui ma donné une idée :)
Enfait je souhaite faire en sorte que si l'image est plus petite disons que 10px ( je sais c'est très petit ) alors on affiche une image par defaut

Du coup je pensé faire quelque chose comme :
// Affiche d'une photo par defaut si la photo est inférieur à 10px
	list($width, $height, $type, $attr) = getimagesize($ligne['photo']);


	if (!empty($ligne['photo']) && file_exists('annonce/img-big-format/miniature/'.$ligne['photo'])) {
		$image = '../annonce/img-big-format/miniature/'.$ligne['photo'];
			}elseif (!empty($ligne['photo']) && $height <10) {
				$image = 'image par defaut';
					}else{
						$image = '../annonce/remplacement/'.simplification($aLoisirs[$ligne['id_type_loisirs']]).'.jpg';
						}
Mais il doit y avoir une couille dans le paté surement :)

Re: Insérer une image pour une variable

par kevin254kl » 10 mai 2017, 09:03

Bonjour,

Ce que veut dire @rthur c'est que à lire comme ça c'est difficile en un seul bloque,
http://a-pellegrini.developpez.com/tuto ... ing-style/
en développement en général plus ton code est compréhensible plus tu pourra avoir de l'aide facilement.

Re: Insérer une image pour une variable

par @rthur » 09 mai 2017, 20:10

Mon conseil reste le même ;-)

Re: Insérer une image pour une variable

par yoann38 » 09 mai 2017, 19:32

Actuellement c'est dans ma boucle et ca parcour mon repertoir afin de voir si l'image est présente ou pas
while($ligne = $req->fetch(PDO::FETCH_ASSOC)){  

	$image = !empty($ligne['photo']) && file_exists('annonce/img-big-format/miniature/'.$ligne['photo']) ? '../annonce/img-big-format/miniature/'.$ligne['photo'] : '../annonce/remplacement/'.simplification($aLoisirs[$ligne['id_type_loisirs']]).'.jpg';

}else{
// code 
}