Question sur le Script du TOP 10 de MyPHPannuaire.


tryan
WRInaute passionné
WRInaute passionné
 
Messages: 2355
Inscription: 20 Fév 2005

Question sur le Script du TOP 10 de MyPHPannuaire.

Message le Ven Oct 26, 2007 14:35

Bonjour

J'essaye d'intégrer le code du top 10 de MyPHPannuaire ( http://www.webrankinfo.com/forums/viewtopic_38662.htm ) directement dans le code de l'annuaire (sans passer par le fichier partenaire.php) de façon à proposer un lien comptabilisant les meilleurs référents.
L'url de départ est celle ci : -http://mon-site.com/partenaires.php?url=http://le-site.fr
L'url modifié est celle la:-http://mon-site.com/categorie-du-site.html?url=http://le-site.fr

Je ne parviens pas à intégrer le code du fichier partenaires.php directement dans mon fichier index.php ou autre sans provoquer d'erreurs ...(en gros je ne sais pas comment modifier ce code ni ou l'intégrer)!
Le code du fichier:
Code: Tout sélectionner
<?php
include("data_bd_annuaire.php"); //variables de l'annuaire
include("functions.php"); //fonctions de l'annuaire

$lk = connection_BD();
function gpc_secure($chaine, $is_int = false)
{
   $chaine = ( is_int($chaine) || $is_int ) ? intval($chaine) : mysql_real_escape_string( stripslashes( htmlspecialchars( trim($chaine) ) ) );
   return $chaine;
}
$url = ( isset($_GET['url']) ) ? gpc_secure($_GET['url']) : '';
if($url == '')
   exit;

$delai_clic = 24*3600; //delai avant qu'un nouveau clic ne soit recomptabiliser (24*3600 = 24h)   
$tab_id = array();
if (isset($_COOKIE["goto_myphpannuaire"]))
   $tab_id = explode("#",$_COOKIE["goto_myphpannuaire"]);   
   
//creation des requetes pour l'annuaire
$sql_upd = "UPDATE $T_sites SET nb_clic_ext = nb_clic_ext+1 WHERE url = '$url' ";
//si on a pas encore visiter le site
if (!isset($_COOKIE["goto_myphpannuaire"]) || !is_in_array($id,$tab_id))
{
   //envoi de la requete pour comptabiliser le clic
   $upd = send_sql($sql_upd,"utiliser le compteur de clics (annuaire)");
   //creation (ou modifications) du cookie
   $cookie = isset($_COOKIE["goto_myphpannuaire"]) ? $_COOKIE["goto_myphpannuaire"] : '';
   setcookie("goto_myphpannuaire",$cookie."#".$id,time()+$delai_clic,"/");   
}
//fermeture de la connexion
mysql_close($lk);

   header("Location: http://www.votresite.com");
   exit;
?>


Un gros coup de main serait le bienvenue.
Merci


tryan
WRInaute passionné
WRInaute passionné
 
Messages: 2355
Inscription: 20 Fév 2005

Message le Dim Oct 28, 2007 16:33

Pas de réponse.. :(


zeb
WRInaute accro
WRInaute accro
 
Messages: 4569
Inscription: 5 Déc 2004

Message le Dim Oct 28, 2007 18:24

salut Tryan,

quels sont les message d'erreurs renvoyés ?

as tu pensé a adapter les includes ?


tryan
WRInaute passionné
WRInaute passionné
 
Messages: 2355
Inscription: 20 Fév 2005

Message le Lun Oct 29, 2007 10:32

Salut zeb :D

Je n'ai pas noté les messages d'erreur ... en gros, soit mon site ne s'affiche plus soit le compteur n'ai pas incrémenté. Le dernier teste en date sur mon fichier index est celui ci :
Code: Tout sélectionner
<?php


include("data_bd_annuaire.php"); //variables de l'annuaire
include("functions.php"); //fonctions de l'annuaire
//////////////////////////////////////////////////////////////////
$url = ( isset($_GET['url']) ) ? gpc_secure($_GET['url']) : '';
if($url != ''){


$lk = connection_BD();
function gpc_secure($chaine, $is_int = false)
{
   $chaine = ( is_int($chaine) || $is_int ) ? intval($chaine) : mysql_real_escape_string( stripslashes( htmlspecialchars( trim($chaine) ) ) );
   return $chaine;
}



$delai_clic = 1*30; //delai avant qu'un nouveau clic ne soit recomptabiliser (1*30= 30 secondes)   
$tab_id = array();
if (isset($_COOKIE["goto_myphpannuaire"]))
   $tab_id = explode("#",$_COOKIE["goto_myphpannuaire"]);   
   
//creation des requetes pour l'annuaire
$sql_upd = "UPDATE $T_sites SET nb_clic_ext = nb_clic_ext+1 WHERE url = '$url' ";
//si on a pas encore visiter le site
if (!isset($_COOKIE["goto_myphpannuaire"]) || !is_in_array($id,$tab_id))
{
   //envoi de la requete pour comptabiliser le clic
   $upd = send_sql($sql_upd,"utiliser le compteur de clics (annuaire)");
   //creation (ou modifications) du cookie
   $cookie = isset($_COOKIE["goto_myphpannuaire"]) ? $_COOKIE["goto_myphpannuaire"] : '';
   setcookie("goto_myphpannuaire",$cookie."#".$id,time()+$delai_clic,"/");   
}
//fermeture de la connexion
mysql_close($lk);


}

////////////////////////////////////////////////////////////////////////////////
//page principale de l'annuaire
.......

La, aucune erreur à signaler sauf que la comptabilisation ne se fait pas non plus.
J'ai déplacé une partie du code ci dessous au dessus de l'include fonction.php comme conseillé mais sans résultat:
Code: Tout sélectionner
function gpc_secure($chaine, $is_int = false)
{
   $chaine = ( is_int($chaine) || $is_int ) ? intval($chaine) : mysql_real_escape_string( stripslashes( htmlspecialchars( trim($chaine) ) ) );
   return $chaine;
}

J'ai testé avec et sans rewrite mais sans succès.
D'autre part, on me dit que les url du style -http://mon-site.com/categorie-du-site.html?url=http://le-site.fr sont pourrit d'un point de vue referencement ... alors je prefere laché l'affaire avant d'avoir du n'importe quoi sur mon -www.

Je ne sais pas comment faire pour afficher mes X référent uniquement inscrit sur mon annuaire...
Merci


zeb
WRInaute accro
WRInaute accro
 
Messages: 4569
Inscription: 5 Déc 2004

Message le Lun Oct 29, 2007 10:48

re salut,

ta fonction gpc_secure est incluse dans ta condition if($url != ''){...} donc du coup je suis pas certain que le code $url = ( isset($_GET['url']) ) ? gpc_secure($_GET['url']) : ''; soit réalise correctement.

de plus tu me dis que la comptabilisation ne se fait pas

si je comprend bien ton script, tu n'as plus d'incrémentation dans ta base, Incrémentation qui semble se faire grâce a la requête suivante :

UPDATE $T_sites SET nb_clic_ext = nb_clic_ext+1 WHERE url = '$url'

je mettrais presque ma main a couper que la requête en question ne passe pas pour la simple raison que ta variable $url contient une chaine différente que celle qui se trouve dans la base (c'est même quasi sur puisque tu la transforme via la fonction gpc_secure

avec ce cocktail de fonctions : mysql_real_escape_string( stripslashes( htmlspecialchars( trim($chaine) ) ) )

moralité ton url n'est plus du tout comparable a ce que contient ta base. (d'ou la requête qui ne renvoie rien puisque la dite url est dans une clause WHERE)

mon truc :

place un echo derrière ta requete pour voir sa tronche en live et essaie (copier / coller) de l'envoyer en direct dans phpMyAdmin

Code: Tout sélectionner
//creation des requetes pour l'annuaire
$sql_upd = "UPDATE $T_sites SET nb_clic_ext = nb_clic_ext+1 WHERE url = '$url' ";
echo $sql_upd."<br/>";


a partir de la tu devrais y voir plus clair

;-)


serval2a
WRInaute accro
WRInaute accro
 
Messages: 3457
Inscription: 21 Mar 2005

Message le Lun Oct 29, 2007 10:52

Bonjour,
Essaie cela :
Code: Tout sélectionner
<?php
$lk = connection_BD();
function gpc_secure($chaine, $is_int = false)
{
   $chaine = ( is_int($chaine) || $is_int ) ? intval($chaine) : mysql_real_escape_string( stripslashes( htmlspecialchars( trim($chaine) ) ) );
   return $chaine;
}
$url = ( isset($_GET['url']) ) ? gpc_secure($_GET['url']) : '';
if($url == '')
   exit;

$delai_clic = 24*3600; //delai avant qu'un nouveau clic ne soit recomptabiliser (24*3600 = 24h)   
$tab_id = array();
if (isset($_COOKIE["goto_myphpannuaire"]))
   $tab_id = explode("#",$_COOKIE["goto_myphpannuaire"]);   
   
//creation des requetes pour l'annuaire
$sql_upd = "UPDATE $T_sites SET nb_clic_ext = nb_clic_ext+1 WHERE url = '$url' ";
//si on a pas encore visiter le site
if (!isset($_COOKIE["goto_myphpannuaire"]) || !is_in_array($id,$tab_id))
{
   //envoi de la requete pour comptabiliser le clic
   $upd = send_sql($sql_upd,"utiliser le compteur de clics (annuaire)");
   //creation (ou modifications) du cookie
   $cookie = isset($_COOKIE["goto_myphpannuaire"]) ? $_COOKIE["goto_myphpannuaire"] : '';
   setcookie("goto_myphpannuaire",$cookie."#".$id,time()+$delai_clic,"/");   
}
//fermeture de la connexion
mysql_close($lk);
?>


tryan
WRInaute passionné
WRInaute passionné
 
Messages: 2355
Inscription: 20 Fév 2005

Message le Lun Oct 29, 2007 19:06

Merci à vous :) .

Je ne l'ai peut etre pas précisé mais je suis un poli en php... d'ou l'avatar très représentatif!
Zeb, j'ai ajouté le echo $sql_upd."<br/>"; mais je ne pige pas ce que celà est censé faire :?: en tout cas rien de visuel n'apparait!

serval2a, en faite c'est le code d'origine avec les includes et header("Location: -http://www.votresite.com");
exit; en moin, ce que j'ai déja tenté aussi mais sans succès aussi.

Dans le code, il y a bien une partie qui permet de comparer l'origine du click aux url présent dans l'annuaire .. non ?
Merci


zeb
WRInaute accro
WRInaute accro
 
Messages: 4569
Inscription: 5 Déc 2004

Message le Mar Oct 30, 2007 15:49

echo $sql_upd."<br/>"; doit afficher la requête SQL dans ta page ce qui te permet de la copier / coller dans phpmyadmin pour voir si elle fonctionne (manuellement)

si elle n'est pas visible c'est peut être que la forme ou la couleur (CSS) empêche de bien la voir dans ta page.

dans ce cas regarde dans le code source (clic droit source) pour la voir.

si l'update ne fonctionne pas en manuel sur ta base c'est que la requête est pipée qquepart donc ça te donne une piste sur l'origine du 'non comptage' (voir forme de WHERE url = '??????' )


serval2a
WRInaute accro
WRInaute accro
 
Messages: 3457
Inscription: 21 Mar 2005

Message le Mer Oct 31, 2007 17:34

tryan a écrit:Dans le code, il y a bien une partie qui permet de comparer l'origine du click aux url présent dans l'annuaire .. non ?

Ben ton code semble récupérer la variable URL avec ça :
Code: Tout sélectionner
$url = ( isset($_GET['url']) ) ? gpc_secure($_GET['url']) : '';

Et mettre à jour le compteur avec la fonction qui va bien ici.
Code: Tout sélectionner
$sql_upd = "UPDATE $T_sites SET nb_clic_ext = nb_clic_ext+1 WHERE url = '$url' ";

et ici
Code: Tout sélectionner
   $upd = send_sql($sql_upd,"utiliser le compteur de clics (annuaire)");

Donc dès lors que tout est bien installé et qu'un type arrive par exemple jusqu'à la page
Code: Tout sélectionner
tonsite.com?url=sonsite.com

Ca devrait marcher.


tryan
WRInaute passionné
WRInaute passionné
 
Messages: 2355
Inscription: 20 Fév 2005

Message le Mer Oct 31, 2007 20:08

zeb, parès de multiple tentatvie d'intégration du code echo $sql_upd."<br/>"; aussi bien dans le fichier d'origine du script que dans mes bidouilles, il n'y a rien à faire... aucune requête SQL n'ai affiché.

serval2a, le code d'origine telle quelle fonctionne très bien mais il ne m'interresse pas trop car:
1- il pointe vers une page partenaire.php
2-il fait une redirection vers l'index

Vous avez une corde ?


serval2a
WRInaute accro
WRInaute accro
 
Messages: 3457
Inscription: 21 Mar 2005

Message le Mer Oct 31, 2007 21:13

Pas de panique, on va t'aider.
Marie va me chercher mon fusil. ;)

Bon revenons à nos moutons, ton code semble effectivement très bien fonctionner, même si j'ai pas essayé hein ;), donc pour que cela marche sur toutes les pages il faut que tu l'intègres dedans, à mon avis dans ton header (à ce stade là si tout ce passe bien et que tu as enlevé les fonctions déclarées en double tu ne devrais pas avoir d'erreur), ensuite il faut que tu vérifies bien que tu passes une url en GET comme je l'ai indiqué ci-dessus, en purgeant les cookies de ton navigateur à chaque fois voir tu supprimes pour tester les différentes lignes où il y a marqué cookie.
Autre possibilité, il y a un conflit avec la variable url, qui doit déjà exister par ailleurs, dans ce cas remplace dans chaque chaine url par un autre mot et teste.
@+

PS : t'inquiète j'ai mon fusil.

kitaro
WRInaute discret
WRInaute discret
 
Messages: 87
Inscription: 25 Nov 2004

Message le Mar Nov 20, 2007 13:56

Bonjour,

Vous savez comment on peut faire un reset justement à propos du top 10 ? manuellement ou alors 1 fois par semaine en automatique...

Merci


Si vous avez aimé cette discussion, partagez-la sur vos réseaux sociaux préférés :

Lectures recommandées sur ce thème :



Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 0 invités


cron