//nom des tables pour la BD, si vous voulez les changer... par exemple en cas d'installation multiples dans une même BD !
$T_admins = "admins_annu"; //table des administrateurs
$T_categories = "categories_annu"; //table des categoires
$T_commentaires = "commentaires_sites_annu"; //table des commentaires
$T_infos = "infos_annu"; //table pour le infos sur l'annuaire (anciennement admin_annu)
$T_sessions = "sessions_annu"; //table pour les sessions des administrateurs
$T_sites = "sites_annu"; //table pour les sites
$T_sites_in_wait = "sites_in_wait_annu"; //table pour les sites en attentes
//données pour la connexion à la base de données
$db_server = "localhost"; //adresse du serveur MySQL
$db_name = "infopratlocal"; //nom de la base de données
$db_user_login = "infoprat"; //nom d'utilisateur pour la BD
$db_user_pass = "1sKyXwIS"; //mot de passe pour la BD
?>
//librairie contenant les fonctions generales de l'annuaire
//si vous voulez travailler en local, vous devez mettre la valeur de ces 2 constantes a false (a la place de true)
define ("TEST_URL",true);
define ("TEST_MAIL",true);
/******************************* 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 \nVoici l'erreur renvoyée par le serveur MySQL :\n \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 = "\n";
$message_erreur .= "Impossible d'effectuer la requête pour $message\n";
$message_erreur .= "
\n";
$message_erreur .= "Voici le message d'erreur renvoyé par la base de données :\n \n";
die ("$message_erreur".mysql_errno()." : ".mysql_error()."\n");
}
return $res;
}
/*************************************************************************************************/
/****************************** 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;
?>
if ($type != "topv")
{
?>
(
echo $resultat["nb_clics"];
if ($resultat["nb_clics"] <= 1)
{ ?> visite }
else
{ ?> visites }
?>
echo " depuis le ".convert_date_us2fr($resultat["date_validation"]); ?>
)
}
else // on est sur les votes
{
?>
avec une moyenne de echo $resultat["moyenne_votes"]; ?>/10 sur echo $resultat["nb_votes"];
if ($resultat["nb_votes"] > 1)
{ ?> votes }
else
{ ?> vote } ?>
}
//image pour signaler que le site est nouveau
if($resultat["dif_days"] <= $nb_days2benew && $type != "new")
echo " \n";
?>
";
}
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 = "
Accueil". $sep ."\n";
$id_cat_mere = 1;//pour rentrer dedans
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 = $result["cat_name"];
//lien vers la nouvelle categorie a ajouter dans la ligne
if (!$sessid)
$arbo = "".$nom."" . $sep . $arbo;
else
$arbo = "".$nom."" . $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 .= "
\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;
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 = $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
$list = "\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,"\\0",$chaine); }
/*************************************************************************************************/
/************************************* FONCTIONS DIVERSES ****************************************/
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 PHP
//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 PHP
//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\nInformatique Pratique - http://www.infoprat.net\nForums Informatique - http://forums.infoprat.net";
}
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 cherche_presence_url($url,$id_categorie,$max_presence)
//recherche le nombre de presence d'une url dans les tables de l'annu
//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");
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 .= "
\n";
$message .= "Retour au formulaire\n";
die ($message);
}
return true;
}
function email_valide($email,$inc = false)
//verifie la validite d'une adresse email : syntaxe + non vide
{
$message = " ";
if (empty($email))
{
$message .= "Le champ adresse email ne peut être vide !\n
\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 .= "L'adresse email \"$email\" n'est pas valide !\n
\n";
$message .= "
\n";
$message .= "Retour au formulaire\n";
echo $message;
if ($inc) //si on peut faire die() (-> admin)
include("after_annu.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 .= "
";
$message .= "Retour au formulaire";
$champ = trim($champ);
if (empty($champ))
{
echo $message;
if ($inc) //si il faut inclure le fichier de fin (-> submit_sitew)
include("after_annu.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 .= "
\n";
$message .= "retour au formulaire\n";
if ($ln_champ > $ln_max )
{
echo $message;
if ($inc)
include("after_annu.php");
exit;
}
else
return false; //on rend faux si on a pas quitte car trop long
}
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 .= "
\n";
$message .= "Retour au formulaire\n";
if ($ln_champ < $ln_min )
{
echo $message;
if ($inc)
include("after_annu.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 .= "
\n";
$message .= "Retour au formulaire\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 .= "
\n";
$message .= "Retour au formulaire\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
{
$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 = 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 .= " Impossible de trouver le site $url ! \n";
}
else
{ $message .= " Erreur de syntaxe dans le domaine du site : $host ! "; }
}
}
//si on a un message d'erreur il faut quitter
if ($message)
{
$message .= "
\n";
$message .= "Retour au formulaire\n";
echo $message;
if ($inc)
include("after_annu.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-z0-9]{1,1}[a-z0-9-]*)?\.[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"] = "Pas de test de connexion\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"] = "".$message."\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 " Redirection vers : ".$location."\n";
else
return " 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(mysql_result($sel,0,"count") != 0)
{
?>
Vous vous êtes déjà connecté dans votre partie admin.
Malheureusement, vous n'avez pas quitter la partie admin "correctement" !
Pour éviter ce message, quitter la partie admin en utilisant le lien déconnexion !!!
Pour pouvoir vous relogger, il faudra attendre un peu moins de 30 minutes...
Retour à l'annuaire
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;
}
/*************************************************************************************************/
?>
Annuaire Informatique - Informatique Pratique
//fichier qui contient vos meta-tags et tout ce qui doit venir dans la partie HEAD de vos pages
include("meta_annu.php");
?>
//fichier qui contient tout ce qui doit venir avant le code de l'annuaire (menu de gauche....)
include("before_annu.php");
include ("haut.php"); //lien divers de l'annuaire (top clics, top votes, ajout,...)
//affichage de l'annuaire
if (empty($_GET['cat_id']))
//si c'est la page d'accueil qui est demandee
{
//creation des requetes
//nombres de sites et de categories
$sql_nbsites = "SELECT id FROM $T_sites WHERE activation = '1' ";
$sql_nbcats = "SELECT id FROM $T_categories WHERE activation = '1' ";
//on va chercher les categories
$sql_cat = "SELECT id,cat_name FROM $T_categories WHERE id_cat_mere = '0' AND activation = '1' ORDER BY cat_name ASC";
//on va chercher les infos necessaires sur le site
$sql_admin = "SELECT nb_scats_on_index FROM $T_infos ";
//connexion a la BD
$lk = connection_BD();
//envoi des requetes
$res_nbsites = send_sql($sql_nbsites,"trouver le nombre de sites");
$res_nbcats = send_sql($sql_nbcats,"trouver le nombre de catégories");
$res_cat = send_sql($sql_cat,"trouver les catégories principales");
$res_admin = send_sql($sql_admin,"trouver le nombre de sous-catégories à afficher");
//affichages du nombre de sites et de categories (les requetes sont plus haut)
$nb_sites = mysql_num_rows($res_nbsites);
$nb_cats = mysql_num_rows($res_nbcats);
//on prend le nombre de sous-categories a afficher sous les categories principales
$result = mysql_fetch_array($res_admin,MYSQL_ASSOC);
$nb_scats_onindex = $result["nb_scats_on_index"];
?>
Cet annuaire contient echo $nb_sites; ?> sites répartis dans echo $nb_cats; ?> catégories
//tableau des categories
//pour chaque categories meres trouvees on les affiche avec leurs X premieres sous-cat
$i=0;
while ($une_categorie = mysql_fetch_array($res_cat,MYSQL_ASSOC))
{
if ($i%2 == 0) //colonne de gauche et donc nouvelle ligne
echo "
\n";
$i++;
//on affiche la categorie mere
?>
" class="link_cat_index_annu"> echo $une_categorie["cat_name"]; ?>( echo get_nbsites($une_categorie["id"]); ?>)
//on va voir si il n'y a pas des sous-categories
$sql_scat = "SELECT id,cat_name FROM $T_categories WHERE id_cat_mere = '$une_categorie[id]' AND activation = '1' ORDER BY position ASC, cat_name ASC LIMIT 0,$nb_scats_onindex ";
$res_scat = send_sql($sql_scat,"trouver les sous-catégories");
echo "\n \n";
//on affiche les sous-categories
while ($une_souscat = mysql_fetch_array($res_scat,MYSQL_ASSOC))
{
?>
" class="link_scat_index_annu"> echo $une_souscat["cat_name"]; ?>,
}
echo "... ";
}
?>
//fin de la connexion
mysql_close($lk);
}
else//if (!empty($_GET['cat_id']))
//si ce n'est pas la page d'accueil
{
//creation de la requete d'admin
$sql_infos = "SELECT nb_sites_on_page,nb_days2benew FROM $T_infos ";
//connexion a la BD
$lk = connection_BD();
//envoi de la requete
$res_infos = send_sql($sql_infos,"trouver le nombre de sites à afficher par page");
//traitement du resultat
$result_infos = mysql_fetch_array($res_infos,MYSQL_ASSOC);
$nb_sites_on_page = $result_infos["nb_sites_on_page"];
$nb_days2benew = $result_infos["nb_days2benew"];
if (empty($page))
//premiere page
$page = 1;
//debut pour la clause LIMIT de la requete des sites
$debut = ($page - 1) * $nb_sites_on_page;
//creation des requetes pour trouver les sous-categories, les sites et la description de la categorie
$sql_descr = "SELECT texte FROM $T_categories WHERE id = '".$_GET['cat_id']."' ";
$sql_nb_sites = "SELECT id FROM $T_sites WHERE id_cat = '".$_GET['cat_id']."' AND activation = 1 ";
$sql_site = "SELECT *,TO_DAYS(CURRENT_DATE) - TO_DAYS(date_validation) AS dif_days FROM $T_sites WHERE id_cat = '".$_GET['cat_id']."' AND activation = 1 ORDER BY niveau ASC,titre ASC LIMIT $debut,$nb_sites_on_page";
$sql_scat = "SELECT id, cat_name FROM $T_categories WHERE id_cat_mere = '".$_GET['cat_id']."' AND activation = 1 ORDER BY cat_name ASC";
//envoi des requetes
$res_descr = send_sql($sql_descr,"trouver la description de cette catégorie");
$res_nb_sites = send_sql($sql_nb_sites,"trouver le nombre de sites à afficher");
$res_site = send_sql($sql_site,"trouver les sites à afficher");
$res_scat = send_sql($sql_scat,"trouver les sous-catégories");
//calcul du nombre de pages
$nb_sites = mysql_num_rows($res_nb_sites);
$nb_pages = ceil($nb_sites / $nb_sites_on_page);
//affichage de l'arbo_inline
echo "
".show_arbo_en_ligne($_GET['cat_id'])."
\n\n";
echo "\n";
//on affiches les sous-categories
if (mysql_num_rows($res_scat))
//si il y a des sous-categories
{
echo "
";
$i=0;
while ($resultat = mysql_fetch_array($res_scat,MYSQL_ASSOC))
{
if ($i%2 == 0) //colonne de gauche
echo "
\n";
//fin du tableau puis separateur
}
//fin de la connexion
mysql_close($lk);
//on affiche la description de la catégorie
$res_texte = mysql_fetch_array($res_descr,MYSQL_ASSOC);
if ($res_texte["texte"])
//si on a une description a affiche
{
?>
echo $res_texte["texte"];
?>
}
//on affiche les sites
if (mysql_num_rows ($res_site))
{
?>
while ($resultat = mysql_fetch_array($res_site,MYSQL_ASSOC))
affiche_site($resultat);
?>
}
//affichage de la ligne de liens numerotes pour les pages
if ($nb_sites > $nb_sites_on_page)
//si il y a trop de sites a afficher sur la page
{
?>
for ($i=1;$i<$nb_pages;$i++)
{
if ($i != $page)
echo "$i";
else
echo "$i";
echo " - ";
}
//on affiche le dernier numero de page (sans tiret apres)
if ($i == $page)
echo $i;
else
echo "$i";
?>
}
if (!mysql_num_rows($res_site) and !mysql_num_rows($res_scat) ) //pas de site dans la categorie ni de sous categorie
{
echo "";
echo "\n";
echo "
";
echo "
\n";
echo " Pas encore de sites dans cette catégorie !\n
\n";
echo "Profitez en pour y ajouter votre site si il correspond à cette catégorie.
\n";
echo "";
echo "
\n";
}
echo "
\n";
}
?>
include ("bas.php"); //pied de la page
//fichier qui contient tout ce qui doit venir avant le code de l'annuaire (menu de droite....)
include("after_annu.php");
?>