WASSUP la messagerie instantané pour wordpress
Un petit malin qui n’as pas indiqué son nom vient d’exploiter sur mon blog une faille xss présente sur le plugin wassup. C’est donc une faille de type xss qui permet d’exécuter du javascripte sur la page du plugin wassup qui permet d’afficher la provenance des visiteurs (reférants), les mots clés utilisé sur google pour trouver le site. Et oui, mon wordpress n’est pas a jour.

Voici le genre de code utilisé dans l’url qui permet d’afficher un popup javascripte avec marqué xss.
http://www.electronika.fr/blog/?p=%3E%3Cscript%3Ealert(%22XSS%22)%3C/script%3E
Comme quoi le javascript favorise les hacks. Rien de bien méchant, quoique!
Si on réfléchis il est bien possible de faire des choses plus grave que ça puisque wordpress utilise abondamment ajax basé sur javascript. Il aurait donc été possible d’éxecuter une commande de suppression par exemple en étudiant le code javascripte utilisé par wordpress.
L’auteur à masqué son identité avec le site http://anonymouse.org, a tapé l”url de google puis celle de mon site avec l’url si dessus.
http://anonymouse.org/cgi-bin/anon-www.cgi/http://google.fr
http://anonymouse.org/cgi-bin/anon-www.cgi/http://www.electronika.fr/blog/?p=%3E%3Cscript%3Ealert(%22test%22)%3C/script%3E#
Le résultat, c’est que le scripte est interprété car le plugin wassup parse mal certains caractères. Et le javascript à été” interprété.
Amusant n’est ce pas. Je ne connaissais pas cette faille. Que d’émotion! Évidement pour bien que ce soit amusant, effectuez plusieurs fois cette opération pour afficher plusieurs popup les uns après les autres!
J’ai finalement été hacké indirectement ou directement (c’est selon) par le serveur de anonymouse.org.
Conclusion: Mettre a jour les plugins et/ou désactiver javascript dans votre naviguateur.
août 29th, 2009
Posted by
admin |
Hack, Programmation web - php |
no comments

Port série et le shell
Trés simplement depuis le shell en exécutant ceci dans la console:
printf “\x05″ > /dev/ttyS0 pour envoyer 05 vers le port série classique
printf “\x05″ > /dev/ttyUSB0 pour envoyer 05 vers un adaptateur usb/serie
Important \x permet d’envoyer de l’hexa, sans cela vous ne pourriez pas envoyer la valeur 5 sur votre port série car ce serait le code hexa du caractére 5 (voir table ascii) qui serait transmit, vous vous retrouveriez donc avec la valeur 35 en décimal ou 23 en hexa.
Il faut aussi penser à vérifier la vitesse, en exécutant cette commande:
stty
qui affichera si vous n’avez pas modifié les réglages ceci:
speed 38400 baud; line = 0;
eol = M-^?; eol2 = M-^?; swtch = M-^?;
ixany iutf8
Pour modifier la vitesse:
stty speed 9600
Autres vitesses disponibles: 300,600,1200,2400, 4800,9600,19200,38400,57600,115200
Depuis python:
#!/usr/bin/env python
import serial
ser = serial.Serial(’/dev/ttyUSB0′, 9600, 8, ‘N’, 1, timeout=1)
ser.open()
ser.isOpen()
ser.write(chr(0×05))
ser.close()
En C
A venir
Utiliser gtkterm

Gtkterm permet d’envoyer plusieurs octets a la suite en séparant par un espace chaque octets. Suivant les cas il se peux que vous deviez ne pas envoyer les octets de cette façon car votre hôte peut nécessiter un temps de pause entres chaque octets reçu, dans ce mode de fonctionnement les octets sont transmis sans pause.
utiliser minicom
août 29th, 2009
Posted by
admin |
Programmation web - php, Tondeuse, python |
no comments
Si vous possédez la boutique en ligne boutikone dans ce cas le scripte ci dessous va vous intéresser. Celui-ci va permettre de générer un flux compatible avec le comparateur de prix shopmania. En clair vous allez pouvoir ajouter vos articles sur le site shopmania.fr, ceci vous permettra je l’espère d’augmenter vos ventes d’articles sur internet.

Le scripte génére un flux dont les champs sont séparés par le caractère “|” et le retour à la ligne “\n” signifie la fin de l’article et le début d’un nouveau.
Bien entendu vous devez créer un compte sur shopmania (En bas, rebrique “rejoindre le programme marchant”) puis indiquer l’url du scriptes générant la liste de vos articles.
Le code php
Le code est tout simplement dérivé de celui déja proposé pour le site leguide.com
Le scripte suivant devra être placé dans le répertoire /boutique/admin/ (dépend de votre installation)
Télécharger le scripte

Télécharger le scripte shopmania pour boutikone: feed_shopmania.txt
Le fichier devra être renommé en .php pour fonctionner. Ligne 155, vous pouvez forcer votre propre nom de marque en complétant cette ligne sinon il suffira de commenter cette ligne avec “//” pour afficher la marque réelle de vos articles.
Arès avoir ajouté sur votre site un code de vérification et avoir indiqué le logo de votre boutique votre flux passe en demande de validation puis lorsqu’il est validé vos articles seront visibles sur le site shopmania.fr ( comparaison d’achats ).
Si vous ne possédez pas encore de boutique vous pouvez acheter boutikone à cette adresse: boutikone.com au prix de 599 Euros ou tout simplement louer une boutique pré-installé. Dans ce cas vous laissez de coté la partie technique pour vous consacrer à la vente de vos articles et la promotion de votre boutique.
juillet 14th, 2009
Posted by
admin |
Ecommerce, Logiciel, Programmation web - php |
no comments
Voici ici quelques exemples de détection de bord en php, la première matrice appliqué par convolution amplifie les pointes tandis que le second atténue les pointes.Attention, le scripte suivant écrit dans un fichier image existant vous devez donc autoriser l’écriture sur celui-ci. (chmode 777)
Attention, l’indentation du code à été perdu grâce au magnifique navigateur chrome de google, je l’ai remis en place (retour à la linge) mais reste toujours difficile à lire.

source image: http://tavmjong.free.fr/INKSCAPE/MANUAL/html_fr/Filters-Pixel.html
Filtre appliqué:
-1 -1 -1
-1 7 -1
-1 -1 -1
Diviseur de 9
Résultat:

Code php:
<?php
function filtre($file,$file_out){
if (file_exists($file)){$image = imagecreatefrompng($file);
$x_dimension = imagesx($image);
$y_dimension = imagesy($image);
$new_image = imagecreatetruecolor($x_dimension, $y_dimension);//
for ($x = 0; $x < $x_dimension; $x++) {
for ($y = 0; $y < $y_dimension; $y++) {
$lum=( 7 * pix_luminence($x,$y,$image)
- pix_luminence($x+1,$y,$image)
- pix_luminence($x-1,$y,$image)
- pix_luminence($x,$y+1,$image)
- pix_luminence($x,$y-1,$image)
- pix_luminence($x+1,$y+1,$image)
- pix_luminence($x+1,$y-1,$image)
- pix_luminence($x-1,$y+1,$image)
- pix_luminence($x-1,$y-1,$image)/9);
$color = imagecolorallocate($new_image,$lum,$lum,$lum);
imagesetpixel($new_image, $x, $y, $color);}}
imagejpeg($new_image, $file_out);
return true;
}else{
return false;
}
}
function pix_luminence($x,$y,$image){
$luminance_running_sum=0;
$rgb = imagecolorat($image, $x, $y);
$r = ($rgb >> 16) & 0xFF;
$g = ($rgb >> 8) & 0xFF;
$b = $rgb & 0xFF;
$luminance_running_sum = (0.30 * $r) + (0.59 * $g) + (0.11 * $b);
return $luminance_running_sum;
}
echo”<img src=’dsc_0112×8.png’>”;//fichier source
if (filtre(”dsc_0112×8.png”,”out.jpg”)){
echo” <img src=’out.jpg’>”;
}else{
echo”erreur fichier source inexistant”;
}
?>
Autre filtre de détection de bord:
0 1 0
1 -4 1
0 1 0
diviseur 5 (les opérations sur les 0 ne sont pas faites)

<?php
function filtre($file,$file_out){
if (file_exists($file)){
$image = imagecreatefrompng($file);
$x_dimension = imagesx($image);
$y_dimension = imagesy($image);
$new_image = imagecreatetruecolor($x_dimension, $y_dimension);
//for ($x = 0; $x < $x_dimension; $x++) {
for ($y = 0; $y < $y_dimension; $y++) {
$lum=(-4 * pix_luminence($x,$y,$image)
+ pix_luminence($x+1,$y,$image)
+ pix_luminence($x-1,$y,$image)
+ pix_luminence($x,$y+1,$image)
+ pix_luminence($x,$y-1,$image)/5);
$color = imagecolorallocate($new_image,$lum,$lum,$lum);
imagesetpixel($new_image, $x, $y, $color);
}}
imagejpeg($new_image, $file_out);
return true;
}else{
return false;
}}
function pix_luminence($x,$y,$image){
$luminance_running_sum=0;
$rgb = imagecolorat($image, $x, $y);
$r = ($rgb >> 16) & 0xFF;
$g = ($rgb >> 8) & 0xFF;
$b = $rgb & 0xFF;
$luminance_running_sum = (0.30 * $r) + (0.59 * $g) + (0.11 * $b);
return $luminance_running_sum;
}
echo”<img src=’dsc_0112×8.png’>”;//fichier source
if (filtre(”dsc_0112×8.png”,”out.jpg”)){
echo” <img src=’out.jpg’>”;
}else{
echo”erreur fichier source inexistant”;
}
?>
Autre essai avec une autre matrice plus grande:
0 0 1 0 0
0 0 0 0 0
1 0 -4 0 1
0 0 0 0 0
0 0 1 0 0
Diviseur 5 (les opérations sur les 0 ne sont pas faites)

Autre exemple:
0 0 1 0 00 0 0 0 01 0 -3 0 10 0 0 0 00 0 1 0 0
Diviseur 5 (les opérations sur les 0 ne sont pas faites)

Laissez un commentaire!
Voir aussi:
Flou sur une image
http://k12linux.mesd.k12.or.us/docs/gimp/fr/ch06s07s02.html
http://devernay.free.fr/cours/vision/pdf/c3.pdf
http://devernay.free.fr/cours/vision/pdf/c2.pdf
http://obligement.free.fr/articles/traitement_images_2.php
http://www.genie-des-maths.polymtl.ca/exemple.php?no=70
Effet damier
La même genre de chose mais en python:
http://pingswept.org/2009/03/16/calculating-solar-panel-shading-in-python/
février 17th, 2009
Posted by
admin |
Programmation web - php, Traitement image |
one comment
Un moyen pour parvenir à séparer chaque lettres d’une ligne consiste à effectuer la somme des pixels sur chaque colonnes et de détecter les creux qui indiquent la présence d’un espace et donc de la lettre suivante.
Voici une image modifié afin de faire apparaitre plus facilement un résultat:

Résultat du graphe (somme pixels de chaque colonnes):

Les résultat ici ne sont pas très intéressant car il ne donne qu’une simple idée de la forme de l’image. Il est plus intéressant d’effectuer le même traitement sur une ligne de caractères extraite avec le même procédé mais vus de droite ou de gauche.
Avec une ligne:

Aperçu du graphique (somme des pixels vue de dessus ou dessous):

Aperçu du découpage:
Le seuil qui permet de déterminer si une ligne est vide est ici 1.

Le résultat obtenu au final:
(juste le début)





…
Lien
Reconnaissance de caractères interressant depuis une vebcam
novembre 23rd, 2008
Posted by
admin |
ROC, Traitement image |
no comments
Afin de réaliser un ROC en php il est nécessaire d’arriver à séparer les différentes lettres pour ensuite les analyser et les comparer à une librairie de caractères.
Avant cela il faut arriver a extraire les lignes d’un paragraphe. Voici un exemple:

Graphique du résultat de la somme de pixel noir vue de gauche ou de droite. (Le graph est généré par la librairie artichow)
On constate la première ligne plus large qui correspond au premier sommet sur le graphique… On voit aussi par la même occasion que les sommets dessines un 3 pics et 2 creux, le second pic plus petit que les 1 et le trois et le pic 3 plus grand que le premier et le second, cette caractéristique permettra de reconnaitre rapidement un texte à l’envers.

Aperçu de chaques lignes à extraire.

Résultat, chaques lignes est extraite du paragraphe:





Je proposerais prochainement ici le code complet d’un ocr primaire réalisé en php.
novembre 23rd, 2008
Posted by
admin |
ROC, Traitement image |
one comment
Vous stockez vos date aux format datetime? C’est bien, ce format est adapté pour mysql mais que faire de ce datetime avec php? Pas évident de faire des opérations dessus! Pour effectuer facilement des opérations il est plus simple de convertir du format datetime au format timestamp, pour cela cette petite fonction fait bien l’affaire:
function datetime2timestamp($string) {list($date, $time) = explode(’ ‘, $string);
list($year, $month, $day) = explode(’-', $date);
list($hour, $minute, $second) = explode(’:', $time);
$timestamp = mktime($hour, $minute, $second, $month, $day, $year);
return $timestamp;
}
Cette fonction transforme de ce format: 2008-09-04 11:13:18 en celui-ci : 1204456892
septembre 3rd, 2008
Posted by
admin |
Programmation web - php |
no comments
Avec curl
Il est parfois nécessaire de copier une image provenant d’un autre site web, voila comment faire en utilisant curl. Attention certains serveur web vérifie la présence du référent avant d’autoriser le téléchargement d’une image.
<?php
$ch = curl_init (”http://votre_site/image_name.gif”);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_BINARYTRANSFER,1);
$data=curl_exec ($ch);
curl_close ($ch);
$fp = fopen(”new_file.gif”,’w'); //ecriture en local, le fichier dois déjà exister
fwrite($fp, $data);
fclose($fp);
?>
août 26th, 2008
Posted by
admin |
Programmation web - php |
no comments
Cloaking par référents
Marre de vous faire arnaquer lors d’échange de lien? Vous n’obtenez jamais de backlink dans google? Si c’est le cas c’est que vous avez à faire à plus fort que vous. Le cloaking permet de modifier le contenu de sa page en fonction d’une ip, d’un référant ou les deux. Il existe plusieurs manières d’utiliser le cloaking. Dans cet exemple on va détecter le spider google en identifiant le référant. De cette manière vos liens externes ne seront pas référencés et pas pris en compte par d’algorithme de positionnement de google. Cette technique est je pense beaucoup employé particulièrement par les “crochus” du pr (page rank), même si ont en parle peu. Le cloaking était surtout utilisé pour ajouter des mots clés en masse dans une page web sans que cela gène la navigation pour le visiteur.
Voici un code qui permet de détecter le moteurs de recherche google et d’autres lors de leurs passages sur votre site web. Il vous permettra de conserver votre page rank tout en conservant des liens en dur sur votre site.La liste des référents n’est pas exhaustive. Attention tout de même, vos partenaires seront peu être tentés, s’il connaissent l’existence de cette mascarade de modifier leur référant en utilisant un plugin pour firefox lors de la vérification de la présence du lien retour. Ceci leur permettrais de se faire passer pour le spider google. De même que la fonction cache de google permet d’afficher la page vu par le spider au moment de sont passage. Cette astuce permet tout de même d’arnaquer les webmasters noobs content de faire un échange. Le code donné ici n’est absolument pas optimisé, il vous est livré brut afin de tester le principe.
function moteur_de_recherche(){
//if($_SERVER[HTTP_USER_AGENT]==""){return FALSE;}
if(ereg("Googlebot",$_SERVER[HTTP_USER_AGENT] )){return TRUE;}
if(ereg("googlebot",$_SERVER[HTTP_USER_AGENT] )){return TRUE;}
if(ereg("Googlebot/2.1",$_SERVER[HTTP_USER_AGENT] )){return TRUE;}
if(ereg("Mediapartners",$_SERVER[HTTP_USER_AGENT] )){return TRUE;}
if(ereg("mediapartners",$_SERVER[HTTP_USER_AGENT] )){return TRUE;}
if(ereg("Yahoo",$_SERVER[HTTP_USER_AGENT] )){return TRUE;}
if(ereg("Slurp",$_SERVER[HTTP_USER_AGENT] )){return TRUE;}
if(ereg("yahoo",$_SERVER[HTTP_USER_AGENT] )){return TRUE;}
if(ereg("slurp",$_SERVER[HTTP_USER_AGENT] )){return TRUE;}
if(ereg("MSN",$_SERVER[HTTP_USER_AGENT] )){return TRUE;}
if(ereg("msn",$_SERVER[HTTP_USER_AGENT] )){return TRUE;}
if(ereg("Exabot",$_SERVER[HTTP_USER_AGENT] )){return TRUE;}
if(ereg("sproose",$_SERVER[HTTP_USER_AGENT] )){return TRUE;}
if(ereg("bot",$_SERVER[HTTP_USER_AGENT] )){return TRUE;}
if(ereg("Bot",$_SERVER[HTTP_USER_AGENT] )){return TRUE;}
if(ereg("Orange",$_SERVER[HTTP_USER_AGENT] )){return TRUE;}
if(ereg("orange",$_SERVER[HTTP_USER_AGENT] )){return TRUE;}
if(ereg("NaviWoo",$_SERVER[HTTP_USER_AGENT] )){return TRUE;}
if(ereg("LOOQ",$_SERVER[HTTP_USER_AGENT] )){return TRUE;}
if(ereg("Crawler",$_SERVER[HTTP_USER_AGENT] )){return TRUE;}
if(ereg("NaviWoo",$_SERVER[HTTP_USER_AGENT] )){return TRUE;}
//###########################################
//if(ereg("Mozilla",$_SERVER[HTTP_USER_AGENT] )){return TRUE;}
return FALSE;
}
Exemple d’utilisation:
if(!moteur_de_recherche()){echo"<a href="http://google.fr/">Mon lien externe</a>";
}
Telecharger le fichier ici.
août 10th, 2008
Posted by
admin |
Programmation web - php, webmasters |
no comments
Voici un scripte qui permet d’extraire facilement les mots les plus courants dans un texte. Cette fonction peut être couplé à d’autre fonction afin d’éviter le duplicate content de page internet grâce à l’utilisation d’une base de donnée de synonymes par exemple. Notez que ce scripte peut largement être amélioré afin de tenir compte de l’absence d’espace après un point ou des caractères accolés aux mots.
Fonction qui extrait les mots les plus courants d’ un texte:
header('Content-type: text/html; charset=UTF-8');
$text="
Que vous soyez investisseur dans l'immobilier ou que vous décidiez d'acheter une résidence principale ou un terrain, la loi oblige de signer un document appelé « sous seing privé » ou plus familièrement « sous seing ».
Contrairement à l'acte authentique qui finalise la vente du bien immobilier, le sous seing privé ne nécessite pas l'intervention d'un notaire. Vous pouvez signer un sous seing privé en présence d'un agent immobilier ou d'un avocat par exemple. Ce contrat est considéré comme une promesse de vente. Appelé promesse synallagmatique ou promesse réciproque de vente, ce contrat signé doit comporter une date limite pour signer l'acte authentique. Il est d'usage aussi que l'acheteur verse un acompte au vendeur d'un ordre de 10% du montant total du bien. Cette somme sera évidemment déduite du prix final.
Mais pour préserver aussi bien le futur acquéreur et le vendeur du bien immobilier, le sous seing privé doit être accompagné de garanties appelées « clauses suspensives ». Ces clauses sont suspensives car elles ne dépendent pas de la volonté ni de l'acheteur, ni du vendeur.
-Les clauses suspensives en rapport avec l'acheteur.
Elles sont liées principalement à l'obtention du prêt permettant d'acheter le bien immobilier.
En effet, dans la plupart des cas, l'acheteur demande un crédit immobilier à son organisme bancaire ou financier. Si le prêt n'est pas accordé, la vente n'aura pas lieu, l'acompte sera remboursé ou non débité et l'agent immobilier, s'il y en a un, n'encaissera pas sa commission. A noter que l'inscription au conservatoire des hypothèques du bien immobilier est considérée comme une clause suspensive, tout autant que le droit de préemption par la mairie de la commune où se trouve le bien immobilier.
-Les clauses suspensives en rapport avec le vendeur.
Le vendeur est en charge de livrer un bien en bon état. Les clauses suspensives sont essentiellement liées à d'éventuels travaux concernant par exemple le traitement des termites, la détection de plomb ou d'amiante dans le logement. Il faut savoir que le vendeur doit prendre les travaux à sa charge ou alors baisser le prix de la valeur de ces travaux.
Dans tous les cas, sachez que tout se négocie à condition qu'un sous seing privé soit bien rédigé et précis.
Exemple : Vous êtes acheteur et vous avez signé un sous seing privé incluant une date limite. Si cette date est dépassée, vous avez le droit de récupérer vos arrhes et d'annuler la vente. Mais pourquoi pas dans ce cas demander au vendeur de baisser son prix et de conclure quand même l'affaire ?
A retenir sur le sous seing privé :
Pas d'obligation de présence d'un notaire.
Il doit être très bien détaillé avec une date limite.
Les clauses suspensives sont obligatoires et préservent les intérêts de chacun.
Un délai de rétractation de sept jours est donné aux parties.
";
function gen_tags($text){
//convertir en utf8
$text=strip_tags(utf8_encode($text));
//recuperer les mot du texte
$text_split=split(' ',$text);
//print_r($text_split);
//tableau qui contient le nombre de fois qu'apparait un mot
$tab = Array();
foreach($text_split as $val){
if(array_key_exists($val, $tab)) {
$tab[$val] = $tab[$val]+1;
}else{
$tab[$val]='1';
}
}
arsort($tab);//trier- les mots les plus courant en 1er
return $tab;//return un tableau
}
$tab=gen_tags($text);
foreach($tab as $key => $value){
echo"
".$key." --> <strong>".$value."</strong> Fois";
}
?>
Résultats
Exemple ici du scripte
Télécharger les sources de l’exemple
Autre exemple ici qui permet d’analyser les mots d’une page en indiquant une url.
Lien utiles en rapport avec le référencement de contenu.
Pour générer des fautes de frappes:
http://www.seoblackout.com/2007/12/21/generateur-fautes-frappe
Pour utiliser des synonymes dans vos textes et éviter le duplicate content:
http://www.seoblackout.com/2008/07/11/dictionnaire-synonymes
Nuages de tags:
http://www.lyxia.org/blog/tutoriaux/nuage-de-tags-en-php-77
août 9th, 2008
Posted by
admin |
Programmation web - php |
no comments
Pour ceux qui ne connaissent pas dreamweaver est un logiciel destiné à la création web. Celui ci est utilisé principalement par les webmasters. Il n’existe actuellement pas d’équivalent d’un tel logiciel. dreamweaver à été en effet très bien pensé et il est difficile de s’en séparer tant il est bien conçu.
Je décrirais ici uniquement les quelques fonctionnalités que j’utilise, il en existe bien d’autres.

WYSIWYG
Dreamweaver dispose évidement d’un éditeur WYSIWYG (What you see is what you get) facile d’utilisation.
Il dispose d’un accè facile au code source, 3 modes de vues sont disponible:
- vue simultané du code et du rendu
Client ftp intégré

Le client ftp est très appréciables car il est parfaitement intégré au logiciel, il permet de conserver facilement une copie locale de vos fichiers web. Il dispose d’une fonctionnalité très pratique qui permet d’uploader automatiquement les fichiers lorsque on effectue une modification du code source sur une fichier local.

Ergonomique et polyvalent
Bien qu’au départ conçu pour éditer des fichiers html il est parfaitement à même d’éditer des fichiers php et de nombreux autres type de fichiers grâce a l’utilisation dans certains cas de plugin. La coloration syntaxique est parfaitement au point. Il existe aussi par exemple l’auto-complétion sur les fonctions php avec l’affichage des différents paramètres.
Dreamweaver permet aussi de gagner du temps, en effet il vous aidera à fermer
automatiquement vos balise lorsque vous éditerais un code source html. Cela peut parfois être ennuyeux mais souvent pratique.
Les fonctionnalités remplacer permettent d’effectuer des opérations de remplacement dans du code mais aussi sur plusieurs fichiers à la fois de votre site…

Conclusion
Indispensable, c’est le mot pour ce logiciel qui est vraiment d’outil idéal pour le webmaster professionnel ou le webmaster d’un temps. Sans équivalent en logiciel libre, ce logiciel dispose encore de nombreuses fonctionna litées comme l’ accé au base de données sql.
juillet 22nd, 2008
Posted by
admin |
Programmation web - php, webmasters |
no comments
Ddclient permet de mettre a jour les ip sur le site de zoneedit. Voici une configuration adapté à la plupart des cas. En effet l’ip est récupéré depuis une page web dédié à cela ( checkip.dyndns.org ), cette méthode fonctionne à tous les coup car elle ne dépend pas du protocole de votre routeur.
Avant tout vous devez créer un compte sur le site zoneedit, plus de détail ici.
Installer ddclient
sudo apt-get ddclient
Choisissez zoneedit parmi les propositions et entrez vos nom de domaine séparé par une virgule.
Configurer
sudo nano /etc/ddclient.conf
Le contenu du fichier ddclient.conf:
# Configuration file for ddclient generated by debconf
#
# /etc/ddclient.conf
pid=/var/run/ddclient.pid
protocol=zoneedit1
use=web //ceci interroge une page web pour recuperer votre ip publique
server=dynamic.zoneedit.com //remplacer zoneedit.com par dynamic.zonedit.com
login=votreloginzoneedit
password=’votremotdepassezoneedit’
nomdedomaine1.com,nomdedomaine2.com
Démarrer DDclient
sudo ddclient start
Vous constaterais un message indiquant que la mise ajour des ip c’est bien passé
si la mise a jour a déjà été faite vous aurais ce message sans conséquence sur le fonctionnement
Use of uninitialized value in string ne at /usr/sbin/ddclient line 1973.
Démarrer automatiquement ddclient
Jusqu’à maintenant on lançait ddclient manuellement. Pour lancer le programme automatiquement voici la ligne à ajouter à la fin du fichier /etc/init.d/rc.local
/etc/init.d/ddclient start
Dans /etc/default/ddclient vérifiez que ceci est présent:
run_ipup=”false”
run_daemon=”true”
daemon_interval=”300″
juillet 20th, 2008
Posted by
admin |
Programmation web - php, webmasters |
one comment
Voici ici un moyen de protéger un fichier de manière à le rendre accessible uniquement à certains utilisateur. Pour cela le fichier va être crée à la volé et ne sera donc pas accessible en recopiant le chemin comme on le fait habituellement
Le fichier est en quelque sorte un fichier virtuel.
Voici un exemple:
Pour simplifier la protection est très sommaire en effet, il suffit d’indiquer une valeur a la variable id (paramètre GET modifiable dans l’url) .
Fichier telecharger.php placé à la racine du site:
<?php
if(isset($_GET[’id’]))
{
//le fichier est généré si id possède une valeur
$chem=”/image/image.gif”;
$fichier = fopen($_SERVER[”DOCUMENT_ROOT”].$chem, ‘r+’);
$nbre_vues = fgets($fichier);
if($nbre_vues == NULL)
$nbre_vues = 0;
$nbre_vues++;
fseek($fichier, 0);
fputs($fichier, $nbre_vues);
fclose($fichier);
$nom = ‘image.gif’;
$type = ‘image/jpeg’;
//header(”Cache-Control: public, must-revalidate”);
// header(”Pragma: public”);
header(”Content-Type: “.$type); // le type
//header(”Content-Length: ” . filesize($nom));
//header(’Content-Disposition: attachment; filename=”‘.$nom.’”‘);
header(”Content-Transfer-Encoding: binary”);
readfile($_SERVER[”DOCUMENT_ROOT”].$chem);
}
else
header(’location: index.php’); //redirection si id sans valeur
?>
Executez le scripte en lançant l’url http://votre site.com/telecharger.php , vous constasterez une redirection vers la page index.php de votre site, si celle ci existe
Ensuite spécifiez une valeur id dans l’url en allant sur cet url http://votre site.com/telecharger.php?id=quelquechose
Vous constatez que l’image à été généré depuis le fichier stocké en /image/image.gif.
Ceci a condition que vous ayez mis un fichier à cet endroit.
il semble évident de protéger l’accé aux fichiers par un thaccess dans le repertoire contenant les fichiers en téléchargement.
Notez aussi qu’il faille dans certains cas, suivant la configuration de votre hébergeur autoriser les fonction fopen et url_include en insérant le code suivant dans un fichier .htaccess a la base de votre hébergement ftp:
php_flag “allow_url_fopen” “On”
php_flag “allow_url_include” “On”
Pour proposer d’autres types de fichiers en telechargement il suffira de connaitre le mime du type de fichier, pour du jpeg nous avons utilisé image/jpeg
Lien vers les autres valeurs mimes
Il semble maintenant très facile de proposer des téléchargements uniquement disponible au utilisateurs d’un espace membre.
juillet 16th, 2008
Posted by
admin |
Programmation web - php, webmasters |
5 comments
Voici quelques scripts destiné a la camera ip 207mw axis. Les scriptes on été testé sur cette caméra mais fonctionne probablement sur les modèles de la même famille (206, 207…)
Upload automatique
Pour transférer les fichiers utiliser un client ftp et connectez vous a votre caméra ou utilisez l’utilitaire intégré à l’interface html.
Scripte shell upload d’image toutes les 5 minute.
Les fichiers a modifier ou à créer se trouve dans le répertoire /etc/
Créer le fichier snapshot.script dans le répertoire /etc/ contenant ceci:
#!/bin/sh
shttpclient -o /tmp/image.jpg -u root -w passe_cam http://127.0.0.1/axis-cgi/jpg/image.cgi?resolution=640×480\&compression=1
sftpclient -p votre_serveur_ftp -s -u user_ftp -w passe_ftp -l /tmp/image.jpg -c . -d img.jpg
Modifiez uniquement votre serveur ftp, le nom d’utilisateur et les 2 mot de passes (mot de passe ftp et le mot de passe de la camera)
Veillez a bien avoir indiqué les dns si vous utilisé une ip fixe.
Les fichiers doivent êtres au format unix, pour cela utilisez un bon éditeur comme Notepad++ et cliquez sur convertir en format unix. Cela aura pour effet de remplacer par retour chariot windows (CR + LF) par LF.
Pour que le fichier puisse être lancé il est nécessaire de lui donner les droits chmod 755.
Modifier le fichier user.task.list
Ce fichier permet de lancer des scriptes de façon réguliers.
Celui-ci contient déja ceci:
# /etc/user.task.list - User defined tasks for utask.
# Example 1: Write a message to syslog at noon each day.
[18:11-12:01] once % /usr/bin/logger : “It’s noon”;
# Example 2: Write a message to syslog when the message hello:world is
# received on the utask socket.
pattern((hello:world)) once % /usr/bin/logger : “Hello world!”;
# Example 3: Control output 1 with input 1.
#pattern((IO0:/)) once immune % /bin/iod : -script 1:/;
#pattern((IO0:\)) once immune % /bin/iod : -script 1:\;
Ajoutez cette ligne:
time(h(0-23),m(0,5,10,15,20,25,30,35,40,45,50,55)) once immune % /etc/snapshot.script;
Une fois fait redémarrer la caméra, un fichier image nommé img.jpg sera crée a la base de votre serveur. Toutes les 5 minutes ce fichier sera écrasé par le nouveau.
Upload timestamp (variante)
Pour concerver toutes les images il est possible d’enregistrer sous un nouveau nom les images, pour cela il suffit de modifier le script en ajoutant le timestamp courant de la camera au nom du fichier. Le timestamp correspond au nombre de seconde depuis le 1er janvier 1970.
#!/bin/sh
sec=$(date +’%s’)
shttpclient -o /tmp/image.jpg -u root -w passe_camera http://127.0.0.1/axis-cgi/jpg/image.cgi?resolution=640×480\&compression=1
sftpclient -p votre_serveur_ftp -s -u user_ftp -w passe_ftp -l /tmp/image.jpg -c . -d img_${sec}.jpg
On obtient ainsi des fichiers du genre img_151551515.jpg
Votre camera évidement dois être mis à l’heure pour un fonctionnement correct. (Voir ici comment faire avec un serveur de temps et une ip fixe)
Doc axis sur ce sujet:
http://www.axis.com/techsup/cam_servers/dev/files/script_guide.pdf
http://www.axis.com/techsup/cam_servers/dev/files/axis_scripting_guide_2_1_8.pdf
juillet 16th, 2008
Posted by
admin |
Equipement informatique, Programmation web - php |
8 comments
Si un jour vous aviez voulu effectuer une opération avec curl sur une page de votre propre site vous vous êtes surement rendu compte que ça ne fonctionne pas. En effet infomaniak dispose d’un filtre, il est nécessaire d’indiquer le référant dans votre scripte en indiquant votre nom de domaine comme argument.
juillet 8th, 2008
Posted by
admin |
Programmation web - php |
2 comments
Voici une fonction qui permet de convertir une image en noir et blanc . Attention, le format jpg ne permet pas un noir et blanc complet (voir en bas de page)
La fonction utilise 1 argument pour fixer le seuil de luminance qui détermine si le pixel sera blanc ou noir.
Le scripte:
function img_full_nb($file,$file_out,$limite){ if (file_exists($file)){
$image = imagecreatefromjpeg($file);
$x_dimension = imagesx($image);
$y_dimension = imagesy($image);
$new_image = imagecreatetruecolor($x_dimension, $y_dimension);//
for ($x = 1; $x <= $x_dimension; $x++) {
for ($y = 1; $y <= $y_dimension; $y++) {
$lum=pix_luminence($x,$y,$image);
$color = imagecolorallocate($new_image,$lum,$lum,$lum);
if(pix_luminence($x,$y,$image) < $limite){
$color = imagecolorallocate($new_image,0,0,0);
imagesetpixel($new_image, $x, $y, $color);
}else{
$color = imagecolorallocate($new_image,255,255,255);
imagesetpixel($new_image, $x, $y, $color);
}
}
}
imagejpeg($new_image, $file_out);
return true;
}else{
return false;
}
}
function pix_luminence($x,$y,$image){
$luminance_running_sum=0;
$rgb = imagecolorat($image, $x, $y);
$r = ($rgb >> 16) & 0xFF;
$g = ($rgb >> 8) & 0xFF;
$b = $rgb & 0xFF;
$luminance_running_sum = (0.30 * $r) + (0.59 * $g) + (0.11 * $b);
return $luminance_running_sum;
}
Image originale qui possède déjà un effet poster.

Résultat avec la limite à 20:

Limite à 40:

Limite à 80:
Les traits du visage apparaissent

Limite à 120:
On obtiendra pas mieux pour le texte, dés lors il sera possible de réaliser une reconnaissance de caractère sur cette image noir et blanc.

Limite à 150:
Le logo en bas à gauche devient lui visible ainsi que le texte qu’il contient.

Limite à 180:

Jpeg et pertes de données
Vous vous êtes peu être rendu compte que ces images ne sont pas véritablement en noir et blanc. En effet l’image de sortie a été crée avec la fonction imagejpeg() qui génère une jpg. Le format jpg à adoucit l’image en ajoutant des pixels de couleurs intermédiaire au noir et au blanc.
A partir de maintenant le format png sera utilisé car celui ci ne provoque pas de perte.
Nos images seront belle est bien composé uniquement de pixel noir et blanc.
Pour cela il suffit de modifier
imagejpeg($new_image, $file_out);
par
imagpng($new_image, $file_out);
Version de la librairie GD
Suivant la version de votre librairie il existe des fonctions dédié à ce type de conversion en noir et blanc.
juin 22nd, 2008
Posted by
admin |
Programmation web - php |
one comment
Principe:
L’opération consiste a faire la moyenne des pixels autour pour chacun des pixels de l’image.
vous trouverez des information sur le sur cette page qui explique parfaitement ce qu’est une matrice de convolution:
http://docs.gimp.org/fr/plug-in-convmatrix.html
Les matheux appelle ça un filtre sous forme de matrice:

Voici le principe de la convolution: (extrait du site plus haut)

Attention il faut garder à l’esprit qu’a chaque fois ce filtre s’applique sur un seul pixel à la fois, et donc une partie du scripte consiste à les parcourirs en utilisant des boucles imbriquées. Ici l’exemple ne montre pas bien que que le pixel centrale s’obtient en additionnant le résultat de la multiplication pour chacun des 8 pixels autour du pixel central.
Dans le lien ci-dessus ilest dis ceci:
Le pixel initial a pris la valeur 42 : (40*0)+(42*1)+(46*0) + (46*0)+(50*0)+(55*0) + (52*0)+(56*0)+(58*0) = 42
Si nous avions appliqué cette formule a la lettre on obtiendrait simplement la somme des valeurs des 8 pixels, pour obtenir un flou il faut faire une moyenne et donc diviser par 8.
En fonction du flou recherché il est nécessaire d’utiliser une matrice plus grande et dans ce cas diviser par:
5 x 5 -1 = 24 pour une matrice de 5 pixels de haut par 5 pixels de large.
7 x 7 -1 = 48 pour une matrice de 7 pixels de haut par 7 pixels de large.
9 x 9 -1 = 80 pour une matrice de 9 pixels de haut par 9 pixels de large.
…
Fonction php
function img_flou($file,$file_out){
if (file_exists($file)){$image = imagecreatefromjpeg($file);
$x_dimension = imagesx($image);
$y_dimension = imagesy($image);
$new_image = imagecreatetruecolor($x_dimension, $y_dimension);//
for ($x = 1; $x <= $x_dimension; $x++) {
for ($y = 1; $y <= $y_dimension; $y++) {
$lum=(
pix_luminence($x+1,$y,$image)+
pix_luminence($x-1,$y,$image)+
pix_luminence($x,$y+1,$image)+
pix_luminence($x,$y-1,$image)+
pix_luminence($x+1,$y+1,$image)+
pix_luminence($x-1,$y-1,$image)+
pix_luminence($x+1,$y-1,$image)+
pix_luminence($x-1,$y+1,$image))
/8;
$color = imagecolorallocate($new_image,$lum,$lum,$lum);
imagesetpixel($new_image, $x, $y, $color);
}
}
imagejpeg($new_image, $file_out);
return true;
}else{
return false;
}
}
function pix_luminence($x,$y,$image){
$luminance_running_sum=0;
$rgb = imagecolorat($image, $x, $y);
$r = ($rgb >> 16) & 0xFF;
$g = ($rgb >> 8) & 0xFF;
$b = $rgb & 0xFF;
$luminance_running_sum = (0.30 * $r) + (0.59 * $g) + (0.11 * $b);
return $luminance_running_sum;
}
Avant la fonction de flou

après

La fonction à copier ici
Liens en rapport:
Détection des contours en php
http://tavmjong.free.fr/INKSCAPE/MANUAL/html_fr/Filters-Pixel.html
http://docs.gimp.org/fr/plug-in-convmatrix.html
http://www.xgarreau.org/aide/devel/gd/libgd4.php
http://avisynth.unite-video.com/plugins/Convolution3D.htm
http://tavmjong.free.fr/INKSCAPE/MANUAL/html_fr/Filters-Pixel.html
juin 21st, 2008
Posted by
admin |
Programmation web - php |
8 comments
Voici un petit scripte php qui permet de convertir une image couleur en noir et blanc (Niveau de gris en réalité)
Le principe de conversion est assez simple a réaliser, il consiste a récupérer la luminance de chacun des pixels de l’image en utilisant cette proportion:
luminance = (0.30 * R) + (0.59 * G) + (0.11 * B)
Avec R, G ou B une valeur comprise entre 0 et 255
En effet chaque pixel d’une image couleur est composé des valeurs R,G et B.
La transformation consiste ensuite à créer une image en remplacent les valeurs r,g et b par la valeur de la luminance pour chacun des pixels de l’image.
Le code:
function trans_to_nb($file,$file_out){if (file_exists($file)){
$image = imagecreatefromjpeg($file);
$x_dimension = imagesx($image);
$y_dimension = imagesy($image);
$new_image = imagecreatetruecolor($x_dimension, $y_dimension);//
for ($x = 0; $x < $x_dimension; $x++) {
for ($y = 0; $y < $y_dimension; $y++) {
$luminance_running_sum=0;
$rgb = imagecolorat($image, $x, $y);
$r = ($rgb >> 16) & 0xFF;
$g = ($rgb >> 8) & 0xFF;
$b = $rgb & 0xFF;
$luminance_running_sum = (0.30 * $r) + (0.59 * $g) + (0.11 * $b);
$color = imagecolorallocate($image,
$luminance_running_sum,
$luminance_running_sum,
$luminance_running_sum
);
imagesetpixel($new_image, $x, $y, $color);
}
}
imagejpeg($new_image, $file_out);
return true;
}else{
return false;
}
}
Utilisation
if (trans_to_nb("test.jpg","out.jpg")){echo"<img src="http://www.electronika.fr/blog/wp-admin/out.jpg" />";
}
else
{
echo"erreur fichier source inexistant";
}
Exemple


Attention, veillez a créer le fichier out.jpg dans le même répertoire que le scripte et donner au minimum les droits d’écriture sur out.jpg et de lecture sur test.jpg.
Le fichier source est ici
Autres liens sur le traitement d’images
http://perception.inrialpes.fr/people/Boyer/Teaching/L3/analyse.pdf
juin 21st, 2008
Posted by
admin |
Programmation web - php, Traitement image |
one comment
Moniteur de bande passante en PHP, nécessite d’avoir la main sur le serveur.
Moniteur de bande passante en PHP à tester.
janvier 9th, 2008
Posted by
admin |
Programmation web - php |
no comments
La Classe en détail
Attention, cette classe à été trouvé sur le web, elle appartient à sont auteur. (trouvé ici, heu, non en fait c’est autre part, impossible de retrouver la source)
En tout cas ce scripte, lui, fonctionne parfaitement.
Exemple ici
Cette classe permet d’afficher le Page Rank d’un site, elle affiche une des dix images suivant le page Rank
Téléchargez les images ici: images des différents pr
Placer le dossier “image” à la base de votre domaine ou modifiez le scripte en conséquence.
class pageRank{var $pr;
/*
* convert a string to a 32-bit integer
*/
function StrToNum($Str, $Check, $Magic)
{
$Int32Unit = 4294967296; // 2^32
$length = strlen($Str);
for ($i = 0; $i < $length; $i++) {
$Check *= $Magic;
//If the float is beyond the boundaries of integer (usually +/- 2.15e+9 = 2^31),
// the result of converting to integer is undefined
// refer to http://www.php.net/manual/en/language.types.integer.php
if ($Check >= $Int32Unit) {
$Check = ($Check - $Int32Unit * (int) ($Check / $Int32Unit));
//if the check less than -2^31
$Check = ($Check < -2147483648) ? ($Check + $Int32Unit) : $Check;
}
$Check += ord($Str{$i});
}
return $Check;
}
/*
* Genearate a hash for a url
*/
function HashURL($String)
{
$Check1 = $this->StrToNum($String, 0x1505, 0x21);
$Check2 = $this->StrToNum($String, 0, 0x1003F);
$Check1 >>= 2;
$Check1 = (($Check1 >> 4) & 0x3FFFFC0 ) | ($Check1 & 0x3F);
$Check1 = (($Check1 >> 4) & 0x3FFC00 ) | ($Check1 & 0x3FF);
$Check1 = (($Check1 >> 4) & 0x3C000 ) | ($Check1 & 0x3FFF);
$T1 = (((($Check1 & 0x3C0) << 4) | ($Check1 & 0x3C)) <<2 ) | ($Check2 & 0xF0F );
$T2 = (((($Check1 & 0xFFFFC000) << 4) | ($Check1 & 0x3C00)) << 0xA) | ($Check2 & 0xF0F0000 );
return ($T1 | $T2);
}
/*
* genearate a checksum for the hash string
*/
function CheckHash($Hashnum){
$CheckByte = 0;
$Flag = 0;
$HashStr = sprintf('%u', $Hashnum) ;
$length = strlen($HashStr);
for ($i = $length - 1; $i >= 0; $i --) {
$Re = $HashStr{$i};
if (1 === ($Flag % 2)) {
$Re += $Re;
$Re = (int)($Re / 10) + ($Re % 10);
}
$CheckByte += $Re;
$Flag ++;
}
$CheckByte %= 10;
if (0 !== $CheckByte) {
$CheckByte = 10 - $CheckByte;
if (1 === ($Flag % 2) ) {
if (1 === ($CheckByte % 2)) {
$CheckByte += 9;
}
$CheckByte >>= 1;
}
}
return '7'.$CheckByte.$HashStr;
}
function printrank($url, $type_pr){
// $ch = "6".$this->GoogleCH($this->strord("info:" . $url));
$fp = fsockopen("www.google.com", 80, $errno, $errstr, 30);
if (!$fp) {
echo "$errstr ($errno)<br />\n";
} else {
$out = "GET /search?client=navclient-auto&ch=" . $this->CheckHash($this->HashURL($url)) . "&features=Rank&q=info:" . $url . " HTTP/1.1\r\n" ;
$out .= "Host: www.google.com\r\n" ;
$out .= "Connection: Close\r\n\r\n" ;
fwrite($fp, $out);
while (!feof($fp)) {
$data = fgets($fp, 128);
$pos = strpos($data, "Rank_");
if($pos === false){
}else{
$pagerank = substr($data, $pos + 9);
if($type_pr == 'small') {
$this->pr_image_small($pagerank);
}
else {
$this->pr_image($pagerank);
}
}
}
fclose($fp);
}
}
//display pagerank image. Create your own or download images I made for this script. If you make your own make sure to call them pr0.png, pr1.png, pr2.png etc.
function pr_image($pagerank){
if($pagerank == 0){
$this->pr = "<img src=\"../image/pr/pr0.gif\" title=\"".$title." " .$pagerank. " / 10 \">" ;
}elseif($pagerank == 1){
$this->pr = "<img src=\"../image/pr/pr1.gif\" title=\"".$title." " .$pagerank. " / 10 \">" ;
}elseif($pagerank == 2){
$this->pr = "<img src=\"../image/pr/pr2.gif\" title=\"".$title." " .$pagerank. " / 10 \">" ;
}elseif($pagerank == 3){
$this->pr = "<img src=\"../image/pr/pr3.gif\" title=\"".$title." " .$pagerank. " / 10 \">" ;
}elseif($pagerank == 4){
$this->pr = "<img src=\"../image/pr/pr4.gif\" title=\"".$title." " .$pagerank. " / 10 \">" ;
}elseif($pagerank == 5){
$this->pr = "<img src=\"../image/pr/pr5.gif\" title=\"".$title." " .$pagerank. " / 10 \">" ;
}elseif($pagerank == 6){
$this->pr = "<img src=\"../image/pr/pr6.gif\" title=\"".$title." " .$pagerank. " / 10 \">" ;
}elseif($pagerank == 7){
$this->pr = "<img src=\"../image/pr/pr7.gif\" title=\"".$title." " .$pagerank. " / 10 \">" ;
}elseif($pagerank == 8){
$this->pr = "<img src=\"../image/pr/pr8.gif\" title=\"".$title." " .$pagerank. " / 10 \">" ;
}elseif($pagerank == 9){
$this->pr = "<img src=\"../image/pr/pr9.gif\" title=\"".$title." " .$pagerank. " / 10 \">" ;
}else{
$this->pr = "<img src=\"../image/pr/pr10.gif\" title=\"".$title." " .$pagerank. " / 10 \">" ;
}
}
//display pagerank image. Create your own or download images I made for this script. If you make your own make sure to call them mini_pr0.png, mini_pr1.png, mini_pr2.png etc...
function pr_image_small($pagerank){
$title=gettext("Google PageRank:");
if($pagerank == 0){
$this->pr = "<img src=\"../image/pr/pr0.gif\" title=\"".$title." " .$pagerank. " / 10 \">" ;
}elseif($pagerank == 1){
$this->pr = "<img src=\"../image/pr/pr1.gif\" title=\"".$title." " .$pagerank. " / 10 \">" ;
}elseif($pagerank == 2){
$this->pr = "<img src=\"../image/pr/pr2.gif\" title=\"".$title." " .$pagerank. " / 10 \">" ;
}elseif($pagerank == 3){
$this->pr = "<img src=\"../image/pr/pr3.gif\" title=\"".$title." " .$pagerank. " / 10 \">" ;
}elseif($pagerank == 4){
$this->pr = "<img src=\"../image/pr/pr4.gif\" title=\"".$title." " .$pagerank. " / 10 \">" ;
}elseif($pagerank == 5){
$this->pr = "<img src=\"../image/pr/pr5.gif\" title=\"".$title." " .$pagerank. " / 10 \">" ;
}elseif($pagerank == 6){
$this->pr = "<img src=\"../image/pr/pr6.gif\" title=\"".$title." " .$pagerank. " / 10 \">" ;
}elseif($pagerank == 7){
$this->pr = "<img src=\"../image/pr/pr7.gif\" title=\"".$title." " .$pagerank. " / 10 \">" ;
}elseif($pagerank == 8){
$this->pr = "<img src=\"../image/pr/pr8.gif\" title=\"".$title." " .$pagerank. " / 10 \">" ;
}elseif($pagerank == 9){
$this->pr = "<img src=\"../image/pr/pr9.gif\" title=\"".$title." " .$pagerank. " / 10 \">" ;
}else{
$this->pr = "<img src=\"../image/pr/pr10.gif\" title=\"".$title." " .$pagerank. " / 10 \">" ;
}
}
function get_pr(){
return $this->pr;
}
}
Vous pouvez télécharger la classe php ici: page rank Classe
Utilisation trés simple
include($_SERVER['DOCUMENT_ROOT'].'/conf/inc_pr.php'); //inclure la classe
$gpr = new pageRank();//instancier la classe
$gpr->printrank("http://votresite.fr","small"); //indiquez l'url de votre site
echo ($gpr->get_pr()); //affiche l'image du Page Rank
janvier 7th, 2008
Posted by
admin |
Programmation web - php |
one comment