PDA

Voir la version complète : [recherche ] hack nombre de clic sur lien


alois3
28/11/2007, 19h15
bonsoir ..

voila je recherche un hack qui permet de savoir combien de fois le liens a ete cliquer ??

et non c ets pas pour des liens de films ..:fool:

c est juste que je trouve que ca donne un ptit coter simpas de savoir si le liens plais ou pas ,**liens = redirection sur un site ou une pub sur un forum etc **

je precise avant ;)...llol

Ombre
28/11/2007, 20h06
Slt, tu n as pas besoin de précisé le but de cette demande, surtout que là apres ce que tu dis et dans cet air souspicieux, on va réellement pensé que tu as un site de wawa :D

il existe deja un system pour ça, mais je ne sais pas si il est spécifiquement fait pour ou si c'est une option d un hack, le plsu dure ça va etre de le retrouver :D si je le trouve ou en trouve un qui le fait spécifiquement, je te le dis :D

Ombre
28/11/2007, 20h29
Tiens il y a ceux là qui le font mais il ne font pas que ça :)

http://www.vbulletin.org/forum/showthread.php?t=119041&highlight=Number+download+attachments

http://www.vbulletin.org/forum/showthread.php?t=120122&highlight=Number+download+attachments

alois3
28/11/2007, 20h51
merci ombre , non jai preciser car avec lautre demande sur le hack ou je n avais rien compris je me suis dit youp youp :D

alois3
28/11/2007, 21h05
bon le downoald II non c est pas ca

sinon le premier qui meme sur un autre liens => http://www.eirma.org/wikis/index.php/Links_and_Downloads_Manager#Screenshots

pas ca non plus , car il vas dire le nombre de fois ou le fichier a ete telecharger mais si c ets un liens je ne pense pas ..

je pense perso que ce sont de gros hack , je pense plus que l ad que je cherche sois juste une modif de fichier peut etre accompagner d un ajax mais pas plus ..les hack proposer me semble plus complex qu un simple affichage de nombre fois telecharger ..

je pense plus que ce soit Template Modifications .. mais j ai beau chercher mais je ne trouve pas .. en plus moi et l anglais je galere sur org :blush2:.. si tu trouve autre chose n hesite pas , je vais voir de mon coter aussi .. merci encore ombre

best98
29/11/2007, 11h09
Salut,

Ce que j'ai faut sur mon site/forum, mais pour atteindre des liens externes uniquement (hors forum), c'est une page PHP de redirection qui:
-incrémente un compteur dans la base de donnée pour l'ID de la page cherchée
-cherche dans la base de donnée le lien pour l'ID passé en parametre
-redirige vers la page souhaitée avec une commande php.

Pierrick

alois3
29/11/2007, 14h51
oui mais je pense que c est possible de l integrer directement plutot que de passer par autre fichier.php .. car je pense que l am odif ne soit pas trop importante .. enfin je crois , je vais voir ca ... merci

DelfShkrimm
29/11/2007, 17h34
Mieux encore (enfin pour mon usage à moi en tout cas ^^), ce que j'ai fait, c'est que j'ai fait une fonction tournant avec Ajax qui envoies des parametres contenant un titre du lien sur lequel tu veux enregistrer le nombre de clic. Dans la page PHP appelée par la fonction, j'ai une requete SQL (ou à defaut si tu ne veux pas trop surcharger le serveur, tu peux utiliser un fichier plat) qui incrémente le nombre de clic sur le lien ayant pour id/titre celui spécifié dans les parametres de la fonction ;)

En gros, la personne clique sur le lien, qui sur l'evènement onClick va appeler la fonction clickCount avec comme parametre l'id du lien. La fonction appelle un fichier PHP en transmettant le parametre en POST qui va executer une requete sur une BDD ou un FlatFile pour incrémenter le nombre de clics sur ce lien.

alois3
30/11/2007, 21h11
bien comme systeme mais un eu compliquer pour moi a le creer .. merci

DelfShkrimm
02/12/2007, 10h46
Ben, c'est pas si compliqué que ça hein ^^

Suffit, comme je te l'ai dit, de créer une fonction JS utilisant l'objet XMLHTTPRequest pour appeller (lors du clic sur le lien) une page PHP qui va traiter l'information que tu souhaite... Ici comptabiliser le nombre de clics sur ce lien.

Ombre
02/12/2007, 11h25
C'est pas compliqué ? si un utilisateur ne sais pas le faire, pour lui ça l ais :) donc il est bien d'argumenter une solution, si Alois ne connais pas le fonctionnement d un js elle ne peu y arrivé, le mieux ça serait pas que tu lui copie ton code ici? la ça l aiderais je pense :) Merci.

DelfShkrimm
02/12/2007, 12h16
Y a pas de soucis ^^ Seulement, beaucoup de tutos sont présents sur le net sur l'objet XMLHTTPRequest, c'pour ca que je trouvais pas ça trop compliqué ;) Personnellement, je ne me suis pas embêté à recoder une fonction d'instance du XHR, j'en ai pris une qui existait déjà...

Donc voilà ce que j'ai fait :

- Met cela dans le header de ton style vBulletin
<script language="javascript">
var xhr = null;

// Fonction de creation de l'objet XMLHttpRequest qui resservira pour chaques fonctions AJAX
function getXhr() {
if (window.XMLHttpRequest) xhr = new XMLHttpRequest();
else if (window.ActiveXObject) {
try {
xhr = new ActiveXObject("Msxml2.XMLHTTP");
}
catch (e) {
xhr = new ActiveXObject("Microsoft.XMLHTTP");
}
}
else {
alert("Votre navigateur ne supporte pas les objets XMLHTTPRequest, veuillez le mettre à jour");
xhr = false;
}
}
</script>


- Ensuite tu dois créer ta fonction AJAX qui servira à comptabiliser le nombre de clic sur le lien.

<script language="javascript">
function clickCount(linkId) {
getXhr();
xhr.onreadystatechange = function() {
if (xhr.readyState == 4 && xhr.status == 200) {
if (xhr.responseText == 'true') alert ("Message à faire apparaitre dans une boite de dialogue lorsqu'un clic a bien été pris en compte.");
else alert ("Un problème est survenu, veuillez contacter le webmaster du site.");
}
}
xhr.open("POST", "ma_page.php", true);
xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
xhr.send("id="+linkId);
}
</script>


Bon voilà pis après viens la page PHP... Là je sais pas si tu as des connaissances plus ou moins solides en PHP, à défaut je peux te donner une début de page (pas testée puisque venant juste d'être écrite ;))

<?php
// Connexion à la BDD.
mysql_connect('host', 'user', 'pass');
mysql_select_db('dbname');

// On vérifie que la page a bien été appelée par la fonction AJAX.
if (isset ($_POST['linkId'])) {
$linkId = htmlspecialchars($_POST['linkId']);
$req = mysql_query('SELECT `count` FROM `clickcount` WHERE `id`="'.$linkId.'"');
if (mysql_num_rows($req) != 0)) {
// Le lien existe, on incrémente juste la valeur du nombre de clique de 1.
$data = mysql_fetch_array($req);
$count = $data['count']++;
if (mysql_query('UPDATE `clickcount` SET `count`="'.$count.'" WHERE `id`="'.$linkId.'"')) echo 'true'; // Si la requete pour incrémenter la valeur du nombre de clic a marchée, alors on renvoie une réponse positive à la fonction AJAX...
else echo 'false'; // ...Sinon on renvoie une réponse négative.
}
else {
// Le lien n'existe pas encore dans la base de données, on doit donc le créer.
if (mysql_query('INSERT INTO `clickcount` (`id`, `count`) VALUES("$id", "1")')) echo 'true'; // Si la création d'une nouvelle entrée dans la base de données a réussie, on renvoie une réponse positive à la fonction AJAX...
else echo 'false'; // ...Sinon on renvoie une réponse négative.
}
}
else die();

// Déconnexion de la BDD.
mysql_close();
?>

Je rappel que je n'ai pas testé mon code... Je viens juste de l'écrire ;)

Tu devras appeler ce fichier ma_page.php et le mettre dans la racine de ton dossier \forum. Si tu préfères le mettre autre part, je dans un dossier \forum\autredossier par exemple tu dois modifier dans la fonction AJAX le chemin menant à ta page "ma_page.php".

J'ai utilisé MySQL pour comptabiliser les clics, donc tu dois créer une table MySQL "clickcount" avec :
- Un champs "id", INT.
- Un champs "count", INT avec comme valeur par défaut 0.

Et dans le haut de la page PHP, tu dois modifier "host", "user", "pass", et "dbname" par réspéctivement l'adresse web où est hébergée ta base de données, ton nom d'utilisateur MySQL, ton pass MySQL, et le nom de la base de données de ton forum.

Hum si tu vois des choses à rajouter... Je pourrai te faire ça ;)

Bonne chance!
Delf'

Edit : Ah oui j'oubliais, tu dois appeler la fonction clickCount dans le lien de ton message dans le forum. Tu dois donc utiliser un lien au format HTML et non BBCode (sauf s'il est possible d'utiliser les évènements avec les balises [url] du BBCode, mais je ne pense pas) : <a href="là_où_mène_ton_lien" onClick="clickCount('id_de_ton_lien');">Nom à faire apparaitre à la place de l'URL du lien</a>
Là tu remplaces "là_où_mène_ton_lien" par l'adresse où renvoie ton lien, et "id_de_ton_lien" par l'id du lien UNIQUE que tu dois inventer. C'est pas super pratique si t'as bcp de lien, mais à priori si c'est pas une utilisation pour le ***** que tu veux faire du script, ca devrai pas te poser de probleme si tu vas de 5 en 5...

Edit 2 : Si tu préfère utiliser des noms pour le lien plutôt que des ID, tu peux, mais tu devras modifier les paramètres de ta table concernant le champs "id" et mettre "VARCHAR" à 255 caractères max à la place de INT.

alois3
02/12/2007, 15h42
oui mais la il faut que je le fasse pour chaque liens , ca va etre super lourd car j ai quand meme 7000 liens llol...et non c ets pas pour le ***************** µµ ombre a deja vu mon forum µµ

il n y aurais pas moyen juste d integrer l id du forum ou l on veut que le nombre de clic soit ??

vi la je suis un peu perdu , evident quand tu connais :blush2:, moi je bricole meoui...

merci pour ton gros coup de pousse mais je pense pas que ca va allais vu le nombre de lien que j ai ... mais merci quand meme surtout du taff fournie au moin je sais que ca va servir a quelqu un d autre de toute facon ..

hier soir j ai parler avec
stradfred ,qui lui en as parler avec mtor ..

en gros mtor va nous en faire un hack une fois sa v2 fini ..

a moins que quelqu un a une autre soluce ... car il ne vas pas pouvoir fairee ca dans l instant ...

bon dimanche !!!

DelfShkrimm
02/12/2007, 16h07
Ben sinon, si tu as un unique lien par post/thread je peux faire en sorte que ca récup l'id du post plutot que celui du lien, mais si tu en as plus que un par post, ca n'est pas possible avec ma méthode ;)

Et si tu ne peux pas accepter le HTML dans tous les forums ou tu veux compter les liens, je peux te faire une BBCode qui lance une fonction JS sinon :)

Edit : Quoique tout bien réfléchis, meme avec plusieurs liens dans un meme post, je peux gérer les trucs sans problèmes en fait... Sufit de faire en fonction de la réponse de la fonction AJAX pour renommer automatiquement tous les liens sur lesquel on a cliqué.

alois3
02/12/2007, 20h31
cela depand en fait des postes par moment tu as 5 ou 6 liens rapishare , ou un seul dans un poste poste cela depand ...

je te remercie , oui je veut bien tester:delicious: si tu as un peu de temps ...

merci byby