IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

[Cookies] Methode post sur un lien


Sujet :

Langage PHP

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    174
    Détails du profil
    Informations personnelles :
    Âge : 62
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Janvier 2006
    Messages : 174
    Par défaut [Cookies] Methode post sur un lien
    Bonjour à tous

    Je voulais savoir s'il était possible d'appliquer la méthode POST sur le simple clic d'un lien.

    Je ne veux pas passer par la méthode GET, c'est pour alimenter un compteur, si je fais la méthode GET, il suffira de changer le chiffre dans l'url pour mettre ce que l'on veut.

    Je voudrais aussi eviter de passer par un fichier intermédiaire.

    Merci

  2. #2
    Expert confirmé Avatar de Mr N.
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    5 418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 5 418
    Par défaut
    Le seul moyen pour toi sera de passer par javascript, afin de capturer le click sur le lien pour faire un appel ajax à la place.
    Qu'est ce qui te gène dans le fait qu'on puisse changer l'url ? Sache qu'on peut tout aussi bien changer les parametres d'une requête post...

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    174
    Détails du profil
    Informations personnelles :
    Âge : 62
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Janvier 2006
    Messages : 174
    Par défaut
    Merci pour ta réponse.

    effectivement ça va passer par du javascript, mais je ne suis pas sur de préférer.

    C'est un compteur pour compter le nombre de clic.

    Je veux récuperer la valuer et rajouter 1, si dans le lien il y 122 et que la personne met 2566 mon comteur passera de 122 à 2566 juste en remplacant un chiffre dans l'url. Dans la méthode POST c'est surment modifiable, mais surement déja plus difficile à réaliser.

  4. #4
    Membre éprouvé

    Inscrit en
    Janvier 2006
    Messages
    969
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 969
    Par défaut
    A mon avis, ce n'est pas une bonne méthode pour compter les clicks.
    Fais plutôt une fonction qui ajoute 1 à un compteur, du genre

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    function compteur() {
    if(isset($_GET['compteur']))
    //ajouter 1 à une variable de session, une BDD, etc
    }

  5. #5
    Expert confirmé
    Avatar de sekaijin
    Homme Profil pro
    Urbaniste
    Inscrit en
    Juillet 2004
    Messages
    4 205
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Urbaniste
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2004
    Messages : 4 205
    Par défaut
    voila la chose à appeller dans le onLoad avec comme paramètre le lien à passer en mode post
    setPostAHref(document.getElementById('monId'));

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
     
     	 function setPostAHref(myAHref) { 
     	 	if (myAHref.href != "") {
    			var onclick = myAHref.getAttribute('onclick');
    			if (typeof(onclick)!='function') {
    				myAHref.onclick = function () {
    					var href = this.getAttribute('href');
    					var target = this.getAttribute('target');
    					//alert(target);	
    					var arg = new Array();
     
    					var expr =  new RegExp("([^?]*)(\\?([^?]*)?)");
    					var matches = expr.exec(href);
    					if (matches) {
    						var loc = matches[1];
    						var args = matches[3];
    						matches = args.split(/\&/);
    						for (i=0;i<matches.length;i++)
    						  arg[i] = matches[i].split(/=/);
    					} else {
    						var loc = href;
    					}
     
    					var body = document.getElementsByTagName("body")[0];
    					var aform = document.createElement("form");
    					aform.style.visibility = "visible";
    					aform.setAttribute('method','POST');
    					aform.setAttribute('action',loc);
    					if (target)	aform.setAttribute('target',target);
     
    					for (var i = 0; i < arg.length; i++) {
    						var hidden = document.createElement("input");
    						hidden.setAttribute('type','hidden');
    						hidden.setAttribute('name',arg[i][0]);
    						hidden.setAttribute('value',arg[i][1]);
    						hidden = aform.appendChild(hidden);
    					}
    					aform = body.appendChild(aform);
     
    					aform.submit();
    					return false;
    				}
    			}
    		}
    	}
    A+JYT

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    174
    Détails du profil
    Informations personnelles :
    Âge : 62
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Janvier 2006
    Messages : 174
    Par défaut
    Ok les gars

    Merci pour vos propositions, je suis au boulot, je regarde ce soir et je vous tiens au courant.

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    174
    Détails du profil
    Informations personnelles :
    Âge : 62
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Janvier 2006
    Messages : 174
    Par défaut
    Bon j'ai pas réussi avec vos méthodes,

    Je ne suis pas un pro et je ne comprend pas trop le javascript.

    sinon sekaijin tu peux me dire ce que tu entends par "le onLoad avec comme paramètre le lien à passer en mode post
    setPostAHref(document.getElementById('monId'));"

    je suis débutant tu pourrais m'expliquer simplement ?

    j'ai essayé

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    function compteur() {
    }
    Mais je ne sais pas appelé la function au chargement de la page.

    il est possible de faire un onload avec une function php ? si oui j'ai pas réussi.






    j'ai donc fait mon compteur en passant par un autre fichier, je continue de chercher mieux.
    Merci

  8. #8
    Expert confirmé Avatar de Mr N.
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    5 418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 5 418
    Par défaut
    Ca veut dire quoi dans ton cas "passer par un autre fichier" ?

    Pourquoi ne fais-tu pas simplement :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <a href="http://mon.site.com/mon/script.php">Cliquer ici</a>
    et mon/script.php :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <?php
     
    ajouter_1_a_mon_compteur();
     
    ?>

  9. #9
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    174
    Détails du profil
    Informations personnelles :
    Âge : 62
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Janvier 2006
    Messages : 174
    Par défaut
    Bonjour Mr N.

    Passer par un autre fichier, c'est ta solution avec un header('Location: ") pour aller sur le fichier du lien d'origine

    Bonne journée

  10. #10
    Expert confirmé Avatar de Mr N.
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    5 418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 5 418
    Par défaut
    J'ai pas compris. En fait je ne comprend pas ton besoin fonctionnel. Pourrais-tu détailler ?

  11. #11
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    174
    Détails du profil
    Informations personnelles :
    Âge : 62
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Janvier 2006
    Messages : 174
    Par défaut
    Il me faut juste un compteur de clic.

    http://www.developpez.net/forums/sho...d.php?t=344978

    je l'ai fait en passant par une page php intermèdiaire, je voulais eviter la page intermèdiaire, mais je ne sais pas comment faire la soluce proposé par sekaijin me parait inaccessible vu mon niveau.


    l'autre soluce parait simple mais en passant par un fichier php.
    Je voudrais bien le faire en direct en passant par la commande onload, mais je ne sais pas faire.

    tu peux voir le résultat ici http://www.teeshotweb.com/astuces/astuce-date.html ça alimente le nombre de vu.

    Merci

  12. #12
    Expert confirmé Avatar de Mr N.
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    5 418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 5 418
    Par défaut
    Ok c'est plus clair.
    Imagine que je me rende sur une page. Le compteur sera augmenté de 1.
    Je trouve la page tellement intéressante que j'envoie l'url (celle apres la redirection) à un pote. Si ce pote visite la page, tu auras 2 visites (moi+pote) alors que tu afficheras "vu 1 fois"...
    Donc soit tu modifies en affichant "1 clic", soit tu mets ton compteur sur la page en question.
    Ainsi chaque visite, qu'elle vienne d'un clic de ta première page, qu'elle provienne d'un moteur de recherche ou qu'elle soit directe (bookmark, ...), augmentera ton compteur de 1.

  13. #13
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    174
    Détails du profil
    Informations personnelles :
    Âge : 62
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Janvier 2006
    Messages : 174
    Par défaut
    C'est vrai, mais si le code est sur la page à chaque F5 ça fera 1 de plus. A moins qu'il y ai moyen de bloque le compteur pour la touche F5.

    si il n'y pas de soluce alors effectivement je mettrais clic à la place de vu.

    Merci

  14. #14
    Expert confirmé
    Avatar de sekaijin
    Homme Profil pro
    Urbaniste
    Inscrit en
    Juillet 2004
    Messages
    4 205
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Urbaniste
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2004
    Messages : 4 205
    Par défaut
    Citation Envoyé par Tee shot
    Bon j'ai pas réussi avec vos méthodes,

    Je ne suis pas un pro et je ne comprend pas trop le javascript.

    sinon sekaijin tu peux me dire ce que tu entends par "le onLoad avec comme paramètre le lien à passer en mode post
    setPostAHref(document.getElementById('monId'));"...
    Merci
    dans ta page tu mets un id sur ton lien
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <a href="monurl.html" id="monId">blabla</a>
    et sur la balise body tu ajoute l'attribut on load
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <body onLoad="setPostAHref(document.getElementById('monId'));">
    à l'ouverture de ta page le javascript sera exécuté il récupérera ton lien ( document.getElementById('monId')) et le transformera pour qu'il fonctionne en mode POST lorsqu'on clique dessus

    tu peux en mettre autant que tu veux dans ta page il suffit de leur mettre un id (tous différent) et dans onLoad appeler la fonction avec ces id

    A+JYT

  15. #15
    Expert confirmé Avatar de Mr N.
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    5 418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 5 418
    Par défaut
    Citation Envoyé par Tee shot
    C'est vrai, mais si le code est sur la page à chaque F5 ça fera 1 de plus.
    En effet. Il te faut implémenter le concept de visite unique. Une possibilité pour ça est d'utiliser les cookies.
    1. le visiteur arrives sur ta page
    2. tu incrémentes un compteur
    3. tu mets un cookie valable longtemps qui contient un id.
    4. tu stockes cet id dans ta base comme quoi il a visité telle page

    A la prochaine visite (F5) tu ne fais pas les étapes 2, 3 et 4 si le visiteur a déja vu la page (il arrive avec un id dans ses cookies qu'il te suffit de comparer à ceux stockés dans la base pour telle page)

    N'oublie pas aussi de ne pas comptabiliser les visites des moteurs de recherche

  16. #16
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    174
    Détails du profil
    Informations personnelles :
    Âge : 62
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Janvier 2006
    Messages : 174
    Par défaut
    Je vois que j'ai du boulot, mais c'est compliqué pour moi, je vais voir ce que je peux faire, pour le coockies ça devrait aller, par contre pour les moteurs de recherche je ne vois vraiment pas. Y a pas un lien qui traine quelque part que j'ai un peu de lecture ?

    Merci

  17. #17
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    174
    Détails du profil
    Informations personnelles :
    Âge : 62
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Janvier 2006
    Messages : 174
    Par défaut
    Personne ne peut m'orienter pour savoir comment filtrer les robots dans le nombre de clic ?

    Merci

  18. #18
    Expert confirmé Avatar de Mr N.
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    5 418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 5 418
    Par défaut
    Tu peux filtrer sur l'adresse ip des robots en question. Ces ip sont connues et trouvables facilement sur google.
    Ex: http://www.robots.darkseoteam.com/

  19. #19
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    174
    Détails du profil
    Informations personnelles :
    Âge : 62
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Janvier 2006
    Messages : 174
    Par défaut
    oui mais je peux les filtrer seulement sur le clic ? je veux que mes pages soient indexées, je peux filtrer par le htaccess mais il n'y aura pas d'indexation.


    Merci

  20. #20
    Expert confirmé Avatar de Mr N.
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    5 418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 5 418
    Par défaut
    La solution est pour moi très simple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    <h1>Articles</h2>
    <a href="script.php?id=1">article 1</a>
    <a href="script.php?id=2">article 2</a>
    Puis dans script.php
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    <?php
    if (!user_is_bot()) {
       add_unique_visit_to_article($_REQUEST['id']);
    }
     
    show_article($_REQUEST['id']);
     
    ?>
    Le moteur de recherche pourra indexer sans problème. A toi d'adapter à ton url rewriting...

Discussions similaires

  1. [PHP 5.4] Validation formulaire Method POST sur la même page
    Par actarus4444 dans le forum Langage
    Réponses: 2
    Dernier message: 09/12/2014, 23h13
  2. Methode POST sur un annuaire
    Par Meher001 dans le forum Langage
    Réponses: 3
    Dernier message: 18/02/2013, 11h58
  3. Html2PDF et requète post sur un lien
    Par Stouille89 dans le forum jQuery
    Réponses: 1
    Dernier message: 09/09/2010, 11h05
  4. Réponses: 1
    Dernier message: 26/02/2008, 00h05
  5. Comment utiliser la methode POST sur une icone ?
    Par horkets dans le forum Balisage (X)HTML et validation W3C
    Réponses: 8
    Dernier message: 27/05/2007, 19h51

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo