Page 1 sur 1

Génération dynamique d'une image dans Joomla

Posté : 05 janv. 2016, 01:35
par Haiko
Bonjour,
J'ai installé sur un site joomla une extension permettant d'insérer une image dans un lecteur video. Je souhaiterai que cette image puisse être générée de façon dynamique en comportant quelques informations relatives au compte de l'utilisateur connecté. Ceci de façon à prévenir les captures d'écran des vidéos diffusée. Pour ceci, j'appelle un fichier "image.php" sensé générer l'image en question. Seulement, le code dont je dispose n'aboutit à rien et je suis bien incapable de comprendre l'origine de cette erreur. Quelqu'un aurait-il une piste ?
D'avance merci et belle soirée. H.
<?php 
//error_reporting(0);
/* Filename: image.php
*/

//Joomla function to retrieve user info
define('_JEXEC', 1);

if (file_exists(__DIR__ . '/defines.php'))
{
	include_once __DIR__ . '/defines.php';
}

if (!defined('_JDEFINES'))
{
	define('JPATH_BASE', __DIR__);
	require_once JPATH_BASE . '/includes/defines.php';
}

require_once JPATH_BASE . '/includes/framework.php';

$app = JFactory::getApplication('site');
$user = JFactory::getUser();
if (!$user->guest) {
  if(!$user->name){$username=$user->username;} else{$username=$user->name;}
  $userIP="IP: ". $_SERVER['REMOTE_ADDR'];
  //echo 'Username: ' . $user->username . '<br />';
  //echo 'User ID  : ' . $user->id . '<br />';
}else{
  $username="USER NOT LOGGED IN";
}

$username=strtoupper($username);
$userIP="IP: ". $_SERVER['REMOTE_ADDR'];
// if IP is forwarded
if($_SERVER['HTTP_X_FORWARDED_FOR']){$userIPForwarder="FW: ".$_SERVER['HTTP_X_FORWARDED_FOR'];}
$displaydate=date("d F Y");

if (strlen($username)< 17){$imagewidth=180;}else{$imagewidth=strlen($username)* 10;}
if($_SERVER['HTTP_X_FORWARDED_FOR']){ // if IP is forwarded
	$im = imagecreate($imagewidth, 70); //make room for date
}else{
	$im = imagecreate($imagewidth, 50); 
}
$bg = imagecolorallocate($im, 200, 200, 200);
$textcolor = imagecolorallocate($im, 0, 0, 0);

// Write the string at the top left
imagestring($im, 5, 5, 3, $username, $textcolor);
imagestring($im, 5, 5, 16, $userIP, $textcolor);
if($_SERVER['HTTP_X_FORWARDED_FOR']){ // if IP is forwarded
	imagestring($im, 5, 5, 32, $userIPForwarder, $textcolor);
	imagestring($im, 5, 5, 48, $displaydate, $textcolor);
}else{
	imagestring($im, 5, 5, 32, $displaydate, $textcolor);
}

// Output the image
header('Content-type: image/png',true,200);

imagepng($im);
imagedestroy($im);
?>

Re: Génération dynamique d'une image dans Joomla

Posté : 05 janv. 2016, 02:39
par Patriboom
Bonjour,
selon ce que je comprends, ton code ne fait que repérer le nom, la date, l'IP de l'usager et enregistre cela dans une image PNG.

Es-tu sûr que ton code est appelé et lu?
Vérifie vers quel sous-répertoire est enregistrée ton PNG, je n'en trouve pas mention ci-haut.
Vérifie que t'as les droits en écriture dans le sous-répertoire visé.

Re: Génération dynamique d'une image dans Joomla

Posté : 05 janv. 2016, 02:45
par Patriboom
Aussi, si t'as de la difficulté avec des composants tout-bâtis pour Joomla, tu peux te référer à son concepteur ou à http://forum.joomla.fr/

Re: Génération dynamique d'une image dans Joomla

Posté : 13 janv. 2016, 02:07
par Haikoo
Merci de ta réponse. À vrai dire, je me suis tourné vers le développeur qui n'arrive pas à expliquer pourquoi sur son site ça fonctionne et pas sur le mien. Concernant les deux corrections que tu proposes, comment et où dans le code dois-je mentionner un sous-répertoire et quels devraient être les droits d'écriture de celui-ci selon toi?
Mille mercis!

Re: Génération dynamique d'une image dans Joomla

Posté : 13 janv. 2016, 03:24
par Patriboom
Les droits d'écriture - en local - devraient être www-data pour que Joomla fonctionne à plein régime (si t'es sous Linux; sous windows ... fais « Propriété » sur le répertoire « images » de ton site Joomla et ouvres-y tous les droits (propriétaire, membre, visiteur)

C'est dans la variable $im que tu trouveras le chemin de ton image destination.
ajoute deux

Code : Tout sélectionner

echo $im;
: un au début, l'autre à la fin de ton code, tu devrais trouver ton image et sa destination. Il serait normal que ton image ne s'affiche plus, car PHP n'accepte pas de modifier le « header » après un echo. Ce n'est qu'un echo de déboguage, tu l'enlèveras ensuite.

Et puis ... enregistre-toi comme membre chez PHPfrance et utilise ton identité lorsque tu écris un sujet.