Bonsoir à tous,
J'ai un petit problème avec un script PHP et je dois avouer être complètement largué quant à l'origine du problème
Pour expliquer rapidement, j'ai une URL http://www.xxx.com/?userid=test qui retourne une image PNG, le problème c'est que la majorité des forums phpBB n'acceptent que des images au format JPG, PNG, GIF, etc. J'ai donc décidé de créer un script qui à partir de l'URL http://www.xxx.com/test.png va aller récupérer l'image générée par http://www.xxx.com/?userid=test.
La solution envisagée est la suivante : j'ai un .htaccess qui redirige http://www.xxx.com/test.png (qui n'existe pas) vers mon script PHP de façon transparente pour le client. Lorsque siggen.php est appellée j'update d'abord ma bdd afin d'avoir des statistiques sur les signatures appellées, puis je genère l'image.
Mon problème est le suivant, l'incrémentation se fait de +2 en +2 sauf quand je met la génération de l'image en commentaire. On dirait qu'il exécute deux fois l'update de la bdd quand je modifie le header pour afficher le PNG . J'ai essayé diverse solution comme rajouter un compteur mais rien n'y fait.
Si quelqu'un à une piste je l'en remercie d'avance
.htaccess
Code :
- Options -Indexes
- ErrorDocument 401 /siggen.php
- ErrorDocument 403 /siggen.php
- ErrorDocument 404 /siggen.php
|
siggen.php
Code :
- $userid = strtolower(basename($_SERVER['REQUEST_URI'],'.png'));
- if ($userid)
- {
- require_once('./inc/functions.inc.php');
-
- fupdatedb($userid);
- fimgcreate($userid);
- }
|
functions.inc.php
Code :
- function fupdatedb($userid)
- {
- $db = mysql_connect('******', '******', '******');
- mysql_select_db('******');
-
- $sql = 'SELECT id, nbhit FROM stat_sig WHERE userid = \''.$userid.'\'';
- $res = mysql_query($sql) or die('Erreur SQL !<br><br>'.$sql.'<br><br>'.mysql_error());
-
- if (mysql_num_rows($res))
- {
- $row = mysql_fetch_object($res);
- $sql = 'UPDATE stat_sig SET nbhit = '.++$row->nbhit.' WHERE id = '.$row->id;
- mysql_query($sql) or die('Erreur SQL !<br><br>'.$sql.'<br><br>'.mysql_error());
- }
- else
- {
- $sql = 'INSERT INTO stat_sig (userid,nbhit) VALUES (\''.$userid.'\',1)';
- mysql_query($sql) or die('Erreur SQL !<br><br>'.$sql.'<br><br>'.mysql_error());
- }
-
- if ($res) mysql_free_result($res);
- mysql_close($db);
- }
- function fimgcreate($userid)
- {
- header("Content-type: image/png" );
- $img = @imagecreatefrompng('http://www.xxx.com/?userid='.$userid);
- imagepng($img);
- imagedestroy($img);
- }
|
Message édité par HellR le 24-05-2006 à 01:01:24