17th September 2007

Désactiver le cache de magpierss


magpierss - Php

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 | 1 Comment

24th July 2007

Tester la validité d un flux avec magpierss

Vérifier les flux RSS avec magpierss


verifier flux RSS 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 | 0 Comments

24th July 2007

Spam de commentaires

Halte au spam!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 | 0 Comments

23rd July 2007

Resizer les images provenant de flux RSS

Taille des images dans les flux RSS incorrecte avec MagpieRSS


Développement PHPSuite à 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 | 0 Comments

22nd July 2007

Balises de titres css et référencement

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 | 0 Comments

Aller »
  • Calendar

  • July 2008
    M T W T F S S
    « May    
     123456
    78910111213
    14151617181920
    21222324252627
    28293031