8791 sujets

Développement web côté serveur, CMS

Hello, j'ai un petit probleme...

J'ai plusieurs sites web qui se partagent le même dossier Image.
Dans ce dossier image j'ai un script watermark. Mon but est d'avoir un watermark différent suivant le site web qui appele l'image.

J'ai testé avec un $_SERVER["SERVER_NAME"] .

// Watermark Image

if ($_SERVER["SERVER_NAME"] == 'www.siteweb1.fr') {

$wmark='site1.png';
$wmark_300='site1_s.png';
} ELSE {

$wmark='site2.png';
$wmark_300='site2.png';
  
}
//Loading Image


Mais il me donne toujours comme referer le site ou se trouve le dossier image et non pas le site web qui appele l'image.
Quelle serait la commande en PHP pour connaitre l'endroit qui appelle mon image.

Merci de votre aide
merci,
j'avais pensé a ca, mais le probleme est que tous les sites sont hébergés sur le meme serveur avec des noms de domaine différents.
Comme $_SERVER['REMOTE_ADDR'] me donne l'IP du serveur, j'ai le meme watermark qui s'affiche pour tous les sites.
tu utilises une image dynamique?

genre image.php?

si oui tu peux transmettre des valeurs dans url genre

image.php?srv=1

sinon donne plus d'info sur ton script de watermark
Modifié par alexiase (09 Nov 2007 - 20:13)
Merci d'essayer de m'aider ...

Donc j'ai une petite 10 aines de sites tous sur la meme base...
Tous les sites sont gerés par un fichier de config. qui défini l'emplacement des dossiers.
 define('DIR_WS_IMAGES', 'http://www.site1.fr/images/');

le site principal (site1.fr) contient toutes les images pour les autres sites
 define('DIR_WS_IMAGES', 'images/');


La gestion des images se fait par la base de donnée MYSQL, elles sont appelées par

tep_image(DIR_WS_IMAGES . $new_products['products_image'], $new_products['products_name'], SMALL_IMAGE_WIDTH, SMALL_IMAGE_HEIGHT)


La fonction tep_image

 function tep_image($src, $alt = '', $width = '', $height = '', $parameters = '') {
    if ( (empty($src) || ($src == DIR_WS_IMAGES)) && (IMAGE_REQUIRED == 'false') ) {
      return false;
    }

    $image = '<img src="' . tep_output_string($src) . '" border="0" alt="' . tep_output_string($alt) . '"';

    if (tep_not_null($alt)) {
      $image .= ' title=" ' . tep_output_string($alt) . ' "';
    }

    if ( (CONFIG_CALCULATE_IMAGE_SIZE == 'true') && (empty($width) || empty($height)) ) {
      if ($image_size = @getimagesize($src)) {
        if (empty($width) && tep_not_null($height)) {
          $ratio = $height / $image_size[1];
          $width = $image_size[0] * $ratio;
        } elseif (tep_not_null($width) && empty($height)) {
          $ratio = $width / $image_size[0];
          $height = $image_size[1] * $ratio;
        } elseif (empty($width) && empty($height)) {
          $width = $image_size[0];
          $height = $image_size[1];
        }
      } elseif (IMAGE_REQUIRED == 'false') {
        return false;
      }
    }

    if (tep_not_null($width) && tep_not_null($height)) {
      $image .= ' width="' . tep_output_string($width) . '" height="' . tep_output_string($height) . '"';
    }

    if (tep_not_null($parameters)) $image .= ' ' . $parameters;

    $image .= '>';

    return $image;
  }


le code du fichier watermark n'apporte pas grand chose, il est dans le dossier image du site1 et il ne colle qu'un logo sur l'image choisie par tep_image.

Je voudrais pouvoir envoyer un logo différent suivant le site qui appele l'image.

A bientot
la tu me donnes la manière que tu utilises pour généré le tag <img ... >

ce qui compte c'est comment tu appeles le script qui va lancer le watermark

c'est une miniature que tu cliques??
une série de photo appelé directe? ....
as tu pensé a passer une variable dans l'appel de tes images qui avec un test ou un switch case pour choisir ton watermark tag ?
J'ai effectivement pensé a envoyer une variable... Mais je dois bien l'avouer, je tatonne car j'essaie d'apprendre le PHP avec uniquement l'aide des forums du net. Et le passage de variable a l'aide de cette fonction, j'ai pas réussi a obtenir autre chose que le plantage de ladite fonction.
Tu peux me montrer un petit exemple?
Merci de ton aide
Bonsoir,


effectivement passer une variable est la solution la plus simple.

Petit exemple.
Appel de l'image:
<img src="server.trucmuche/image.php?server=1" alt="KIWIIIIIIZZZ" title="Kiwi sauvage" />


Script de watermark:
$server = (isset($_GET['server'])) ? (int) $_GET['server'] : 0;
$waterMarks = array(
  'defaut',
  'watermark 1',
  'watermark 2'
);
$waterMark = (isset($waterMarks[$server])) ? $waterMarks[$server] : $waterMarks[0];

Après ceci $watermark contiendrais le texte à utiliser, en espérant que tu y trouves des éléments de réponse.
Modifié par Necromantik (09 Nov 2007 - 23:16)
Merci je vais essayer d'incorporer ca dans ma fonction tep_image sans la planter... Du coté watermark ca va j'y arrive...
Dans la fonction tep_image ca doit aller si je modifie la ligne.

$image = '<img src="' . tep_output_string($src) . '" border="0" alt="' . tep_output_string($alt) . '"';


en


$image = '<img src="' . tep_output_string($src) . '"?server=1 border="0" alt="' . tep_output_string($alt) . '"';


En tout ca merci a vous 2, et a demain si ca marche pas Smiley langue
Modifié par alsaco68 (09 Nov 2007 - 23:29)
ton truc se passe par ici

tep_output_string($src)

donc si l'appel a ton script qui modifie l'image passe directe sans passer par un fichier genre image.php

alors

dans la fonction tep_output_string($src) ajoute une variable

exemple
$server=1;
tep_output_string($src,$server) pour l'appel

et la function elle même

function tep_output_string($src,$server){

//ici $server serai = à 1


}

tu génère ensuite ton image marquée en fonction de la valeur de $server
il fo faireune précision pour comprendre pourquoi 2 méthodes principales

en php on a le droit de faire

<img src="image.php" ...... />
dans ce cas on passe le parametre comme ça
<img src="image.php?server=1........ />

et dans le fichier imaga.php on place le script qui traite l'image
donc c'est direct

autre méthode
on appel la creation de l'image dans le code

par une fonction par exemple
au quel cas tu ajoutes le parametre dans l'appel

comme je l'ai indiqué dans mon message d'avant
J'ai tout essayé ca ne passe pas, impossible de récupérer les variables avec le watermark. Dès que je change un truc ca plante totalement...

Mais j'ai eu une autre idée...
Toutes les images a "watermarker" sont en JPG, si il est possible de faire une redirection htaccess vers un autre domaine ca peut marcher.

Sur le site principal j'ai modifié la gestion des images pour que se soit le htaccess qui appele le fichier image.php (création du watermark)



RewriteCond %{HTTPS} on
RewriteEngine	on
RewriteRule	^(.*)\.jpg	image.php?%{REQUEST_FILENAME}

RewriteCond %{HTTPS} !=on
RewriteEngine	on
RewriteRule	^(.*)\.jpg	image.php?%{REQUEST_FILENAME}



Si je donne pour le site2 comme dossier image www.site2.fr/image2
et que dans image2 je met un .htaccess du type:



RewriteCond %{HTTPS} on
RewriteEngine	on
RewriteRule	^(.*)\.jpg	 www.site1.fr/image/image.php?%{REQUEST_FILENAME}
 

RewriteCond %{HTTPS} !=on
RewriteEngine	on
RewriteRule	^(.*)\.jpg	 www.site1.fr/image/image.php?%{REQUEST_FILENAME}
 




Ca devrait marcher, mais malheureusement ca ne marche pas Smiley decu

Ou est mon erreur ?
Ou n'est ce pas possible de redirriger un type de fichiers vers un autre serveur ?
Hello,

Je récapitule mon probleme, j'ai plusieurs sites web qui se partagent 1 dossier image sur le site 'principal'.
Dans le dossier image du site principal, se trouve un fichier image.php qui créer un watermark.

Tous les sites enfants on une fonction qui appele les images du site principal, et je voudrais avoir un watermark différent pour chaque site.

Fonction qui appelle les images


  function tep_image($src, $server = 'iptel', $alt = '', $width = '', $height = '', $parameters = '') {
    if ( (empty($src) || ($src == DIR_WS_IMAGES)) && (IMAGE_REQUIRED == 'false') ) {
      return false;
    }

// alt is added to the img tag even if it is null to prevent browsers from outputting
// the image filename as default
    $image = '<img src="' . tep_output_string($src) . '" border="0" alt="' . tep_output_string($alt) . '"';
    $image .= ' server="iptel"';  
    if (tep_not_null($alt)) {
    $image .= ' title=" ' . tep_output_string($alt) . ' "';
    }

    if ( (CONFIG_CALCULATE_IMAGE_SIZE == 'true') && (empty($width) || empty($height)) ) {
      if ($image_size = @getimagesize($src)) {
        if (empty($width) && tep_not_null($height)) {
          $ratio = $height / $image_size[1];
          $width = $image_size[0] * $ratio;
        } elseif (tep_not_null($width) && empty($height)) {
          $ratio = $width / $image_size[0];
          $height = $image_size[1] * $ratio;
        } elseif (empty($width) && empty($height)) {
          $width = $image_size[0];
          $height = $image_size[1];
        }
      } elseif (IMAGE_REQUIRED == 'false') {
        return false;
      }
    }

    if (tep_not_null($width) && tep_not_null($height)) {
      $image .= ' width="' . tep_output_string($width) . '" height="' . tep_output_string($height) . '"';
    }

    if (tep_not_null($parameters)) $image .= ' ' . $parameters;

    $image .= '>';

    return $image;
  }



l'image est alors cherchée dans le dossier image du site principal, qui contient un .htaccess qui va appeler image.php afin de créer le watermark.



 
RewriteEngine	on
RewriteCond %{REQUEST_FILENAME} .jpg$
RewriteRule (.*) image.php?%{REQUEST_FILENAME} [QSA,L]
 



Ensuite image.php devrait me permettre de choisir quel watermark je veux assigner a quel site.



<?php
header('Content-type: image/jpeg');
// Image
$file = $QUERY_STRING;
$info = getimagesize($file);

 

$site = $_GET['server'];
 if ($site == 'iptel') {
$wmark='watermark_iptel.png';
$wmark_300='watermark_iptel.png';
 } else {

$wmark='watermark.png';
$wmark_300='watermark_s.png';
   
 }

//Loading Image
.........



J'ai essayé de passer une variable $server=iptel afin de pouvoir tester mais je pense que c'est pas comme cela que ca fonctionne...
Comme je suis un peu newbie en PHP, et que j'essaie depuis 3 jours en cherchant sur les forums, j'ai l'impression d'être completement perdu...

Merci a ceux qui pourront m'aider

a bientot