Question sur le Script du TOP 10 de MyPHPannuaire

WRInaute passionné
Bonjour

J'essaye d'intégrer le code du top 10 de MyPHPannuaire ( https://www.webrankinfo.com/forum/t/script-add-on-categorizator-by-m-f-euso.38662/ ) 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:
<?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
 
WRInaute accro
salut Tryan,

quels sont les message d'erreurs renvoyés ?

as tu pensé a adapter les includes ?
 
WRInaute passionné
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:
<?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:
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
 
WRInaute accro
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:
//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

;-)
 
WRInaute accro
Bonjour,
Essaie cela :
Code:
<?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);
?>
 
WRInaute passionné
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
 
WRInaute accro
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 = '??????' )
 
WRInaute accro
tryan a dit:
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:
$url = ( isset($_GET['url']) ) ? gpc_secure($_GET['url']) : '';
Et mettre à jour le compteur avec la fonction qui va bien ici.
Code:
$sql_upd = "UPDATE $T_sites SET nb_clic_ext = nb_clic_ext+1 WHERE url = '$url' ";
et ici
Code:
   $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:
tonsite.com?url=sonsite.com
Ca devrait marcher.
 
WRInaute passionné
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 ?
 
WRInaute accro
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.
 
WRInaute discret
Bonjour,

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

Merci
 
Discussions similaires
Haut