Page membre sur votre annuaire
On m'a demandé comment j'ai fait la page membre sur mon annuaire. Je vais vous mettre les explications ici.
Alors pourquoi cette page membre ?
Tout simplement pour aider les webmasters qui inscrivent leurs sites !
- ils peuvent modifier les titres et descriptions
- ils peuvent copier leur site dans une nouvelle catégorie (mon annuaire autorise les catégories multiples)
J'ai d'abord fait un module, avec l'essentiel des fonctions que j'utilise pour cette page membre.
fichier module_membre.php
Code
<?php
/* MODULE MEMBRE */
// quelques paramètres
if(!isset($table_sufix))include ("bdd_utilisable.php");//test si fichier déjà inclus ou non
$table_membre='membres'.$table_sufix;
$table_sites_modif='sites_modif'.$table_sufix;
$url_membre=BASE_URL.'pagemembre.php'; //url de la page membre
/*
//CREATION DES TABLE - DESACTIVE PAR SECURITE
//$lk = connection_BD();
function create_table_membre()
{
global $table_membre,$table_bonus,$T_sites_in_wait;
$create_table=mysql_query("
CREATE TABLE $table_membre (
`mem_id` int(10) unsigned NOT NULL,
`email` varchar(255) NOT NULL,
`passeword` varchar(8) NOT NULL,
`points` int(10) unsigned NOT NULL,
PRIMARY KEY (`mem_id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1;
");
}
// création d'une nouvelle table qui stocke les modifications demandées
CREATE TABLE `sites_modif_v234` (
`id` mediumint(8) unsigned NOT NULL,
`id_cat` mediumint(8) unsigned NOT NULL,
`titre` varchar(100) NOT NULL,
`titre2` varchar(100) default NULL,
`titre3` varchar(100) default NULL,
`description` varchar(255) NOT NULL,
`url` varchar(150) NOT NULL,
`url_image` varchar(150) default '',
`url_rss` varchar(150) default NULL,
`email_session` varchar(255) default NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `id_cat` (`id_cat`,`url`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 ;
//mysql_close($lk);
*/
function add_membre($email)
{
global $table_membre,$passeword,$mem_id;
//le champs points n'est pas utilisé pour l'instant
//on inscrit le membre s'il n'est pas encore dans la base membre
$rq=mysql_query("SELECT mem_id,passeword FROM $table_membre WHERE email='$email'");
if(mysql_num_rows($rq)==0)
{
$passeword=passeword();//crée le mot de passe
$ins=mysql_query("INSERT INTO $table_membre (email,passeword,points)
VALUES ('$email','$passeword','0')");
$mem_id=mysql_insert_id(); // dernier id entré
}
else
{
$mem_id=mysql_result($rq,0,'mem_id');
$passeword=mysql_result($rq,0,'passeword');
}
}
function passeword()
{
//génère un mot de passe aléatoire
$tabpass=array(a,b,c,d,e,f,g,h,i,j,k,m,n,o,p,q,r,s,t,u,v,w,x,
,z,A,B,C,D,E,F,G,H,I,J,K,L,M,N,P,Q,R,S,T,U,V,W,X,Y
Z,2,3,4,5,6,7,8,9);// pas de O ni de 0
$pass=array_rand ($tabpass,8); //génère un tableau
foreach ($pass as $valeur){ $motpasse.=$tabpass[$valeur]; } //colle les 8 lettres du password !!
return $motpasse;
}
//PARAMETRES d'identification
function checkid()
{
//vérif connexion de la page pagemembre.php
global $table_membre;
$res = mysql_query("SELECT mem_id,email,passeword,points FROM ".$table_membre." WHERE email='".$_SESSION['sess_name']."'");
if (mysql_num_rows($res) != 0)
{
$mysaved_pas = mysql_result($res, 0, "passeword");
if ($mysaved_pas == $_SESSION['sess_password'])
{
return $res;
}
else return 0;
}
else return 0;
}
function formulaire_login()
{
//formulaire de connexion de la page pagemembre.php
global $_POST,$table_membre,$nom_annuaire;
if(isset($_POST['passeperdu']))
{
$mailperdu=nettoie($_POST['emailperdu']);
$rq=mysql_query("SELECT passeword FROM ".$table_membre." WHERE email='$mailperdu'");
if(mysql_num_rows($rq)==1)
{
$passeperdu=mysql_result($rq,0);
mail($mailperdu,"Annuaire $nom_annuaire mot de passe","Votre mot de passe est : $passeperdu\n\nA bientôt sur ".BASE_URL,'admin@weblove.org');
echo "<p style='color:red;'>Votre mot de passe vient de vous être envoyé.</p>";
}
else echo "<p style='color:red;'>Email invalide.</p>";
}
elseif(isset($_POST['email']))
{
$_SESSION['sess_name']=nettoie($_POST['email']);
$_SESSION['sess_password']=nettoie($_POST['password']);
$login=checkid();
if($login==0)
{
echo "<p style='color:red;'>ERREUR DE CONNECTION</p>";
}
}
else $login=checkid();
if(isset($_POST['email']) && $login==0)
{
echo "<p style='color:red;'>ERREUR DE CONNECTION</p>";
}
if($login==0)
{
echo "<form action='".$_SERVER['PHP_SELF']."' method='post'>
Votre email : <input type='text' size='60' name='email' value='$email' /><br />
Mot de passe: <input type='password' size='60' name='password' value='$password' /><br />
<input type='submit' name='login' value='Me connecter' />
</form>
<form action='".$_SERVER['PHP_SELF']."' method='post'>
<p><b><i>Mot de passe perdu ?</i></b>
Votre email : <input type='text' size='30' name='emailperdu' value='$email' />
<input type='submit' name='passeperdu' value='Mot de passe perdu' /></p>
</form>
<br />";
}
return $login;
}
function nettoie($donnee)
{
//fonction qui nettoie les données à mettre dans les input text ou textarea
$donnee=trim(strip_tags(htmlentities($donnee,ENT_QUOTES)));
return $donnee;
}
function liste_sites($mem_email)
{
//fonction utilisée sur la page membre
global $T_sites,$T_categories,$table_sites_modif,$nom_annuaire,$x_cat; //$x_cat est le nombre maxi de catégorie pour un site
if(isset($_POST['modif_site']))
{
foreach($_POST as $key=>$value)
{
${$key}=$value;
}
//nettoyage
$nom_proprio = nettoyage_post($nom_proprio,1);
$titre = nettoyage_post($titre,1);
$titre2 = nettoyage_post($titre2,1);
$titre3 = nettoyage_post($titre3,1);
$description = nettoyage_post($description,1);
$url = nettoyage_post($url,0);
$url_rss = nettoyage_post($url_rss,0);
$rq=mysql_query("SELECT id FROM $table_sites_modif WHERE id='$id'");
if(mysql_num_rows($rq)==0)
{
$sql="INSERT INTO $table_sites_modif (id,id_cat,titre,titre2,titre3,description,url,
rl_image,url_rss,email_session)
VALUES('$id','$id_cat','$titre','$titre2','$titre3','$description','$url','$url_image','$url_rss','$_SESSION[sess_name]')";
$ins=send_sql($sql,"modification d'un site module membre");
}
else
{
$sql="UPDATE $table_sites_modif SET id_cat='$id_cat',titre='$titre',
titre2='$titre2',titre3='$titre3',description='$description',url='$url',
url_image='$url_image',url_rss='$url_rss',email_session='$_SESSION[sess_name]'
WHERE id='$id'";
$upd=send_sql($sql,"modification-update d'un site module membre");
}
echo "<p style='color:red;'><b>La modification a été envoyée au webmaster qui va
vérifier dans les meilleurs délais.</b><br />
En cas d'abus (soumission dans une catégorie inadaptée, texte incorrect...), votre site pourra
être simplement supprimé, ou la modification ignorée.<br />
<i>Une modification doit avoir pour but d'améliorer la qualité de votre site et de notre
annuaire.</i></p>";
}
$rq=mysql_query("SELECT ".FIELD_sites." FROM $T_sites WHERE email_proprio='$mem_email' ORDER BY url");
if(mysql_num_rows($rq)>0)
{
while($ligne=mysql_fetch_array($rq,MYSQL_ASSOC))
{
echo "<div style='border: black 1px solid; width:100%; padding:5px;margin_bottom:5px;'>";
echo "<form action='".$_SERVER['PHP_SELF']."' method='post'>";
echo "<input type='hidden' name='id' value='".$ligne['id']."' />";
echo "<input type='hidden' name='id_cat' value='".$ligne['id_cat']."' />";
echo "<b><u>ID du site :</u></b> <span style='color:red;font-weight:bold;'>".$ligne['id']."</span> - ";
echo "<b><u>Catégorie :</u></b> ".$ligne['id_cat']." = ";
$nom_cat_m="";$nom_cat="";
$rq_cat=mysql_query("SELECT id_cat_mere,cat_name FROM $T_categories WHERE id='".$ligne['id_cat']."'");
$nom_cat=mysql_result($rq_cat,0,"cat_name");
$id_cat_m=mysql_result($rq_cat,0,"id_cat_mere");
if($id_cat_m!=0)
{
$rq_cat_m=mysql_query("SELECT cat_name FROM $T_categories WHERE id='$id_cat_m'");
$nom_cat_m=mysql_result($rq_cat_m,0,"cat_name");
}
echo "<b>$nom_cat_m > $nom_cat</b><br />";
echo "<i>Mettez 3 titres différents, c'est mieux pour le référencement et la recherche !</i><br />";
echo "<b><u>Titre 1 :</u></b> <input size='60' type='text' name='titre' value='".nettoie($ligne['titre'])."' /><br />";
echo "<b><u>Titre 2 :</u></b> <input size='60' type='text' name='titre2' value='".nettoie($ligne['titre2'])."' /><br />";
echo "<b><u>Titre 3 :</u></b> <input size='60' type='text' name='titre3' value='".nettoie($ligne['titre3'])."' /><br />";
echo "<b><u>Description :</u></b> <textarea rows='5' cols='60' name='description'>".nettoie($ligne['description'])."</textarea><br />";
echo "<b><u>Url du site :</u></b> <input size='60' type='text' name='url' value='".nettoie($ligne['url'])."' /><br />";
echo "<b><u>Url de l'image :</u></b> <input size='60' type='text' name='url_image' value='".nettoie($ligne['url_image'])."' /><br />";
echo "<b><u>Flux RSS :</u></b> <input size='60' type='text' name='url_rss' value='".nettoie($ligne['url_rss'])."' /><br />";
echo "<b><u>Date validation :</u></b> ".$ligne['date_validation']." - ";
if($ligne['activation']==1)$actif="activé";
else $actif="<span style='color:red;'>site non validé</span>";
echo "<b><u>Activation :</u></b> $actif - ";
echo "<input type='submit' name='modif_site' value='Valider les modifications' />
</form>";
echo "<br /><b><u>LIEN RETOUR :</u></b> <input type='text' size='80' value='<a href=\"".BASE_URL."?idsite=".$ligne['id']."\" target=\"_blank\" title=\"annuaire $nom_annuaire\">annuaire $nom_annuaire</a>' /><br /><br />";
echo "<form action='suggerer_site.php' method='post'>";
echo "<input type='hidden' name='nom_proprio' value='".nettoie($ligne['nom_proprio'])."' />";
echo "<input type='hidden' name='email_proprio' value='".nettoie($ligne['email_proprio'])."' />";
echo "<input type='hidden' name='titre' value='".nettoie($ligne['titre'])."' />";
echo "<input type='hidden' name='titre2' value='".nettoie($ligne['titre2'])."' />";
echo "<input type='hidden' name='titre3' value='".nettoie($ligne['titre3'])."' />";
echo "<input type='hidden' name='description' value='".nettoie($ligne['description'])."' />";
echo "<input type='hidden' name='url' value='".nettoie($ligne['url'])."' />";
echo "<input type='hidden' name='url_image' value='".nettoie($ligne['url_image'])."' />";
echo "<input type='hidden' name='url_rss' value='".nettoie($ligne['url_rss'])."' />";
echo "<input type='submit' name='new_cat_site' value='Inscrire ce site dans une nouvelle catégorie pour être MIEUX VU ! (maximum de $x_cat catégories)' />
</form>";
echo "</div>";
}
}
else echo "<i>Aucun site validé pour l'instant</i>";
}
/*
//MODULE NETTOYAGE
Fonction que j'ai ajouté dans moteur_utilisable.php, puisque je m'en sers sur plusieurs page, mais elle peut être mise ici
function nettoyage_post($donnee,$magic_quote=0)
{
if (!get_magic_quotes_gpc() && $magic_quote==1)
//on rajoute des slash pour les magic_quote en OFF
{
$donnee = addslashes($donnee);
}
//on enleve les caracteres speciaux et les balises html
$donnee = $donnee;
$mq = array("<","&","é","˜",""","´","·", "'","à","ç","è","é","ê","î","ï","ô","ù","û"," ","â","%20");
$ok_mq = array("","&","é","~",'"',"'","'","'","à","ç","è","é","ê","î","ï","ô","ù","û"," ","â"," ");
$$donnee = str_replace($mq, $ok_mq, $$donnee);
return $donnee;
}
*/
?>
Ensuite, la pagemembre.php
Code
<fieldset><legend>Bienvenue sur votre page membre</legend>
<?php
//déconnexion
if(isset($_POST['deconnect'])){$_SESSION['sess_name']="";$_SESSION['sess_password']="";}
//vérification connexion
$res = formulaire_login(); //affiche le formulaire si pas connecté
@$dh_id=mysql_result($res,0,'mem_id');
if(is_numeric($dh_id) && $dh_id>0)
{
$mb_connecte="oui";
$mem_email=mysql_result($res,0,'email');
}
else $mb_connecte="non";
//PARTIE LOGIN
if($mb_connecte=="oui")
{
echo "<div align='right'><form action='".$_SERVER['PHP_SELF']."' method='post'><input type='submit' name='deconnect' value='DECONNEXION' /></form></div>";
}
else
{
echo "<p>Connectez-vous pour avoir accès à tous vos sites enregistrés dans l'annuaire et
accédez à différentes options.</p>";
}
?>
<h4 style='color:#FF7A0F;'>Enregistrez rapidement vos sites dans plusieurs catégories</h4>
<p>CONSEILS : modifiez titres et descriptions pour un meilleur référencement !!<br />
<i>Connectez-vous, un bouton vous permettra de copier rapidement les infos du site !</i></p>
<h4 style='color:#FF7A0F;'>Modifiez les informations de votre site</h4>
<p>Vous pouvez mettre à jour, les descriptions, titres de vos sites, toujours pour un
meilleur référencement.</p>
<h4 style='color:#FF7A0F;'>Importance du lien retour</h4>
<p>Votre site à l'honneur à chaque fois qu'un visiteur clique sur votre lien retour.<br />
Vérifiez la présence de votre id de site à la fin du lien retour.<br />
<a href='presentation.php' target='new'>Trouvez tous les liens et images utiles sur cette page</a></p>
</fieldset>
<?php
//PARTIE LISTE DES SITES
if($mb_connecte=="oui")
{
echo "<fieldset><legend>Liste de vos sites</legend>";
liste_sites($mem_email);
echo "</fieldset>";
}
?>
Il manque dans cette page, tout le header et le footer, qui sont extérieur à la page pour moi. Reprenez une page existante pour le code.
Pour finir (si je n'ai rien oublié), trouvez ce bout de code dans suggerer_site.php
Code
$ins = send_sql($sql,"soumettre un site !");
et collez à la suite :
Code
add_membre($email_proprio);
Voilà, en espérant que ça vous sera utile.
Le référenceur se mue en rédacteur Web
Les métiers de référenceur et de rédacteur doivent se parler et s’apprivoiser … Certes, Google n’est pas votre premier lecteur, seulement il influence notablement l’orientation des contenus éditoriaux. Alors que le référencement devient social, que l’objectif n’est pas de positionner un site Web, mais de fidéliser son audience, certaines agences communiquement déjà sur la mue de leur coeur de métier.
C’est le cas de l’agence Synodiance, à Nantes, qui a décidé de mettre en place un pôle dédié au contenu. “L’idée est de proposer à nos clients des contenus récepteurs ou générateurs de trafic : réseaux sociaux de marque, widgets, mini-sites… », présente Christophe Rozuel.
A Paris, l’agence de reférencement Aposition cherche également un chargé de référencement avec les spécialités suivantes :
- Rédacteur web
- Netmarketer / analyste SEM
- Buzz marketer / chargé de partenariats
- Intégrateur web / spécialiste code valide - accessible
- Spécialiste mesure d’audience / web analytics
L’année 2008 semble être l’année de la mue du métier de référenceur. Déjà qu’il n’est pas facile de trouver des profils techniques et marketing, si, en plus, le mouton à cinq pattes et deux ailes doit posséder des qualités rédactionnelles, alors les agences vont devoir se battre.
Un pôle “formation au référencement”
Avec la difficulté de mise en place d’une stratégie de linking, la formation est sans doute une brèche intéressante pour les agences webmarketing. Synodiance crée donc également un pôle formation et un pôle outsourcing.
Je trouve ces initiatives intéressantes, avec des chiffres qui donnent le tournis : l’agence Synodiance annonce un chiffre d’affaires 2007 de 3,7 M€ avec un résultat net de l’ordre de 10 %.
Les équipes de SEO vont se fragmenter avec des profils très spécialisés : des équipes techniques, des rédacteurs ou link baiters, des link builders, et tout le monde devra être capable de se parler, en pensant au client. Le “in-house” SEO (l’internalisation du référencement, ou la mise en place de collectifs SEO spécialisés, à l’image des journalistes-pigistes) a-t-il de beaux jours devant lui ?
Source : Com & Médias. Je n’ai aucun lien avec les agences Synodiance et Aposition, qui sont des concurrents de l’agence de search marketing qui m’emploie, Intuiti.
Source
Deux niveaux de titre pour l’obtention d’un label
L’accessibilité numérique, tout comme le référencement, ont des points communs. Parmi ceux-ci, je pense qu’ils sont au premier chef des méthodologies qui, elles-mêmes, sont ponctuées d’une kyrielle de détails.
Parmi ces détails, le nombre de niveaux de titre a son importance pour obtenir un label AccessiWeb, qu’il soit de Bronze, d’Argent ou d’Or. Je ne parle pas ici d’accessibilité numérique, mais de labellisation.
En effet, un site labellisé est accessible alors qu’un site accessible n’est pas forcément labellisable.
Si, dans le cadre de votre projet, vous souhaitez (ou votre client) un label, en vous basant sur les points de contrôle AccessiWeb, alors je vous invite à proposer pour chaque page Web auditée deux niveaux de titre Hn (le titre de niveau 1 H1 et le titre de niveau 2 H2).
Quand on pense aux différentes écoles sur le H1 …
Un H1 dans une têtière offre obligatoirement la présence d’un H2, ce qui n’est pas forcément vrai dans le second cas si la page Web offre un faible contenu éditorial.
Personnellement, en dehors de la page d’accueil, que je travaille un peu différemment en termes de structuration de l’information, j’estime que le titre de niveau 1 H1 se place dans le corps informationnel. Je prends donc l’habitude de garder à l’esprit la nécessité d’un double niveau de titre, même si le contenu éditorial est pauvre. En effet, rien n’empêche de l’enrichir.
Source
Ce qui distingue les vrais référenceurs
Dans un article mi-humoristique, mi-sérieux, John Carcutt expose 14 faits qui permettent selon lui de distinguer les vrais référenceurs (aussi appelés SEO) des "je-veux-être". Si certains point, non traduits ici, sont spécifiques au milieu SEO américain, l'article n'en reste pas moins drôle et intéressant :
"Les vrais référenceurs ne portent pas de chapeau en public. Chacun possède en fait l'ensemble des coloris dans sa garde-robe (...) Les puristes utilisent exclusivement leur couleur favorites, et gardent les autres en réserve, juste au cas où".
"Les vrais référenceurs détestent faire du lien sponsorisé (...) ils s'épanouissent au contraire dans l'immesurabilité et l'imprévisibilité des algorithmes"
"Les vrais référenceurs fréquentent les conférences pour boire. Certains y vont pour parler, mais ils y vont essentiellement pour boire. Les vrais référenceurs savent que la plus value des conférence se trouve au bar et dans les soirées cocktails, car c'est là où l'information utile filtre parfois" (NdT : quand j'y vais, c'est pour parler hein).
"Les vrais référenceurs se fichent des changements d'algorithmes. Soit ils optimisent les sites de leurs clients dans le respect des fondamentaux, ce qui les rend peu sensibles aux changements, soit il travaillent sur leurs propres sites qui sont tellement en avance sur les algorithmes que les mises à jour de ceux-ci est anecdotique".
"Les vrais référenceurs possèdent au moins deux tee-shirts sur le thème du Search Marketing" (NdT : je n'en ai aucun pour ma part, j'espère ne pas porter atteinte à ma réputation en disant cela).
"Les vrais référenceurs ne fréquentent pas les forums. Ce fut longtemps le cas, et la plupart des SEO ont en fait appris le métier sur ces forums. Mais maintenant les vrais référenceurs diffusent tout leur savoir sur leur propres sites et sur les blogs amis. Pourquoi offrir de l'information gratuite alors que l'on peut la monétiser soi-même" (NdT : je continue personnellement à fréquenter les forums pour aider et être en contact avec la communauté. Mais il est vrai qu'il y a eu un glissement des forums vers les blogs en ce qui concerne la veille et les débats).
"Les vrais référenceurs se fichent des positions. Ils ne le disent pas, afin de ne pas inquiéter le client et de rester crédible aux yeux de la communauté. Mais au fond, ce qui motive le SEO c'est de prendre un site déficient sous son aile et de l'amener à son vrai potentiel. Ce que les vrais référenceurs aiment, c'est la belle ouvrage, pas les résultats. Ces derniers ne sont que des conséquences".
"Les vrais référenceurs pratiquent plus le référencement qu'ils n'écrivent à son sujet (...) Ils n'ont pas le temps d'écrire sur le référencement, sauf lorsque cela leur permet de faire un pause et de répondre aux 10.000 questions qui encombrent leur boîte email".
"Les vrais référenceurs se fichent du PageRank comme de leur première chemise. Les vrai SEO se bidonnent quand ils entendent le brouhaha que génère chaque mise à jour du PR affiché par la Googlebar".
"Les vrais référenceurs sont devenus référenceurs par accident. Ils n'ont pas commencé leur carrière en cherchant à devenir SEO (...) La plupart d'entre eux sont aujourd'hui heureux de faire ce métier".
"Les vrais référenceurs n'essayent même plus d'expliquer leur métier (...) le référenceur moyen s'est déjà fait poser cette question au minimum 500 fois et en général personne ne comprends la réponse" (NdT : pas faux. Pour les personnes n'utilisant jamais un moteur de recherche, être référenceur se résume souvent à "travailler dans l'internet").
Source