Modifier une variable session lors d'un clic sur une url

Résolu
nikoland Messages postés 47 Date d'inscription samedi 17 décembre 2005 Statut Membre Dernière intervention 14 décembre 2006 - 15 nov. 2006 à 22:30
nikoland Messages postés 47 Date d'inscription samedi 17 décembre 2005 Statut Membre Dernière intervention 14 décembre 2006 - 19 nov. 2006 à 09:33
Salut à tous,

J'aimerais lorsque je clique sur une url qu'une de mes variables session soit modifiée afin de traiter ensuite quelle page afficher...

J'avais déjà réalisé cela en utilisant la méthode GET, je passais un url_encode($mavariable) que je traitais ensuite. Ici, il faudrait que $_SESSION['mavariable'] soit modifiée sur un évènement clic sur un lien.

J'espère avoir été assez clair.
Merci d'avance.

Nikö

6 réponses

xque19 Messages postés 47 Date d'inscription dimanche 20 février 2005 Statut Membre Dernière intervention 19 novembre 2006 1
19 nov. 2006 à 01:24
avec le code que je t'ai mis plus haut, tu as tout ce qu'il te faut pour y arriver, le concept est simple: tu fais appel à une fonction javascript dans ta page qui va elle de son côté faire appel à un script php pour l'executer côté serveur et cette même fonction php te retournera (si çà s'est executé correctement) comme résultat ce qui est affiché dans ce script php.
3
xque19 Messages postés 47 Date d'inscription dimanche 20 février 2005 Statut Membre Dernière intervention 19 novembre 2006 1
16 nov. 2006 à 16:36
Salut!
La solution, d'après moi, serait d'utiliser l'object XMLHttpRequest de javascript pour envoyer une requete asynchrone.
<li>Dans le fichier où se trouve le lien:</li>
<script type="text/javascript">
function lancerRequete(requete,methode)
{
    if (window.XMLHttpRequest)
    {
        xhr_object = new XMLHttpRequest();
        xhr_object.open(methode, requete, true);
        xhr_object.send(null);
        xhr_object.onreadystatechange = function()
        {
            if(xhr_object.readyState == 4)
            {
                alert(xhr_object.responseText);
            }
        }
    }
    else if(window.ActiveXObject)
    {
        xhr_object = new ActiveXObject("Microsoft.XMLHTTP");
        xhr_object.open(methode, requete, true);
        xhr_object.send(null);
        if(xhr_object.readyState == 4)
        {
            alert(xhr_object.responseText);
        }
    }
    else
    {
        alert('Votre navigateur ne supporte pas les objets XMLHTTPRequest...');
        return(false);
    }
}
</script>

[# ]

<li>créer un fichier majSession.php (par example) contenant:</li>
<?php

$_SESSION['val']=$_GET['newVal'];
echo "Mise à jour effectuée";

?>
1
nikoland Messages postés 47 Date d'inscription samedi 17 décembre 2005 Statut Membre Dernière intervention 14 décembre 2006
18 nov. 2006 à 18:08
J'ai presque réussi à faire ce que je voulais sans avoir à utiliser AJAX comme tu me le suggères. Cependant, il reste un petit soucis.

En clair, je voudrais faire la même chose qu'une transmission de variable par url : http://url?page=page1

Pour cela, j'ai fait cela dans mes liens :
[index.php ">accueil]
[index.php ">logithèque]

Ca a l'air de fonctionner, c'est à dire que la variable $_SESSION['page'] stocke bien accueil ou logithèque, cependant, en fait, il stocke que logithèque, le clic sur accueil ne change pas la variable. Je ne sais pas pourquoi.

Quelqu'un pourrait-il me sortir de ce pas ?

Nikö
0
xque19 Messages postés 47 Date d'inscription dimanche 20 février 2005 Statut Membre Dernière intervention 19 novembre 2006 1
18 nov. 2006 à 18:55
Salut,

Ton code ne convient absolument pas au problème que tu souhaite résoudre, parce que là quand tu clique sur un lien il ne se passera absolument rien, si tu regarde bien la source de ta page sous IE ou Firefox tu aura:
[index.php accueil]
[index.php logithèque]

c'est parce que quand tu lance ta page PHP, le compilateur va interpréter les 2 instruction entre <?php ... ?> et comme c'est 2 affectation dans la même variable, du coup tu te retrouve toujours avec la valeur de la dernière affectation dans $_SESSION['page'] c'est à dire 'logiteque'.
D'après moi ta méthode est erronée et je pense que la seule façon de faire dans ce cas est d'utiliser un appel asynchone à un script qui mettra à jour ta variable de session, enfin çà c'est mon avis, après tout il y a peut-être d'autres solutions auquels j'ai pas pensé.

++
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
nikoland Messages postés 47 Date d'inscription samedi 17 décembre 2005 Statut Membre Dernière intervention 14 décembre 2006
18 nov. 2006 à 18:59
Argh, évidemment...

Il va falloir que j'arrive à trouver une solution parce que les appels asynchrones, j'y connais vraiment rien...

Merci

Nikö
0
nikoland Messages postés 47 Date d'inscription samedi 17 décembre 2005 Statut Membre Dernière intervention 14 décembre 2006
19 nov. 2006 à 09:33
Il faudra bien que je m'y mette de toute façon...

Merci

Nikö
0
Rejoignez-nous