Posté le: Ven Jan 09, 2009 9:30 am Sujet du message:
Salut ça faisait longtemps que je n'étais pas passé par là
j'aurai besoin de ton aide comment tu fais pour afficher le PageRank des sites ?
j'ai tenté çà dans fonction
Code:
<?php
//librairie contenant les fonctions generales de l'annuaire
//fichier contenant la fonction d'affichage du PR
include("pr.php");
// Récupération des infos de configuration de l'annuaire
$PMA_infos = PMA_infos();
//si vous voulez travailler en local, vous devez mettre la valeur de ces 2 constantes a false (a la place de true)
// si TEST_URL = true, on testera le code HTTP renvoye par l'URL via la fonction fsockopen
define("TEST_URL",false);
// si TEST_MAIL = true, on verifiera l'existance du domaine de l'adresse email pour voir si il existe
define("TEST_MAIL",false);
/******************************* FONCTIONS POUR LA BD ********************************************/
function connection_BD()
{
global $db_server, $db_user_login, $db_user_pass, $db_name;
//connexion au serveur
$linkid = @mysql_connect($db_server,$db_user_login,$db_user_pass) or die ("Erreur lors de la connection au serveur MySQL !");
//selection de la BD
@mysql_select_db($db_name,$linkid) or die("Impossible de sélectionner la base de données\n<br>\nVoici l'erreur renvoyée par le serveur MySQL :\n<br>\n".mysql_error());
return $linkid;
}
function send_sql($sql,$message)
//envoi la requete $sql a la base et affiche un message si il y a eu un probleme sinon on rend le resultat
{
if(!$res = @mysql_query($sql))
{
$message_erreur = "<font color=\"#ff0000\">\n";
$message_erreur .= "Impossible d'effectuer la requête pour $message\n";
$message_erreur .= "<br><br>\n";
// $message_erreur .= "Voici la requête : \n<br>\n";
// $message_erreur .= "$sql\n";
// $message_erreur .= "<br><br>\n";
$message_erreur .= "Voici le message d'erreur renvoyé par la base de données :\n<br>\n";
die("$message_erreur".mysql_errno()." : ".mysql_error()."</font>\n");
}
return $res;
}
function PMA_infos()
// Récupération des infos de configuration de l'annuaire
{
global $T_infos;
$lk = connection_BD();
$sql_admin = "SELECT * FROM $T_infos ";
$res_admin = send_sql($sql_admin,"recuperer les infos de configuration de l'annuaire");
$result = mysql_fetch_array($res_admin,MYSQL_ASSOC);
mysql_close($lk);
return $result;
};
/**************************** FONCTIONS POUR L'URL REWRITTING **************************************/
function id_to_url_info ()
{
// Le nom des fichiers se terminera par ça
$suffixe = '.html';
// Nombre maximum de caractères pour le nom de la rubrique
$caracteres = 50;
// Remplacer ces caractères ...
$car_speciaux = array( 'À','Á','Â','Ã','Ä','Å','Æ','à','á','â','ã','ä','å','æ','È','É','Ê','Ë','è','é','ê','ë','Ì','Í','Î','Ï','ì','í','î','ï','Ò','Ó','Ô','Õ','Ö','Ø','ò','ó','ô','õ','ö','ø','Ù','Ú','Û','Ü','ù','ú','û','ü','ß','Ç','ç','Ð','ð','Ñ','ñ','Þ','þ','Ý' );
// ... par ceux-ci
$car_normaux = array( 'A','A','A','A','A','A','A','a','a','a','a','a','a','a','E','E','E','E','e','e','e','e','I','I','I','I','i','i','i','i','O','O','O','O','O','O','o','o','o','o','o','o','U','U','U','U','u','u','u','u','B','C','c','D','d','N','n','P','p','Y' );
function id_to_url ($id,$cat,$page,$type='')
{
global $T_infos, $PMA_infos;
// Déterminer s'il faut faire de l'URL Rewritting
if ( $PMA_infos['url_rewritting'] )
{
list( $suffixe, $caracteres, $car_speciaux, $car_normaux ) = id_to_url_info();
// Supprime les accents, supprime les caractères non-alphanumériques, convertit en minuscules, remplace les tirets multiples par un tiret unique, supprime le dernier caractère si c'est un tiret, et limite la chaine aux $caractères premiers caractères
$url = substr( eregi_replace( "\-$", '', eregi_replace( "\-+", '-', strtolower( eregi_replace( "[^A-Za-z0-9]", '-', str_replace($car_speciaux, $car_normaux, $cat) ) ) ) ), 0, $caracteres );
// Applique le suffixe à l'url
$url = $type=='keyw' ? "$url-k$page-$id$suffixe" : "$url-p$page-$id$suffixe";
/****************************** FONCTIONS POUR L'AFFICHAGE ***************************************/
function affiche_site($resultat,$type='index',$mots_reels_recherches='',$nb_mots=0)
//affiche les infos d'un site avec quelques fioritures en plus si c'est un partenaire
//$resultat : enreg pris de la BD avec les infos du site
//$type : type d'affichage different selon qu'on se trouve dans les categories, les tops, les nouveautes ou encore le moteur....
//$type pourra prendre les valeurs suivantes : index, topc, topv, news, search !
{
global $nb_days2benew, $position, $PMA_infos;
?>
<tr>
<td width="100%" align="left">
function show_arbo_en_ligne($id_cat,$page_name = "index.php",$sep = " => ", $sessid = false, $mots_reels_recherches=array(), $nb_mots=0 )
//affiche l'arborescence en ligne a partir d'une categorie
//on part de la categorie dans laquelle on se trouve et on remonte vers les categories meres
{
global $T_categories; //nom de la table utilisee
$id_cat_mere = 1;//pour rentrer dedans
$arbo = '';
while($id_cat_mere)
{
//on va chercher le nom et la categorie mere
$sql = "SELECT id_cat_mere,cat_name FROM $T_categories WHERE id = '$id_cat' ";
$res = send_sql($sql,"créer l'arbo en ligne");
$result = mysql_fetch_array($res,MYSQL_ASSOC);
$id_cat_mere = $result["id_cat_mere"];
$nom = htmlspecialchars($result["cat_name"]);
//lien vers la nouvelle categorie a ajouter dans la ligne
if ( $mots_reels_recherches ) {
for ($i = 0; $i < $nb_mots; $i++)
$nom = keyword_in_bold( $mots_reels_recherches[$i], $nom );
};
if (!$sessid)
$arbo = '<a href="'.id_to_url($id_cat,$result["cat_name"],'1').'" class="arbo_annuaire">'.$nom."</a>" . $sep . $arbo;
else
$arbo = "<a href=\"".addsess2url("$page_name?cat_id=$id_cat",$sessid)."\" class=\"arbo_annuaire\">".$nom."</a>" . $sep . $arbo;
// on passe au suivant
$id_cat = $id_cat_mere;
}
//il faut enlever le separateur qui est en trop la fin...
$arbo = substr($arbo,0,strlen($arbo)-strlen($sep));
$arbo .= "</span>\n";
return $accueil.$arbo;
}
function path2cat($cat_id,$separateur = " > ")
//retourne le chemin complet vers une categorie pour la liste complete des categories
{
global $T_categories; //nom de la table utilisee
$id_cat_mere = 1;
$path = '';
while($id_cat_mere)
{
//creation de la requete
$sql = "select cat_name,id_cat_mere from $T_categories where id = '$cat_id'";
//envoie de la requete
$res = send_sql($sql,"trouver le chemin vers un catégorie dans la création de la liste");
//traitement des resultats
$resultat = mysql_fetch_array($res,MYSQL_ASSOC);
$id_cat_mere = $resultat["id_cat_mere"];
$cat_name = htmlspecialchars($resultat["cat_name"]);
//creation du chemin
if(empty($path))
$path = $cat_name;
else
$path = $cat_name . $separateur . $path;
//on passe au suivant
$cat_id = $id_cat_mere;
}
return $path;
}
function show_list_cats($name_field = "id_cat", $idselected = "", $cache_cat = false)
//affiche dans une liste deroukante la liste des categories
{
global $T_categories; //nom de la table utilisee
//selection des categories
//creation de la requete
if ($cache_cat)
//si il faut cacher certaines categories (submit_site.php)
$sql = "SELECT id FROM $T_categories WHERE activation = 1 AND can_add = 1 ORDER BY cat_name ASC ";
else
//on ne doit cacher aucune categorie (admin)
$sql = "SELECT id FROM $T_categories ORDER BY cat_name ASC ";
//envoi de la requete
$res = send_sql($sql,"trouver les catégories pour créer la liste déroulante");
while ($resultat = mysql_fetch_array($res,MYSQL_ASSOC))
{
$path = path2cat($resultat["id"]);
//ajout de la categorie proprement dite dans les options de la liste
if ($resultat["id"] != $idselected)
$list_cats[] = "<option label=\"$path \" value=$resultat[id]>$path</option>";
else
$list_cats[] = "<option label=\"$path \" value=$resultat[id] selected>$path</option>";
}
//tri par ordre alphabetique
@asort($list_cats);
$list .= @implode("\n",$list_cats);
$list .= "</select>\n";
return $list;
}
function keyword_in_bold($mots,$chaine)
//met en gras les mots cles pour les resultats du moteur de recherche
{ return eregi_replace($mots,"<b>\\0</b>",$chaine); }
/************************************* FONCTIONS DIVERSES ****************************************/
function put_keyw($mots,$google='0')
// Insérer les mots-clefs dans la BDD
{
global $PMA_infos, $T_keywords;
// Si le nom de la table keywords ($T_keywords) n'a pas été défini dans "data_bd_annuaire.php" ...
// ... alors on considère qu'elle n'a pas été renommée et qu'elle s'appelle donc toujours "keywords_annuaire"
$T_keywords or $T_keywords = 'keywords_annuaire';
// Si on a le droit d'enregistrer des mots-clef, qu'il fait plus de 2 caractères et ne contient pas 'http'
if ( $PMA_infos['kw_max'] && strlen($mots)>2 && !preg_match("/http/",$mots) )
{
// On récupère en particulier la liste des lettres accentuées
list( $suffixe, $caracteres, $car_speciaux, $car_normaux ) = id_to_url_info();
// On supprime les accents et les caractères non-alphanumériques, convertit en minuscules, supprime les espaces inutiles, et limite la chaîne aux 75 premiers caractères
$mots = substr( trim( eregi_replace( " +", ' ', strtolower( eregi_replace( "[^A-Za-z0-9&\$\%\'\.\-]", ' ', str_replace($car_speciaux, $car_normaux, $mots) ) ) ) ), 0, 75 );
// On regarde s'il y a des mots bannis
$exclu = false;
foreach ( split(' ',$PMA_infos['kw_exclude']) as $mot_exclu ) {
foreach ( split(' ',$mots) as $mot_cherche ) {
if ( $mot_exclu == $mot_cherche ) {
$exclu = true;
break 2;
};
};
};
// S'il n'y a pas de mots bannis, on peut continuer
if ( !$exclu )
{
$time = time();
$sql_keyw = "SELECT keyw,time FROM $T_keywords WHERE keyw='$mots' ";
$res_keyw = send_sql( $sql_keyw, "chercher le mot-clef dans la base" );
$keyw = mysql_fetch_array( $res_keyw, MYSQL_ASSOC );
if ( $keyw['keyw'] )
{
if ( $keyw['time']<$time-$PMA_infos['kw_delai'] ) {
$sql_keyw = "UPDATE $T_keywords SET time='$time',nbkw=nbkw+1,google='$google' WHERE keyw='$mots' ";
send_sql( $sql_keyw, "mettre a jour le mot-clef de la base" );
};
}
else
{
$sql_keyw = "SELECT count(id) as count FROM $T_keywords ";
$res_keyw = send_sql($sql_keyw,"trouver le nombre de mots-clef de la base");
$keyw = mysql_fetch_array( $res_keyw, MYSQL_ASSOC );
$sql_keyw = "SELECT id FROM $T_keywords ORDER BY time ASC, keyw ASC LIMIT $surplus";
$res_keyw = send_sql($sql_keyw,"trouver les plus vieux mots-clef");
while ( $keyw = mysql_fetch_array($res_keyw,MYSQL_ASSOC) )
{
$sql_keyw = "DELETE FROM $T_keywords WHERE id='$keyw[id]' ";
send_sql( $sql_keyw, "effacer les mots-clef les plus vieux" );
};
};
$sql_keyw = "INSERT INTO $T_keywords (time,keyw,nbkw,google) VALUES ('$time','$mots','1','$google') ";
send_sql( $sql_keyw, "inserer un nouveau mot-clef dans la base" );
};
};
};
};
function trans_accents ($texte)
// fonction permettant de gérer les accents à cause de l'opération RLIKE qui contrairement à LIKE les différencie
{
$accents = array
(
'AÀÁÂÃÄÅÆaàáâãäåæ',
'Bbß',
'CÇcç',
'DÐdð',
'EÈÉÊËeèéêë',
'IÌÍÎÏiìíîï',
'NÑnñ',
'OÒÓÔÕÖØoòóôõöø',
'PÞpþ',
'UÙÚÛÜuùúûü',
'YÝ',
);
function is_scat_of($id_fille,$id_mere)
//verifie si une sous-categorie est la fille(petite fille, arriere petite fille,...) d'une categorie donnee
{
global $T_categories; //nom de la table utilisee
if ($id_fille == 0)
return false;
//creation de la requete
$sql = "SELECT id_cat_mere FROM $T_categories WHERE id = $id_fille ";
//envoi de la requete
$res = send_sql($sql,"trouver la categorie mere");
//traitement du resultat
$id_cat = mysql_result($res,0,"id_cat_mere");
if ($id_cat == $id_mere)
return true;
else
return is_scat_of($id_cat,$id_mere);
}
function concat_arrays($tab_1,$tab_2)
//similaire a la fonction array_merge mais fonctionne sous PHP3
//on va fusionner deux tableaux dans un troisieme
{
$ln_1 = sizeof($tab_1); //ln_1 contient le nombre d'elements dans tab1 et donc forcement dans tab_out aussi....
$tab_out = $tab_1; //on place tout les elements de tab_1 dans le tableau de sortie....
//maintenant on doit rajouter les elements de tab_2
$ln_2 = sizeof($tab_2);
$j = $ln_1; // j sert a se balader dans les elements du tableau tab_out
for ($i=0;$i<$ln_2;$i++,$j++)
$tab_out[$j] = $tab_2[$i];
//on rend le nouveau tableau fusionne
return $tab_out;
}
function is_in_array($valeur,$tab)
//similaire a in_array mais fonctionne sous PHP3
//on rend 1 si la value rse trouve dans le tableau sinon on rend 0
{
$ln = sizeof($tab);
for ($i=0;$i<$ln;$i++)
if ($tab[$i] == $valeur)
return true; //la valeur se trouve dans le tableau
//la valeur n'a pas ete trouvee
return false;
}
function convert_date_us2fr($date_us)
//convertit une date AAAA-MM-JJ en JJ-MM-AAAA
{
//separation des champs
$date_in = explode("-",$date_us);
$date_out = $date_in[2];
$date_out .= "-";
$date_out .= $date_in[1];
$date_out .= "-";
$date_out .= $date_in[0];
return $date_out;
}
function get_datefr_from_tamp($tampon)
//rend la date au format jj-mm-aaaa a partir d'un tampon
{ return date("d-m-Y",$tampon); }
function send_mail($emailto,$sujet,$corps,$emailfrom,$priority=3)
//envoi un email a un visiteur
{
global $email_master,$nom_site;
$corps = $corps;
if ($emailto == $email_master)
//envoi du mail au webmaster
$to = "$nom_site<$email_master>";
else
{
$to = "$emailto";
$corps .= "\n\n\n\nSi vous aussi vous souhaitez installer Rewrite YourPHPAnnuaire sur votre site, vous le trouverez sur http://myphpannuaire.audiencestv.com , n'oubliez pas de visiter le site officiel de Categorizator à l'adresse suivante http://www.categorizator.org";
}
if ($emailfrom == $email_master)
$from = "From: $nom_site<$email_master>\nReply-To: $email_master\n";
else
{ $from = "From: $emailfrom\nReply-To: $emailfrom\n"; }
$options = $from;
$options .= "X-Priority: $priority\n";
//envoi du mail
return @mail($to,$sujet,$corps,$options);
//voici la ligne a utiliser pour les sites heberges chez Online.net pour l'envoi des mails
//pour l'utiliser, il faut enlever les '//' devant les lignes ci-dessous et les mettre devant la ligne ci-dessus !
//return @email("webmaster",$to,$sujet,$corps);
}
function get_nbsites($cat)
//retourne le nombre de sites presents dans une categorie ainsi que dans ses sous-categories
{
global $T_categories,$T_sites; //noms des tables utilisees
//on place la categorie dans un tableau
$list_all_cats[] = $cat;
while (list($cle,$id_cat) = each ($list_all_cats))
//tant qu'on a encore des nouvelles categories
{
//on va chercher toutes les sous-categories de id_cat
$sql_scats = "SELECT id FROM $T_categories WHERE id_cat_mere = '$id_cat' AND activation = 1 ";
//on envoie la requete
$res_scats = send_sql($sql_scats,"trouver le nombre de sous-catégories de $id_cat");
//ajout des categories dans le tableau
while ($result = mysql_fetch_array($res_scats,MYSQL_ASSOC))
$list_all_cats[] = $result["id"];
}
//preparation de la requete pour aller chercher le nombre de site
$sql_nb_sites = "SELECT count(id) as count FROM $T_sites WHERE activation = 1 and (";
$nb_cats = sizeof($list_all_cats);
for ($i=0;$i<$nb_cats-1;$i++)
//on rajoute toutes les sous-categories
$sql_nb_sites .= "id_cat = '$list_all_cats[$i]' or ";
$sql_nb_sites .= "id_cat = '$list_all_cats[$i]') ";
//envoi de la requete
$res_nb_sites = send_sql($sql_nb_sites,"trouver le nombre de sites dans la catégorie $id_cat");
return mysql_result($res_nb_sites,0,"count");
}
/*********************** FONCTIONS POUR LA VERIFICATION DES DONNEES ******************************/
function preremplir_formulaire($url,$fill)
// Préremplir le formulaire d'inscription grâce aux metas et la détection d'images
{
if ( $fill )
{
global $PMA_infos;
if ( $ok ) {
$url_image = "http://thumbnails.alexa.com/image_server.cgi?size=small&url=$url";
};
};
return $url_image;
};
function cherche_presence_url($url,$id_categorie,$max_presence)
//recherche le nombre de presence d'une url dans les tables de l'annuaire
//on retourne les ids des categories
{
global $T_sites,$T_sites_in_wait; //noms des table utilisees
//calcul du nombre de presence de l'url
$presence_in_site = url_exist($url,"$T_sites");
$presence_in_site_wait = url_exist($url,"$T_sites_in_wait");
//on fusionne ces deux tableaux contenant les id des categories ou le site est present
$tab_presence = concat_arrays($presence_in_site,$presence_in_site_wait);
$nb_presence = sizeof($tab_presence);
if($nb_presence) //on a trouve l'url
//si le site est deja present il faut verifier qu'on ne l'a pas deja soumis dans la meme categorie
//et aussi si le nombre maximum de presence n'est pas depasse
{
if(is_in_array($id_categorie,$tab_presence))
{
echo "<CENTER>Ce site a déjà été ajouté/proposé pour dans cette catégorie !</CENTER>\n";
return true; //url deja propose pour la meme categorie
}
if ($nb_presence >= $max_presence)
//on verifie ensuite si l'url ne depasse pas le nombre de presence authorisee
{
echo "<CENTER>Un site ne peut être ajouté que dans $max_presence";
if ($max_presence > 1)
echo " catégories !</CENTER>\n";
else //max = 0 ou max = 1
{ echo " catégorie !</CENTER>\n"; }
return true; //url est deja presente le maximum de fois authorisee
}
}
return false; //l'url n'y est pas encore ou n'as pas depasse le nombre maximum de presence
}
function url_exist($url,$table)
//retourne les id des categories dans lesquelles le site est deja present
{
//creation de la requete
$sql = "SELECT id_cat FROM $table WHERE url = '$url' ";
//envoi de la requete
$res = send_sql($sql,"la recherche de site dans $table");
$present_in_cat = array();
while($resultat = mysql_fetch_array($res,MYSQL_ASSOC))
//pour chaque resultat trouve
$present_in_cat[] = $resultat["id_cat"];
return $present_in_cat;
}
function id_cat_exist($id_cat)
//verifie si l'id de la categorie mere existe
{
global $T_categories; //nom de la table utilisee
if ($id_cat == 0)
//si c'est une categorie principale pas besoin de verifier
return true;
else
{
$sql = "SELECT id FROM $T_categories WHERE id = '$id_cat'";
$res = send_sql($sql,"vérifier si l'id de la catégorie existe");
if (mysql_num_rows($res))
return true;
else //pas de categorie trouvee
{ return false; }
}
}
function hexa_correct($code_hexa)
//verifie si le code hexa est bon
{
//on remet tout en minuscule
$code_hexa = strtolower($code_hexa);
if (!(ereg("^#[0-9a-f]{6}$",$code_hexa)) )
{
$message = "Votre code hexadécimal $code_hexa n'est pas correct !";
$message .= "<br><br>\n";
$message .= "<a href=\"javascript:history.go(-1);\">Retour au formulaire</a>\n";
die ($message);
}
return true;
}
function email_valide($email,$inc = false)
//verifie la validite d'une adresse email : syntaxe + non vide
{
$message = "<br>";
if (empty($email))
{
$message .= "Le champ adresse email ne peut être vide !\n<br>\n";
$email_ok = false;
}
else //l'email a ete entree, on la verifie
{
//verification de la syntaxe
$email_ok = eregi("^[_\.0-9a-z-]+@([0-9a-z-]+\.)+[a-z]{2,4}$",$email);
//verification du domaine
if(TEST_MAIL)
//on doit se connecter pour verifier l'existance du domaine
{
list($user, $domaine) = split("@", $email, 2);
$domain_ok = @checkdnsrr($domaine, "MX");
}
else
//si on travaille en local, on ne se connecte pas pour verifier le domaine
{ $domain_ok = true; }
}
if (!$email_ok || !$domain_ok)
{
$email2 = htmlspecialchars($email);
$message .= "L'adresse email \"$email2\" n'est pas valide !\n<br>\n";
$message .= "<br><br>\n";
$message .= "<a href=\"javascript:history.go(-1);\">Retour au formulaire</a>\n";
echo "<CENTER>$message</CENTER>";
if ($inc) //si on peut faire die() (-> admin)
include("after.php");
exit;
}
return true;
}
function est_vide($champ,$message,$inc = false)
//verifie si un champ est rempli sinon on affiche un message d'erreur
{
$message .= "<br><br>";
$message .= "<a href=\"javascript:history.go(-1);\">Retour au formulaire</a>";
$champ = trim($champ);
if (empty($champ))
{
echo "<CENTER>$message</CENTER>";
if ($inc) //si il faut inclure le fichier de fin (-> submit_site)
include("after.php");
exit;
}
else
return false; //on rend faux pour dire que la variable n'est pas vide !
}
function est_trop_long($champ,$ln_max,$message,$inc = false)
//verifie si un champ n'est pas trop long
{
$ln_champ = strlen($champ);
$message = "$message fait $ln_champ caractères et le maximum autorisé est $ln_max caractères\n";
$message .= "<br><br>\n";
$message .= "<a href=\"javascript:history.go(-1);\">retour au formulaire</a>\n";
if ($ln_champ > $ln_max )
{
echo htmlspecialchars($message);
if ($inc)
include("after.php");
exit;
}
else
return false; //on rend faux si on a pas quitte car trop long
};
function faux_code($code,$message,$inc = false)
//verifie si le code de vérification qui a été entré est correct
{
$message .= "<br><br>";
$message .= "<a href=\"javascript:history.go(-1);\">Retour au formulaire</a>";
$code = trim($code);
if ( ( md5($code)!=$_SESSION['image_random_value'] ) )
{
echo "<CENTER>$message</CENTER>";
if ($inc) //si il faut inclure le fichier de fin (-> submit_site)
include("after.php");
exit;
}
else
return false; //on rend faux pour dire que le code n'est pas incorrect !
}
function est_trop_court($champ,$ln_min,$message,$inc = false)
//verifie si un champ n'est pas trop court
{
$ln_champ = strlen($champ);
$message = "$message fait $ln_champ caractères et le minimum autorisé est $ln_min caractères\n";
$message .= "<br><br>\n";
$message .= "<a href=\"javascript:history.go(-1);\">Retour au formulaire</a>\n";
if ($ln_champ < $ln_min )
{
echo htmlspecialchars($message);
if ($inc)
include("after.php");
exit;
}
else
return false; //on rend faux si on a pas quitte car trop court
}
function est_entier($n)
//verifie si un nombre est bien un entier : de 1 a 9 chiffres sans '.'
{
if (!(ereg("^[0-9]{1,9}$", $n)))
{
$message = "\"$n\" n'est pas un nombre entier!\n";
$message .= "<br><br>\n";
$message .= "<a href=\"javascript:history.go(-1);\">Retour au formulaire</a>\n";
die(htmlspecialchars($message));
}
return true;
}
function est_reel($n)
//verifie si un nombre est bien un reel : de 1 a 9 chiffres sans '.'
{
if (!(ereg("^[0-9]{1,9}"."[.]{0,1}"."[0-9]{0,9}$", $n)))
{
$message = "\"$n\" n'est pas un nombre reel!\n";
$message .= "<br><br>\n";
$message .= "<a href=\"javascript:history.go(-1);\">Retour au formulaire</a>\n";
die(htmlspecialchars($message));
}
return true;
}
function place_dans_intervalle($n,$min,$max,$type = "")
//place le nombre n dans [min,max]
{
if($type == "int")
est_entier($n);
if($type == "float")
est_reel($n);
//si le nombre est vide ou negatif on le met au minimum
if (empty ($n) || $n < 0)
$n = $min;
//on place le nombre dans l'intervalle <-,max]
if ($n > $max)
$n = $max;
//on le place dans [min,max]
if ($n < $min)
$n = $min;
return $n;
}
/********************************* VERIFICATEUR DE LIENS *****************************************/
function url_valide ($url,$inc = false)
//verifie la validite d'une url : commence par http:// + non vide
{
global $PMA_infos;
$message = "";
if (empty($url) || $url == "http://")
$message .= "Votre url ne peut être vide !";
else //on doit verifier l'adresse
{
//on verifie si c'est bien le bon type de site
$cmp_h = strcmp(substr($url,0,7),"http://");
$cmp_n = strcmp(substr($url,0,7),"news://");
$cmp_f = strcmp(substr($url,0,6),"ftp://");
$cmp_m = strcmp(substr($url,0,7),"mailto:");
if ($cmp_h != 0 && $cmp_n != 0 && $cmp_f != 0 && $cmp_m != 0)
$message .= "Url non valide ! Elle doit commencer par http:// (ou news:// ou encore ftp:// ou mailto:)";
//on verifie si l'URL n'est pas KO
if ($cmp_h == 0) //si c'est une URL http://
{
$url_parsee = @parse_url($url);
$host = trim($url_parsee["host"]);
$path = isset($url_parsee['path']) ? trim($url_parsee["path"]) : '/';
if (check_syntaxe_domaine($host))
{
//si la syntaxe semble bonne on verifie la connexion
if ( $PMA_infos['detect_url'] ) {
$tab_return = check_connect($host,$path);
if ($tab_return["statut"] == 0)
$message .= "<br>Impossible de trouver le site $url !\n";
};
}
else
{ $message .= "<br>Erreur de syntaxe dans le domaine du site : $host !"; }
}
}
//si on a un message d'erreur il faut quitter
if ($message)
{
$message .= "<br><br>\n";
$message .= "<a href=\"javascript:history.go(-1);\">Retour au formulaire</a>\n";
echo "<CENTER>$message</CENTER>";
if ($inc)
include("after.php");
exit;
}
else
{ return true; } //on rend vrai car si c'est pas bon on a quitte avant
}
function url_image_valide ($url_image,$inc = false)
//verifie la validite d'une url image : commence par http:// + non vide
{
if ( $url_image ) {
if ( !@getimagesize($url_image) ) {
$message = "L'url de l'image n'est pas correcte !<BR>Si vous n'avez pas d'image, ne remplissez pas ce champ.";
};
};
//si on a un message d'erreur il faut quitter
if ($message)
{
$message .= "<br><br>\n";
$message .= "<a href=\"javascript:history.go(-1);\">Retour au formulaire</a>\n";
echo "<CENTER>$message</CENTER>";
if ($inc)
include("after.php");
exit;
}
else
{
return true;
} //on rend vrai car si c'est pas bon on a quitte avant
};
function check_syntaxe_domaine($domaine)
//verifie la syntaxe du domaine www.domaine.com d'une URL
{
//on verifie la syntaxe du domaine
$domaine_ok = eregi("^(www\.)?[a-z0-9]{1,1}[._a-z0-9-]*[a-z0-9]{1,1}\.[a-z]{2,4}$",$domaine);
//on verifie si ce n'est pas en local
if(!$domaine_ok)
$domaine_ok = ($domaine == "localhost") || ($domaine == "127.0.0.1");
//on verifie si ce n'est pas une IP
if(!$domaine_ok)
$domaine_ok = ereg("^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}$",$domaine);
return $domaine_ok;
}
function check_connect($host,$path)
//verifie la validite de l'adresse, c'est a dire on regarde si le site existe bien...
//on rend dans un tableau :
// "statut" : 0 si KO, 1 si redirect ou bien pour faire passer en local, 2 si OK
// "code" : code HTTP
// "message" : message
{
if(!TEST_URL)
//si on travaille en local, on ne se connecte pas
{
$tab_return["statut"] = 1;
$tab_return["code"] = 0;
$tab_return["message"] = "<font color=\"#ff9900\">Pas de test de connexion</font>\n";
return $tab_return;
}
$connect = 0;
$no_code = 0;
//connexion par socket
if ($fp = @fsockopen($host,80))
{
//traitement du path
if(substr($path,strlen($path)-1) != '/')
{
if(!ereg("\.",$path))
$path .= "/";
}
//envoi de la requete HTTP
fputs($fp,"GET ".$path." HTTP/1.1\r\n");
fputs($fp,"Host: ".$host."\r\n");
fputs($fp,"Connection: close\r\n\r\n");
//on lit le fichier
$line = fread($fp,255);
$en_tete = $line;
//on lit tant qu'on n'est pas la fin du fichier ou qu'on trouve le debut du code html...
while (!feof($fp) && !ereg("<",$line) )
{
$en_tete .= $line;
$line = fread($fp,255);
}
fclose($fp);
//on switch sur le code HTTP renvoye
$no_code = substr($en_tete,9,3);
switch ($no_code)
{
// 2** la page a été trouvée
case 200 : $message = "OK";
$color = "#33cc00";
$connect = 2;
break;
case 204 : $message = "Cette page ne contient rien! (204)";
$color = "#ff9966";
break;
case 206 : $message = "Contenu partiel de la page! (206)";
$color = "#ff9966";
break;
// 3** il y a une redirection
case 301 : $message = "La page a été déplacéé définitivement! (301)";
$message .= seek_redirect_location($en_tete);
$color = "#ff9966";
$connect = 1;
break;
case 302 : $message = "La page a été déplacéé momentanément! (302)";
$message .= seek_redirect_location($en_tete);
$color = "#ff9966";
$connect = 1;
break;
// 4** erreur du coté du client
case 400 : $message = "Erreur dans la requête HTTP! (400)";
$color = "#ff0000";
break;
case 401 : $message = "Authentification requise! (401)";
$color = "#ff0000";
break;
case 402 : $message = "L'accès à la page est payant! (402)";
$color = "#ff0000";
break;
case 403 : $message = "Accès à la page refusé! (403)";
$color = "#ff0000";
break;
case 404 : $message = "Page inexistante! (404)";
$color = "#ff0000";
break;
// 5** erreur du coté du serveur
case 500 : $message = "Erreur interne au serveur! (500)";
$color = "#ff0000";
$connect = 1;
break;
case 502 : $message = "Erreur à cause de la passerelle du serveur! (502)";
$color = "#ff0000";
break;
// cas restant
default : $message = "Erreur non traitée dont le numéro est : $no_code!";
$color = "#000000";
break;
}
}
else
{
$message = "Impossible de se connecter par socket";
$color = "#ff0000";
}
//creation du tableau avec les valeurs a rendre
$data_return["statut"] = $connect; //la page est OK ou KO (200 => OK sinon KO)
$data_return["code"] = $no_code; //code HTTP renvoye
$data_return["message"] = "<font color=\"".$color."\">".$message."</font>\n"; //message a afficher
return $data_return;
}
function seek_redirect_location($header)
//recherche la location de la redirection si l'erreur HTTP renvoyee commence par 3
{
$location = "";
$tab_header = explode("\n",$header);
for ($i=0;$tab_header[$i];$i++)
{
$line = split(":",$tab_header[$i],2);
if(eregi("location",$line[0]))
{
$location = trim($line[1]);
break;
}
}
if ($location)
return "<br>Redirection vers :<br><a href=\"$location\" target=\"_blank\">".$location."</a>\n";
else
return "<br>Aucune adresse de redirection n'a été trouvée...\n";
}
/******************************* FONCTIONS POUR LES SESSIONS *************************************/
function create_session($admin_id,$delai = 3600)
//cree une nouvelle session pour l'administrateur admin_id et rend son id
//delai = 1800 => la session durera 1800 secondes cad 30 minutes
{
if(empty($admin_id))
exit;
global $T_sessions; //nom de la table utilisee
//creation de l'id de la session
$session_id = uniqid((double)microtime()*1000000, true);
//creation des requetes
$sql_del = "DELETE FROM $T_sessions WHERE timestamp < UNIX_TIMESTAMP() ";
$sql_sel = "SELECT count(admin_id) AS count FROM $T_sessions WHERE admin_id = '$admin_id' ";
$sql_ins = "INSERT INTO $T_sessions (session_id,timestamp,admin_id) VALUES ('$session_id',UNIX_TIMESTAMP()+$delai,'$admin_id') ";
//envoi des requete
//on supprime les vieilles sessions
$del = send_sql($sql_del,"supprimer les sessions périmées");
//on verifie si l'admin n'est pas deja logge
$sel = send_sql($sql_sel,"trouver si l'admin est deja logge");
if(mysql_result($sel,0,"count") != 0)
{
?>
Vous vous êtes déjà connecté dans votre partie admin.
<br>
Malheureusement, vous n'avez pas quitter la partie admin "correctement" !
<br>
Pour éviter ce message, <b>quitter la partie admin en utilisant le lien déconnexion</b> !!!
<br>
Pour pouvoir vous relogger, il faudra attendre un peu moins de 30 minutes...
<br><br>
<a href="./">Retour au formulaire d'authentification</a>
<?php
exit;
}
//sin l'admin n'est pas deja logge
if ($ins = send_sql($sql_ins,"insérer la session de la BD"))
return $session_id;
else
die("Impossible de créer une nouvelle session");
}
function check_session($sess_id)
//verifie si une session existe
{
if (empty($sess_id))
return false;
global $T_sessions; //nom de la table utilisee
//creation des requetes
$del = "DELETE FROM $T_sessions WHERE timestamp < UNIX_TIMESTAMP() ";
$sql = "SELECT * FROM $T_sessions WHERE session_id = '$sess_id' ";
//envoi des requetes
$del = send_sql($del,"supprimer les sessions périmées");
$res = send_sql($sql,"vérifier si la session existe toujours");
if (mysql_num_rows($res) == 1) //si on a bien un seul resultat
return true;
else
return false;
}
function addsess2url($url,$session_id)
//ajoute le l'id de la session en parametre a l'URL
{
if(ereg("\?",$url)) //on a deja des parametres
return $url."&session_id=".$session_id;
else //pas encore de parametres dans l'url
return $url."?session_id=".$session_id;
}
Ce script permet de récupérer directement sur les serveurs Google,
l'indice PageRank d'une URL (cf http://www.webrankinfo.com/google/pagerank/index.php).
*/
class GooglePR
{
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);
Posté le: Sam Jan 10, 2009 12:14 pm Sujet du message:
je vais opter par ta version
j'ai changer
Code:
$gpr->printrank("http://www.yahoo.com");
par
Code:
$gpr->printrank("$resultat[url]");
De cette manière le site à changé de rankpage il est passé de 9 à 1, il me semble que c plus juste enfin je crois !!??
Tu peux me donner une explication à cela
Vous ne pouvez pas poster de nouveaux sujets dans ce forum Vous ne pouvez pas répondre aux sujets dans ce forum Vous ne pouvez pas éditer vos messages dans ce forum Vous ne pouvez pas supprimer vos messages dans ce forum Vous ne pouvez pas voter dans les sondages de ce forum