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 :

2 actions (variable de session et lien hypertexte) lors d'un clic


Sujet :

Langage PHP

  1. #1
    Membre habitué
    Homme Profil pro
    sans
    Inscrit en
    Mai 2007
    Messages
    482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : sans

    Informations forums :
    Inscription : Mai 2007
    Messages : 482
    Points : 193
    Points
    193
    Par défaut 2 actions (variable de session et lien hypertexte) lors d'un clic
    Bonsoir,

    Je cherche à faire de sorte que, si un internaute clique surMonImage.jpg, la variable de session 'nom' soit affectée de la valeur 'roger' et qu'il arrive à la page accueil.php
    Je pense à quelque chose du type :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <a href="accueil.php"><img src="MonImage.jpg"  onClick="window.document.location=accueil.php?id=<?php $_SESSION['nom'] = 'roger'?>"></a>
    Mais ... ça ne me paraît pas très clair.
    Qu'en pensez-vous ?

  2. #2
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Points : 91 220
    Points
    91 220
    Billets dans le blog
    20
    Par défaut
    Donc en gros, tu serais du genre à vouloir tourner à la fois à gauche et à droite, c'est ça ?
    Les solutions de contournements pourraient être
    * au clic sur l'image, tu fais une requête AJAX pour modifier ta variable de session puis tu suis le lien ;
    * au clic sur l'image, tu appelles une page intermédiaire qui modifie la variable de session puis redirige vers l'index ;
    * sur la page d'index, tu précises que si tu reçois tels paramètres GET, c'est qu'il faut modifier la variable de session.

    Attention toutefois pour la première solution de bien respecter la chronologie.
    Pas de question technique par MP !
    Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
    Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
    Mon livre sur jQuery
    Module Firefox / Chrome d'intégration de JSFiddle et CodePen sur le forum

  3. #3
    Membre habitué
    Homme Profil pro
    sans
    Inscrit en
    Mai 2007
    Messages
    482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : sans

    Informations forums :
    Inscription : Mai 2007
    Messages : 482
    Points : 193
    Points
    193
    Par défaut
    Bonjour Bovino (et aux autres aussi, ne soyons pas sectaire ...)

    Donc en gros, tu serais du genre à vouloir tourner à la fois à gauche et à droite, c'est ça ?
    Je ne suis pas tout-à-fait sûr de te suivre. En fait, l'internaute qui clique sur l'image MonImage.jpg doit arriver sur la page accueil.php, tout comme celui qui cliquerait sur l'image MonImage2.jpg mais je différencie l'affichage selon la valeur prise par la variable de session $_SESSION['nom']

    Les solutions de contournements pourraient être
    * au clic sur l'image, tu fais une requête AJAX pour modifier ta variable de session puis tu suis le lien ;
    * au clic sur l'image, tu appelles une page intermédiaire qui modifie la variable de session puis redirige vers l'index ;
    * sur la page d'index, tu précises que si tu reçois tels paramètres GET, c'est qu'il faut modifier la variable de session.
    La seconde proposition, quoique valable, fait un peu "bidouille" donc ne me plait pas trop; j'opterai donc pour la première proposition mais je viens de regarder rapidement Ajax et là ....... ça me semble être super compliqué pour moi.

  4. #4
    Membre habitué
    Homme Profil pro
    sans
    Inscrit en
    Mai 2007
    Messages
    482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : sans

    Informations forums :
    Inscription : Mai 2007
    Messages : 482
    Points : 193
    Points
    193
    Par défaut
    Oula, oula, c'est pas gagné du tout !
    Alors un gros copier-coller m'amène là :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Première étape: créer une instance
    if (window.XMLHttpRequest)    //  Objet standard
    { 
        xhr = new XMLHttpRequest();     //  Firefox, Safari, ...
    } 
    else  if (window.ActiveXObject)      //  Internet Explorer
    {
        xhr = new ActiveXObject("Microsoft.XMLHTTP");
    }
    Si je comprends bien, on cherche quel est le navigateur utilisé


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Seconde étape: attendre la réponse
    xhr.onreadystatechange = function()
    {
     // instructions de traitement de la réponse
    };
     
    if (xhr.readyState == 4) 
    { 
    // Reçu, OK  
    }
    else
    { 
    // Attendre...
    }
    Je pense qu'on agit en fonction de la réponse de l'étape 1

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Troisième étape: faire la requête elle-même
    Je ne suis plus car je croyais que l'action était dans l'étape 2 donc ...... je suis perdu. Un saint-Bernard serait-il dans les environs ?

  5. #5
    Invité
    Invité(e)
    Par défaut
    Bonjour,
    J'aurais opté pour la 3ème proposition...

    sinon, interesse-toi à AJAX via jQuery : plus simple à utiliser.

    Mais je n'ai pas saisi le but de la manoeuvre...

  6. #6
    Membre habitué
    Homme Profil pro
    sans
    Inscrit en
    Mai 2007
    Messages
    482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : sans

    Informations forums :
    Inscription : Mai 2007
    Messages : 482
    Points : 193
    Points
    193
    Par défaut
    Bonsoir,

    C'est vrai que je suis loin d'être un pro de MySQL et PHP donc il est possible que je cherche à monter une usine à gaz alors que la solution est simple.
    En fait, la variable de session $_SESSION['nom'] vaut par défaut "Robert" et je souhaite qu'elle change de valeur pour valoir "Roger" lorsqu'un internaute clique sur l'image MonImage.jpg puis qu'il soit redirigé vers la page accueil.php
    Je veux bien utiliser n'importe quoi, ce n'est pas le problème.

  7. #7
    Expert éminent sénior

    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2010
    Messages
    5 382
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2010
    Messages : 5 382
    Points : 10 410
    Points
    10 410
    Par défaut
    Si tu dois faire une redirection pas besoin de faire une requête ajax. Onclick sur l'image tu redirige vers un script php qui modifie la variable de session et qui fait ensuite la redirection avec un header.
    A moins que j'ai manqué quelque chose cela devrait suffire.

    (correspond à la deuxième solution proposée par Bovino, mais la troisième pourrait aussi fonctionner)

  8. #8
    Membre habitué
    Homme Profil pro
    sans
    Inscrit en
    Mai 2007
    Messages
    482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : sans

    Informations forums :
    Inscription : Mai 2007
    Messages : 482
    Points : 193
    Points
    193
    Par défaut
    Bonsoir,

    Merci ABCIWEB pour ton intervention.
    J'ai effectivement fait ça en attendant mais je trouve dommage de rajouter un fichier supplémentaire donc j'aurais souhaité intégrer cela dans le script de départ.

  9. #9
    Invité
    Invité(e)
    Par défaut
    Le plus simple (3ème proposition de Bovino) :
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    <a href="accueil.php?setnom=roger"><img src="MonImage.jpg"></a>
    Et dans accueil.php :
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    <?php if( !empty($_GET['setnom']) ) { $SESSION['nom'] = $_GET['setnom']; } ?>

  10. #10
    Expert éminent sénior

    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2010
    Messages
    5 382
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2010
    Messages : 5 382
    Points : 10 410
    Points
    10 410
    Par défaut
    Mais cela peut tout à fait être inclus dans le script de la page elle-même. Au début de cette page tu pourrais faire :
    (en admenttant que lien_image soit une variable get envoyée par le onclick sur l'image)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    if(isset($_GET['lien_image']))
    {
    $_SESSION['nom'] = 'roger';
    header('Location: accueil.php');
    exit;
    }

    EDIT: j'avais pas vu le message de jreaux62
    Les deux solutions sont valables. Perso je préfère traiter (quand c'est possible) les conditions dans la page où elles se trouvent, cela rend les autres pages plus indépendantes et compréhensibles. Mais bon au final le résultat est le même.

  11. #11
    Invité
    Invité(e)
    Par défaut
    @ABCIWEB
    C'est ce que j'allais proposer en 4éme solution, histoire de ne pas afficher (trop longtemps) la variables dans l'URL.

  12. #12
    Expert éminent sénior

    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2010
    Messages
    5 382
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2010
    Messages : 5 382
    Points : 10 410
    Points
    10 410
    Par défaut
    On se croise... (j'ai fait un edit sur mon précédent message).

    Cela dit comme tu le fais remarquer, effectivement niveau sécurité, si la définition de cette variable de session dépend directement d'une donnée externe, on ne doit pas l'utiliser comme une valeur sûre.

  13. #13
    Membre habitué
    Homme Profil pro
    sans
    Inscrit en
    Mai 2007
    Messages
    482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : sans

    Informations forums :
    Inscription : Mai 2007
    Messages : 482
    Points : 193
    Points
    193
    Par défaut
    C'est parfait, un grand merci à tous !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 5
    Dernier message: 06/09/2012, 15h50
  2. Perte de variables de session avec lien href
    Par didjac dans le forum Langage
    Réponses: 2
    Dernier message: 21/02/2009, 16h12
  3. Pb lien hypertexte lors d'une copie
    Par simonlagaffe dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 16/09/2008, 19h28
  4. Réponses: 1
    Dernier message: 06/04/2007, 19h17
  5. Réponses: 10
    Dernier message: 28/02/2006, 21h21

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