Forum de discussions pour les webmasters et les web developpeurs. (PHP, SQL, XHTML, JavaScript, Référencement, Positionnement,...)
Vous n'êtes pas identifié.
Bonsoir,
je bloque pour faire validez mon site en XHTML 1.0 Strict en tout j'ai 150 erreurs dans la page nouveautés à corriger !
Voici le lien vers la page erreurs xhtml de la page nouveaux.html --> http://validator.w3.org/check?uri=http% … veaux.html !
Voici la page complet de moteur_utilisable.php la ou je coince :
<?php
ob_start('ob_gzhandler');
// 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",true);
// 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' );
return array( $suffixe, $caracteres, $car_speciaux, $car_normaux );
};
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-vd$id$suffixe" : "$url-p$page-$id$suffixe";
return $url;
}
else
{
if ( $type=='keyw' ) {
return "search.php?action=seek&mots=id$id&nb_results2show=20&booleen=AND";
} else {
return $page==1 ? "index.php?cat_id=$id" : "index.php?cat_id=$id&amp;page=$page";
};
};
}
/****************************** FONCTIONS POUR L'AFFICHAGE ***************************************/
function affiche_site($resultat,$type="index")
//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, $url_rss, $key, $ville_proprio, $pays_proprio;
?>
<table style="width:100%;">
<tr>
<td width="100%" align="left">
<?php
//image pour signaler que le site est nouveau
if($type != 'new' && $resultat["dif_days"] <= $nb_days2benew)
echo "<img src=\"images/new.gif\" border=\"0\" alt=\"\" />\n";
?>
</td></tr>
<td width="100%" colspan="2">
<span class="description_site_annuaire">
<?php echo htmlspecialchars($resultat["description"]); ?>
</span>
<?php
if ($type != "index") //on ajouter un lien vers la categorie (-> moteur de recherche)
{
$phras = $resultat["cat_name"];
$masqu = array("."," - "," & ","&","'",",","(",")","À","Á","Â","Ã","Ä","Å","à","á","â","ã","ä","å","Ò","Ó","Ô","Õ","Ö","Ø","ò","ó","ô","õ","ö","ø","È","É","Ê","Ë","è","é","ê","ë","Ç","ç","Ì","Í","Î","Ï","ì","í","î","ï","Ù","Ú","Û","Ü","ù","ú","û","ü","ÿ","Ñ","ñ"," ","A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z");
$ok_masqu = array("","-","-","-","-","-","","","a","a","a","a","a","a","a","a","a","a","a","a","o","o","o","o","o","o","o","o","o","o","o","o","e","e","e","e","e","e","e","e","c","c","i","i","i","i","i","i","i","i","u","u","u","u","u","u","u","u","y","n","n","-","a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z");
$newphras = str_replace($masqu, $ok_masqu, $phras);
?>
<div class="link_to_cat_annuaire">
=> Catégorie : <a href="<?php echo $newphras; ?>-<?php echo $resultat["id_cat"]; ?>.html" class="link_to_cat_annuaire"><?php echo htmlspecialchars($resultat["cat_name"]); ?></a></div>
<?php
}
?>
<br /><br />
<?php
}
function affiche_site2($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, $T_sites, $url_rss, $key, $ville_proprio, $pays_proprio;
?>
<!-- DEBUT SITE -->
<table style="border: 1px dashed #77c0e0;background-color: #F6F6F6;" width="100%">
<tr>
<td style="padding-left:5px;padding-right:5px;">
<?php
if ( $PMA_infos['allow_images'] )
{
$resurlimage=$resultat['url_image'];
$resurlimage=str_replace("&","&",$resurlimage);
if ( $resultat['url_image'])
echo "<a href=\"".$resultat['url']."\" onclick=\"window.open(this.href); return false;\" onmousedown=\"return clk('".$resultat['id']."')\" ><img src=\"".$resurlimage."\" style=\"width:120px; height:90px; border:0;\" alt=\"\"/></a>";
else
echo "<a href=\"".$resultat['url']."\" onclick=\"window.open(this.href); return false;\" onmousedown=\"return clk('".$resultat['id']."')\"><img src=\"http://www.thumbs-online.com/view3d.php?url=".$resultat['url']."\" style=\"width:120px; height:90px; border:0;\" alt=\"\" /></a>";
};
?>
</td>
<td style="padding-left:10px;padding-right:10px;">
<?php
if ($type == "topc" || $type == "topv")
echo "<span class=\"position_site_annuaire\">".$position.") </span>\n";
echo "<br /><img src=\"images/mini_fleche_jaune.gif\" alt=\"\" /><a href=\"$resultat[url]\" title=\"$resultat[titre]\" onmousedown=\"return clk('$resultat[id]')\" onclick=\"window.open(this.href); return false;\" class=\"titre_site_annuaire\"> ";
$resultat['titre'] = htmlspecialchars($resultat['titre']);
if ( $type=='search' ) {
for ( $i=0; $i<$nb_mots; $i++ ) {
$resultat['titre'] = keyword_in_bold($mots_reels_recherches[$i],$resultat['titre']);
};
};
echo $resultat['titre'];
echo "</a>";
if ($key && $ville_proprio && $pays_proprio)
echo ' (<span style="color:#FF0000" >MAP</span>)';
if ($url_rss)
echo ' (<span style="color:#FF0000" >RSS</span>)';
?>
<?php
//image pour signaler que le site est nouveau
if($type != 'new' && $resultat["dif_days"] <= $nb_days2benew)
echo "<img src=\"images/new.gif\" style=\"border:0;\" alt=\"\" />";
?>
<span class="description_site_annuaire">
<br /><br />
<?php
$resultat['description'] = htmlspecialchars($resultat['description']);
if ( $type=='search' ) {
for ( $i=0; $i<$nb_mots; $i++ ) {
$resultat['description'] = keyword_in_bold($mots_reels_recherches[$i],$resultat['description']);
};
};
echo $resultat['description'];
?></span>
<br /><br />
<?php
$url = $resultat['url'];
//global $lang,$T_sites; //nom de la table utilisee => rajouté en début de la fonction
$trouve_url = "SELECT url, id FROM $T_sites WHERE url ='$url' ORDER BY id ASC";// requête pour la recherche des URL similaires
$lk = connection_BD(); // connexion à la base
$result_url = mysql_query($trouve_url);
$list_url = mysql_fetch_array($result_url,MYSQL_ASSOC);
$nb_url = mysql_num_rows($result_url); // trouve le nombre d'URL similaires
mysql_close($lk); // ferme la connexion
?>
<div class="url_site_annuaire">
<?php
preg_replace("!^[^\:]+\://!",'',$resultat['url']);
if ( $type=='search' ) {
for ( $i=0; $i<$nb_mots; $i++ ) {
$resultat['url'] = keyword_in_bold($mots_reels_recherches[$i],$resultat['url']);
};
};
echo "<small>[ <a href=\"site-$resultat[id]-web.htm\" title=\"Fiche d'information sur : $resultat[titre]\">Fiche Détaillée</a> ]</small>";
echo " <small><span style=\"color:#bbbbbb\" >(".$nb_url.")</span></small>"; // affiche le nombre d'occurrences dans la BDD
?>
</div>
<br />
<?php
if ($type != "index") //on ajouter un lien vers la categorie (-> moteur de recherche)
{
$lk = connection_BD();
$arbogreen = show_arbo_en_ligne($resultat["id_cat"], "index.php", " > ");
$arbogreen = preg_replace("!<a href=\"[^\"]+\">Accueil</a> > !i", '', $arbogreen);
$arbogreen = eregi_replace('class="arbo_annuaire"','class="arbo_annuaire_petit"', $arbogreen);
mysql_close($lk);
echo "<span class=\"link_to_cat_annuaire\">=> Catégorie : $arbogreen</a>\n";
}
if ( preg_match("/nouveautes\.php|top_clics\.php|top_votes\.php/",$_SERVER{REQUEST_URI}) )
{
echo <<<EOF
</td></tr>
</table>
EOF;
};
?>
</td></tr>
</table>
<!-- FIN DU SITE -->
<br /><br />
<?php
}
function show_arbo_en_ligne($id_cat,$page_name = "index.php",$sep = " => ", $sessid = false)
//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
$accueil = "<span class=\"arbo_annuaire\"><a href=\"";
if (!$sessid)
$accueil .= "http://www.aqua-annuaire.fr";
else
$accueil .= addsess2url($page_name,$sessid);
$accueil .= "\">Accueil</a>". $sep ."\n";
$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
$phrase = $nom;
$masque = array("."," - "," & ","&","'",",","(",")","À","Á","Â","Ã","Ä","Å","à","á","â","ã","ä","å","Ò","Ó","Ô","Õ","Ö","Ø","ò","ó","ô","õ","ö","ø","È","É","Ê","Ë","è","é","ê","ë","Ç","ç","Ì","Í","Î","Ï","ì","í","î","ï","Ù","Ú","Û","Ü","ù","ú","û","ü","ÿ","Ñ","ñ"," ","A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z");
$ok_masque = array("","-","-","-","-","-","","","a","a","a","a","a","a","a","a","a","a","a","a","o","o","o","o","o","o","o","o","o","o","o","o","e","e","e","e","e","e","e","e","c","c","i","i","i","i","i","i","i","i","u","u","u","u","u","u","u","u","y","n","n","-","a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z");
$newphrase = str_replace($masque, $ok_masque, $phrase);
if (!$sessid)
$arbo = "<a href=\"$id_cat-$newphrase.html\" 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></td></tr></table>\n";
return $accueil.$arbo;
}
function show_arbo_en_ligne2($id_cat,$page_name = "index.php",$sep = " => ", $sessid = false)
//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
$accueil = "<span class=\"arbo_annuaire\"><a href=\"";
if (!$sessid)
$accueil .= "index.php";
else
$accueil .= addsess2url($page_name,$sessid);
$accueil .= "\">Accueil</a>". $sep ."\n";
$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
$phrase = $nom;
$masque = array("."," - "," & ","&","'",",","(",")","À","Á","Â","Ã","Ä","Å","à","á","â","ã","ä","å","Ò","Ó","Ô","Õ","Ö","Ø","ò","ó","ô","õ","ö","ø","È","É","Ê","Ë","è","é","ê","ë","Ç","ç","Ì","Í","Î","Ï","ì","í","î","ï","Ù","Ú","Û","Ü","ù","ú","û","ü","ÿ","Ñ","ñ"," ","A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z");
$ok_masque = array("","-","-","-","-","-","","","a","a","a","a","a","a","a","a","a","a","a","a","o","o","o","o","o","o","o","o","o","o","o","o","e","e","e","e","e","e","e","e","c","c","i","i","i","i","i","i","i","i","u","u","u","u","u","u","u","u","y","n","n","-","a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z");
$newphrase = str_replace($masque, $ok_masque, $phrase);
if (!$sessid)
$arbo = "<a href=\"$id_cat-$newphrase.html\" 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 deroulante 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 (suggerer_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");
$list = "<select name=\"$name_field\" id=\"$name_field\" class=\"list_all_cats_annuaire\">\n";
$flag_cat = false;
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 \"> $resultat[id]>$path</option>";
else
{
$list_cats[] = "<option label=\"$path \"> $resultat[id] selected>$path</option>";
$list .= "<option label=\"$path \"> $resultat[id] selected>$path</option>";
$flag_cat = true;
}
}
if (! $flag_cat)
$list .= "<option value=\"0\">Choisissez une catégorie</option>\n";
$list .= "<option value=\"0\">--------------------------</option>\n";
//tri par ordre alphabetique
@asort($list_cats);
$list .= @implode("\n",$list_cats);
$list .= "</select>\n";
return $list;
}
/*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
$list = "<select name=\"$name_field\" class=\"list_all_cats_annuaire\">\n";
$list .= "<option value=\"0\">Choisissez une catégorie</option>\n";
$list .= "<option value=\"0\">--------------------------</option>\n";
//selection des categories
//creation de la requete
if ($cache_cat)
//si il faut cacher certaines categories (suggerer_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 \"> $resultat[id]>$path</option>";
else
$list_cats[] = "<option label=\"$path \"> $resultat[id] selected>$path</option>";
}
//tri par ordre alphabetique
@asort($list_cats);
$list .= @implode("\n",$list_cats);
$list .= "</select>\n";
return $list;
}
*/
function show_list_cats2($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
$list = "<select name=\"$name_field\" id=\"$name_field\" class=\"list_all_cats_annuaire\">\n";
$list .= "<option value=\"0\">Choisissez une catégorie</option>\n";
$list .= "<option value=\"0\">--------------------------</option>\n";
//selection des categories
//creation de la requete
if ($cache_cat)
//si il faut cacher certaines categories (suggerer_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-cléss 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-clés, 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-clé 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' ,count_google=count_google+1 WHERE keyw='$mots' ";
send_sql( $sql_keyw, "mettre a jour le mot-clé 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-clés de la base");
$keyw = mysql_fetch_array( $res_keyw, MYSQL_ASSOC );
if ( $keyw['count'] >= $PMA_infos['kw_max'] )
{
$surplus = $keyw['count'] - $PMA_infos['kw_max'] + 1;
$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-clés");
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-clés 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-clé dans la base" );
};
};
};
};
function put_keyw1($mots,$msn='0')
// Insérer les mots-cléss 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-clés, 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-clé 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,msn='$msn',count_msn=count_msn+1 WHERE keyw='$mots' ";
send_sql( $sql_keyw, "mettre a jour le mot-clé 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-clés de la base");
$keyw = mysql_fetch_array( $res_keyw, MYSQL_ASSOC );
if ( $keyw['count'] >= $PMA_infos['kw_max'] )
{
$surplus = $keyw['count'] - $PMA_infos['kw_max'] + 1;
$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-clés");
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-clés les plus vieux" );
};
};
$sql_keyw = "INSERT INTO $T_keywords (time,keyw,nbkw,msn) VALUES ('$time','$mots','1','$msn') ";
send_sql( $sql_keyw, "inserer un nouveau mot-clé dans la base" );
};
};
};
};
function put_keyw2($mots,$yahoo='0')
// Insérer les mots-cléss 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-clés, 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-clé 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,yahoo='$yahoo', count_yahoo=count_yahoo+1 WHERE keyw='$mots' ";
send_sql( $sql_keyw, "mettre a jour le mot-clé 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-clés de la base");
$keyw = mysql_fetch_array( $res_keyw, MYSQL_ASSOC );
if ( $keyw['count'] >= $PMA_infos['kw_max'] )
{
$surplus = $keyw['count'] - $PMA_infos['kw_max'] + 1;
$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-clés");
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-clés les plus vieux" );
};
};
$sql_keyw = "INSERT INTO $T_keywords (time,keyw,nbkw,yahoo) VALUES ('$time','$mots','1','$yahoo') ";
send_sql( $sql_keyw, "inserer un nouveau mot-clé 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Ý',
);
for ( $i=0; $i<count($accents); $i++ ) {
$texte = preg_replace( "/[$accents[$i]]/", "[$accents[$i]]", $texte );
};
return $texte;
};
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 .= "";
}
if ($emailfrom == $email_master)
$from = "From: $nom_site<$email_master>\nReply-To: $email_master\n";
else
{ $from = "From: $emailfrom\nReply-To: $emailfrom\n"; }
$options = "Content-type:text/html\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;
preg_match("/^(\d)(\d)(\d)$/",$PMA_infos['detect_images'],$detect_images);
$detect_images = array (
'ascreen' => $detect_images[1],
'thumbshots' => $detect_images[2],
'alexa' => $detect_images[3],
);
asort($detect_images);
$detected = false;
foreach ( $detect_images as $methode => $ordre )
{
if ( $ordre )
{
$url_image = detect_images($methode,$url);
if ( $url_image ) {
$detected = true;
break;
};
};
};
$url_image = $detected ? $url_image : 'http://';
if ( $PMA_infos['func_get_meta_tags'] )
{
$fp = @fopen($url, 'r');
$head = @fread($fp, 1024);
@fclose($fp);
}
else
{
$head = null;
};
if ( $head )
{
$tags = @get_meta_tags($url);
$nom_proprio = isset($tags['author']) ? $tags['author'] : '';
$email_proprio = isset($tags['reply-to']) ? $tags['reply-to'] : ( isset($tags['email']) ? $tags['email'] : '' );
$titre = preg_match( "/<title>([^<]*)<\/title>/si", $head, $match ) ? $match[1] : '';
$titre2 = preg_match( "/<title>([^<]*)<\/title>/si", $head, $match ) ? $match[1] : '';
$titre3 = preg_match( "/<title>([^<]*)<\/title>/si", $head, $match ) ? $match[1] : '';
$description = $tags['description'] ? $tags['description'] : '';
};
return array( $url, $url_rss, $url_image, $nom_proprio, $email_proprio, $titre, $titre2, $titre3, $description );
}
else
{
$url = 'http://';
$url_rss = 'http://';
$url_image = 'http://';
$nom_proprio = null;
$email_proprio = null;
$titre = null;
$titre2 = null;
$titre3 = null;
$description = null;
return array( $url, $url_rss, $url_image, $nom_proprio, $email_proprio, $titre, $titre2, $titre3, $description );
};
};
function detect_images($methode,$url)
// Détecter une image via AscreeN, Thumbshots ou Alexa
{
$url_image = null;
if ( $methode=='ascreen' )
{
$urlt = rtrim($url,"/");
if ( @getimagesize("$urlt/ascreen.jpg") ) {
$url_image = "$urlt/ascreen.jpg";
};
}
elseif ( $methode=='thumbshots' )
{
if ( ($a=@getimagesize("http://www.thumbs-online.com/view3d.php?url=$url")) && $a[0]>50 ) {
$url_image = "http://www.thumbs-online.com/view3d.php?url=$url";
};
}
elseif ( $methode=='alexa' )
{
$purl = parse_url("http://pthumbnails.alexa.com/image_server.cgi?size=small&url=$url");
$fp = @fsockopen($purl['host'], 80, $errno, $errstr, 5);
@fputs($fp, "GET $purl[path]?$purl[query] HTTP/1.1\r\nHost: $purl[host]\r\n\r\nConnection: Close\r\n\r\n");
$ok = preg_match("!Location: /images/smalljpeg/!",@fread($fp,210));
@fclose($fp);
if ( $ok ) {
$url_image = "http://pthumbnails.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 "Ce site a déjà été ajouté/proposé pour dans cette catégorie !\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 "Un site ne peut être ajouté que dans $max_presence";
if ($max_presence > 1)
echo " catégories !\n";
else //max = 0 ou max = 1
{ echo " catégorie !\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 .= "<div class=\"sub_error\">Le champ adresse email ne peut être vide !</div>\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)
{
$message .= "<div class=\"sub_error\">L'adresse email \"$email\" n'est pas valide !</div>\n<br />\n";
$message .= "<br /><br />\n";
$message .= "<a href=\"javascript:history.go(-1);\">Retour au formulaire</a>\n";
echo $message;
if ($inc) //si on peut faire die() (-> admin)
include("apres.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 $message;
if ($inc) //si il faut inclure le fichier de fin (-> suggerer_site)
include("apres.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 $message;
if ($inc)
include("apres.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 (-> suggerer_site)
include("apres.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 $message;
if ($inc)
include("apres.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($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($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 .= "<div class=\"sub_error\">Veuillez saisir une Url.</div>";
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 .= "<div class=\"sub_error\">Url non valide ! Elle doit commencer par http:// (ou news:// ou encore ftp:// ou mailto:)</div>";
//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
$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)
{
//on affiche les conditions
include("conditions.html");
echo $message;
echo " <table class=\"detection\" width=\"100%\" cellspacing=\"3\"><tr><td>\n";
echo " <form action=\"suggerer_site.php\" method=\"get\">\n";
echo " <fieldset>\n";
echo " <input type=\"hidden\" name=\"action\" value=\"meta_send\" />\n";
echo " <input type=\"hidden\" name=\"id_cat\" value=\"$_GET[id_cat]\" />\n";
echo " <em class=\"all_field_required_annuaire\">\n";
echo " <span style=\" font-family:Arial,sans-serif; font-size:1.2em; color:#009;\"><b>Adresse du site : </b></span>\n";
echo " <input type=\"text\" name=\"url\" maxlength=\"150\" size=\"41\" value=\"http://\" class=\"field_data_add_site_annuaire\" />\n";
echo " </em>\n";
echo " <input type=\"submit\" value=\"Continuer\" class=\"submit_form_add_site_annuaire\" />\n";
echo " <br /> \n";
echo " <br /><div style=\"padding-left:35px;text-align:center;\"><a href=\"suggerer_site.php?action=meta_pass&id_cat=$id_cat\">Cliquer ici pour ne pas activer la détection</a></div>\n";
echo " </fieldset>\n</form>\n";
echo "</td></tr></table>\n";
echo"<br />";
if ($inc)
include("apres.php");
echo "<div id=\"pied\">";
include("adsense.php");
echo"</div>";
echo "<div id=\"partenaires\">";
include("partenaires.php");
echo"</div>";
echo "<div class=\"menu_h\">";
echo"<div class=\"menu_h2\">";
include("footer.php");
echo"</div>";
echo"</div>";
echo"</body>";
echo"</html>";
exit;
}
else
{ return true; } //on rend vrai car si c'est pas bon on a quitte avant
}
function url_rss_valide ($url_rss,$inc = false)
//verifie la validite d'une url RSS : commence par http:// + non vide
{
if ( $url_rss )
{
//on verifie si c'est bien le bon type de site
$cmp_h = strcmp(substr($url_rss,0,7),"http://");
if ($cmp_h != 0)
$message .= "Url de flux RSS non valide ! Elle doit commencer par http://";
//on verifie si l'URL n'est pas KO
if ($cmp_h == 0) //si c'est une URL http://
{
$url_parsee = @parse_url($url_rss);
$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
$tab_return = check_connect($host,$path);
if ($tab_return["statut"] == 0)
$message .= "<br />Impossible de trouver le flux $url_rss !\n";
}
else
{
$message .= "<br />Erreur de syntaxe dans le domaine du site : $host !\n";
}
}
}
//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 = 1800)
//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 ($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;
}
/*************************************************************************************************/
?>Je vous en remercie d'avance pour votre aide !
Cordialement,
romain
Dernière modification par romain35 (28-07-2008 16:00:00)
Hors ligne
Bonjour,
Les messages sont pas suffisamment explicite non?
end tag for element "*" which is not open. => Une balise fermé mais pas ouverte
end tag for "*" omitted, but OMITTAG NO was specified. => Manque une balise de fin
...
Hors ligne
UP, je n'arrive pas à régler les erreurs dans la page nouveaux dans le fichier moteur_utilisable !
Cordialement,
romain
Hors ligne
Bonjour,
j'ai trouvez l'erreur mes le probléme qu'en j'enlève cette erreur ça déforme les sites dans l'annuaire.
Voici un bout de code de la page nouveau ou il y a l'erreur:
<!-- DEBUT SITE -->
<table style="border: 1px dashed #77c0e0;background-color: #F6F6F6;" width="100%">
<tr>
<td style="padding-left:5px;padding-right:5px;">
<a href="http://www.gruissan-info.com" onclick="window.open(this.href); return false;" onmousedown="return clk('423')"><img src="http://www.thumbs-online.com/view3d.php?url=http://www.gruissan-info.com" style="width:120px; height:90px; border:0;" alt="" /></a></td>
<td style="padding-left:10px;padding-right:10px;">
<br /><img src="images/mini_fleche_jaune.gif" alt="" /><a href="http://www.gruissan-info.com" title="Vacances à Gruissan au soleil " onmousedown="return clk('423')" onclick="window.open(this.href); return false;" class="titre_site_annuaire"> Vacances à Gruissan au soleil </a>
<span class="description_site_annuaire">
<br /><br />
Guide de Gruissan, dans l'Aude. Station balnéaire du Languedoc : vos vacances au bord de la mer Méditerranées, les plages et les informations sur le tourisme dans le Languedoc-Roussillon. Le village de Gruissan en circulade, ses plages et son port..</span>
<br /><br />
<div class="url_site_annuaire">
<small>[ <a href="site-423-web.htm" title="Fiche d'information sur : Vacances à Gruissan au soleil ">Fiche Détaillée</a> ]</small> <small><span style="color:#bbbbbb" >(1)</span></small></div>
<br />
<span class="link_to_cat_annuaire">=> Catégorie : <span class="arbo_annuaire_petit">
<a href="44-ville.html" class="arbo_annuaire_petit">Ville</a></span></td></tr></table>
</a>
</td></tr>
</table>
<!-- FIN DU SITE -->Le problème vient de cette erreur !
</td></tr>
</table>
Qu'en j'enlève cette erreur ça déforme les tableaux entre les catégories !
Merci d'avance pour votre aide !
Cordialement,
romain
Hors ligne
Re,
je n'y arrive pas !
Cordialement,
romain
Hors ligne
Non ça bug sur l'annuaire neo6 !
Cordialement,
romain
Hors ligne
Bonjour,
je rencontre quelques problème sur une page j'ai un gros décalage et
je n'arrive pas à trouvez l'erreur je travail sur le site Bloc-Annuaire
je mes au norme xhtml !
Voici le lien ou il y a un problème --> http://www.bloc-annuaire.fr/18-forums.html
Cordialement,
romain
Hors ligne