17th
September
2007

Cet article concerne la gestion du cache avec magpierss.
La librairie GPL Magpierss qui permet de parser des flux XML en php possède son propre système de cache qui permet d’éviter de parser à chaque fois les fichiers XML en entrée. Ce cache est mis à jour périodiquement et est généralement assez efficace.
Le problème avec la gestion du cache, losque l’on parse beaucoup de fichiers RSS est que le fichiers générés peuvent prendre beaucoup de place. Ce dernier point peut être problématique pour les sites hébérgés sur du mutualisé, où la place est souvent limitée, voire le nombre de hits ou le traffic limité.
Dans le cas d’un nombre très élevé de flux, cela peut se traduire par l’inaccessibilité du site, voire par une tarfication supérieur de l’hébergeur.
Un moyen très simple, et très rapide permet de désactiver le cache de cette librairie. Il suffit d’aller dans le fichier
rss_fetch.inc puis de chercher la ligne suivante
define(’MAGPIE_CACHE_ON’,'nomdurepertoiredecache’);
et de la remplacer par
define(’MAGPIE_CACHE_ON’,false);
Le cache de magpierss sera donc par défaut désactivé.
Cependant si vous aviez besoin d’activer le cache pour certains flux, il est possible d’inclure dans votre code php, juste avant la fonction de fetch, la ligne suivante :
define(’MAGPIE_CACHE_ON’,'nomdurepertoiredecache’);
Il ne vous faudra pas par la suite oublier de remettre la valeur de ‘MAGPIE_CACHE_ON’ à false, afin de désactiver de nouveau le cache.
N.B. : En modulant le nom du repertoire dans le define avant l’appel de votre fonction de fetch, vous pouvez attribué un repertoire différent de cache pour chaque partie de votre site.
posted in Développement |
24th
July
2007
Vérifier les flux RSS avec magpierss

Si vous utilisez la librairie magpierss pour parser flux xml, et notamment une fonction du type feeparser, vous avez pu vous poser la question de savoir pourquoi on fesait un echo $resultat de la fonction?
La fonction renvoie une chaine de caractere contenant le resultat du traitement du fichier RSS passé en paramêtres. Autrement dit elle sera vide dans le cas d’un fichier mal formé.
L’idée est donc tester le fichier facilement avec cette fonction.
Exemple si votre fonction s’appelle rssread et qu’elle est construite sur le modèle de feedparser
$resulat=rssread($flux,12);
if ($isset($resultat))
{
/* Le fichier est ok et on le traite
/*exemple*/
$html.=$resultat;
}
else
echo “flux non correct”;
Cet exemple n’appelle qu’une fois la fonction readrss, et permet du coup de se débarasser des messages d’errueurs impromptus.
Cet exemple a servi pour vérifier les flux xml entrés par les webmasters sur le site Dimotoo.
Cet
posted in Développement |
24th
July
2007
Eviter les spams des commentaires de categorizator.
J’ai remarqué qu’il y avait pas mal de spams sur les commentaires de ce script en regardant ma base de données (la table des commentaires) de quelques uns de mes sites reposant sur cet annuaire.Au début j’ai commencé avec des ‘delete’ de commentaires contenant la chaine http. mais seulement voila, il semblerait que certains spammeurs programment des bots et vous vous retrouvez vite avec des milliers de commentaires remplis de liens.
Donc voici une solution . J’ai juste repris le très bon travail fait par superpj (audiencestv, merci à lui) sur categorizator pour la proposition de site. donc ça ne marchera que sur cette version.
Voila les modifications à apporter au fichier commentaires.php.
à insérer au début du script
après le <?php
|
if ( isset($_GET[’image’]) || $_POST[’action’] == “add” ) {
session_start();
};
if ( isset($_GET[’image’]) )
{
// Voici les caractères autorisés pour le code
// (j’ai fait exprès de retirer le chiffre 0 et la lettre O pour parer à toute ambiguïté)
$alphanum = “ABCDEFGHIJKLMNPQRSTUVWXYZ123456789″;
// Trouve au hasard un code de 5 caractères
$rand = substr(str_shuffle($alphanum), 0, 5);
// Création d’un hash pour ce code puis injection dans la session
$_SESSION[’image_random_value’] = md5($rand);
// Sélectionne au hasard l’image de fond : img/bg1.jpg ou img/bg2.jpg
$image = imagecreatefromjpeg(”img/bg”.rand(1,2).”.jpg”);
// Blanc en couleur de fond
$bgColor = imagecolorallocate ($image, 255, 255, 255);
// Noir en couleur de texte
$textColor = imagecolorallocate ($image, 0, 0, 0);
// Ecriture du code dans par-dessus l’image
imagestring ($image, 5, 5, 2, $rand, $textColor);
// Paramètres pour éviter la mise en cache …
header(”Expires: Mon, 26 Jul 1997 05:00:00 GMT”);
header(”Last-Modified: ” . gmdate(”D, d M Y H:i:s”) . ” GMT”);
header(”Cache-Control: no-store, no-cache, must-revalidate”);
header(”Cache-Control: post-check=0, pre-check=0″, false);
header(”Pragma: no-cache”);
// Définition du type “image”
header(’Content-type: image/jpeg’);
// Envoi de l’image au navigateur
imagejpeg($image);
// Destruction de l’image pour libérer la mémoire
imagedestroy($image);
exit;
}; |
Puis après le ($action == “add”)
| Citation: |
| if ($PMA_infos[’code_verif’]) faux_code($code,”Erreur :Le code de vérification que vous avez entré est incorrect !”,true); |
Puis intégrer quelque part dans le formulaire le capcha (J’ai laissé le tableau par faineantise, a vous de modifier la mise en page)
| Citation: |
<? if ($PMA_infos[’code_verif’]) {?>
<table>
<tr>
<td colspan=2 >
<table border=0 cellpadding=0 cellspacing=0 width=1>
<tr>
<td align=center valign=bottom nowrap>
<table border=0 cellpadding=2 cellspacing=0 width=100%>
<tr>
<td align=center valign=bottom nowrap>
Veuillez recopier le code de vérification ci-contre : </td>
</tr>
</table> </td>
<td align=center valign=bottom >
<img src=submit_site.php?image border=1 width=60 height=18> </td>
<td align=center valign=bottom class=”text_before_field_add_annuaire”>
<input type=”text” name=”code” maxlength=5 size=5> </td>
</tr>
</table> </td>
</tr></table>
<? }; ?> |
posted in Développement |
23rd
July
2007
Taille des images dans les flux RSS incorrecte avec MagpieRSS
Suite à l’intégration des flux RSS dans le guide Dimotoo! Je me suis apperçu que certains sites utilisaient des images disproportionnées pour illustrer leur flux RSS.
Le problème des images de taille importante est qu’elles peuvent nuire à votre mise en page, surtout si les images sont affichées dans des divs de taille plus petite.
Cet extrait de code repose sur la librairie opensource Magpierss et la fonction feedparser que l’on peut trouver sur de nombreux sites, notamment webrankinfo.
lorsque vous parsez le fichier rss dans feedParser, vous pouvez afficher l’image de la maniere suivante :
$vigne =$item[’enclosure’][’url’];
$html .= “<br />”.$item[’title’].”</a><br style=\”clear:both;\”/>\n”;
if (isset($vigne))
{
list($width, $height, $type, $attr) = getimagesize($vigne);
if ($width>160) $width=140;
if ($height>130) $height=120;
$html .= “<img src=\”".$vigne.”\” width=\”$width\” height=\”$height\” alt=\”".$item[’title’].”\” align=\”left\” vspace=\”3\” hspace=\”3\” style=\”border:1px solid #ccc;\”/>”;
}
Bémols à cette technique :
N’oubliez pas qu’à chaque fois que vous allez afficher une image, avant de l’afficher vous allez ouvrir l’image pour connaitre sa taille. D’où des possibles lenteurs de chargement.
Je vous recommande d’utiliser un système de cache en php, afin de limiter d’accélerer le chargement de vos pages et de ne pas surchargez votre serveur.
posted in Développement |
22nd
July
2007
Conseils pour le référencement
Comme vous avez certainement pu le lire sur ce site ou sur des sites spécialisés dans le domaine du référencement, la mise en page d’un site doit être optimisée afin de faciliter son référencement. Il ey st souvent question de balises de titres, en l’occurence des balises h1, h2 et autres.
Le problème est que ces balises ont un affichage prédéfini, souvent même une énorme fonte est utilisée pour les afficher. De plus cet affichage peut être différent d’un navigateur à un autre. Afin de ne pas avoir de mauvaises surprises lors de la mise en page et faciliter son référencement, la solution consiste à passer par les feuilles de styles en css.
Quelques exemples.
Intégrer dans votre feuille de style le code suivant
h1{
display:inline;
font-size:12px;
}
Lorsque vous placerez une balise h1 sur votre page, celle-ci sera donc définie comme ayant une taille de 12px, sans retour chariot.
<h1>titre</h1>
A défaut d’utliser une feuille de style il est possible de définir lors de l’utilisation d’une balise son style
<h1 style= « display:inline;font-size:12px; »>titre </h1>
La hiérarchie des css.
Il vous est possible de cumuler feuille de style + modification lors de son utilisation.Dans ce cas la balise héritera du style défini dans la feuille de style, mais y appliquera les dernière modifications apportées par l’ajout de l’attribut style utilisé lors de l’appel à la balise.
Google accorde une importance à la présence des balises de titres. Cela peut vous apporter un réel avantage pour votre positionnement. Privilégiez dans la mesure du possible les mots clés à l’intérieur de ces balises. Utlisez également avec parcimonie les balises h1. Vous avez plusieurs niveau de titres, utilisez comme titre les balises h1, pour les sosus titres h2, pour les sous titres inférieurs h3 etc.
posted in Développement, Référencement |