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

Petit nouveau ! | 1 Messages

05 janv. 2016, 01:35

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);
?>

Mammouth du PHP | 881 Messages

05 janv. 2016, 02:39

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é.
Soyez artisans de paix

Mammouth du PHP | 881 Messages

05 janv. 2016, 02:45

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/
Soyez artisans de paix

Haikoo
Invité n'ayant pas de compte PHPfrance

13 janv. 2016, 02:07

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!

Mammouth du PHP | 881 Messages

13 janv. 2016, 03:24

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.
Soyez artisans de paix