[résolu] bouton précédent des navigateurs

WRInaute accro
Le bouton précédent des navigateurs me pause quelques soucis pour le développement d'un site e-commerce.
Je m'explique : je navigue sur le site d'e-commerce, j'ajoute au panier et donc je crée une session qui va ensuite se ballader sur toutes les pages pour conserver le panier. Seulement si la personne fait "page précedente" à son premier ajout, la session est perdue et le panier aussi.

J'ai donc pensé à faire une redirection comme quand on ajoute un message sur le forum WRI. Une des nombreuses manières de perturber le bon fonctionnement du bouton ‘précédent’ est d’insérer une page d’attente provoquant après un certain délai une redirection vers la page de résultat.

1 - redirection header("Location=panier_recap...") en php. Ne marche pas quand on fait précédent
2 - <META HTTP-EQUIV=Refresh CONTENT="0; URL=ma_page.php">. Fonctionne bien avec une durée de 1 seconde mais pas avec 0 seconde
3 - redirection en javascript. J'ai pas utilisé de javascript jusque là parce que tout le monde ne l'active donc je vais pas commencé maintenant.

Je sais que ça existe, est-ce que quelqu'un à une solution ?

PS : je sais que c'est pas super ergonomique mais en gros c'est ça ou le cloaking, je préfère ça
 
WRInaute occasionnel
> Je sais que ça existe, est-ce que quelqu'un à une solution ?

A mon avis la seule solution convenable, c'est de résoudre ton problème à la source. Sais-tu pourquoi le panier se vide quand tu appuies sur précédent après le premier ajout ? Si oui, alors cela doit être possible de corriger, si non, alors inquiète toi.. ;-)

Pourquoi ajouter des désagréments pour combler un dysfonctionnement ?

Fred
 
WRInaute accro
Ben il se vide car la session n'est pas crée à ce moment là... La session est crée au premier ajout au panier, donc si le type fait précédent lors de son premier ajout au panier, il perd la session.

Je peux la garder tout le temps si je crée la session à la connexion au site et donc niveau référencement, je n'est plus qu'à faire du cloaking et ça, ça m'emmer**.

Je pense déjà avoir réfléchie à pas mal de solution, c'est la meilleure que j'ai trouvée.

Je peux pas filer l'adresse pour le moment mais je la donne en MP si quelqu'un peut m'aider.
 
WRInaute impliqué
Tu peut, lors de la validation du formulaire d'ajout, charger une page intermédiaire qui va créer la session et ajouter le produit, puis rediriger aussitot vers ta page panier. Cela fonctionne bien en ASP avec la fonction Response.Redirect, il doit bien exister une fonction équivalente en PHP.
 
WRInaute accro
Olivieri, c'est exactement ce que je fais. Seulement je ne trouve pas d'équivalent qui me satisfasse pour le moment.
La mieux pour le moment c'est <META HTTP-EQUIV=Refresh CONTENT="1; URL=ma_page.php"> mais en une seconde, on a le temps de cliquer 2 fois sur le bouton précédent et je me retrouve avec le même problème.
 
WRInaute impliqué
Dans ce cas, il ne faut pas que ta page sur laquelle on clique pour ajouter le produit puisse être mise en cache.
La page sera donc rechargée au niveau du serveur et, en théorie, tu devrais retrouver la session ?
 
WRInaute accro
Comprend pas : c'est sur le cache du client que la page est stockée. De toute manière en cliquant sur le bouton précédent du navigateur, le paramètre de session ne passe pas dans l'url.

Pour le moment, j'ai mis un meta refresh à 1 seconde avec un petit window.location en javascript. Ca à l'air de bien fonctionné. Je te file l'adresse en MP pour que tu regarde. Merci de ton aide.
 
WRInaute impliqué
En fait, tu passes ta session en parametre de ligne de commande. Il faudrait plutot stocker dans un l'objet session, mais la je ne connais pas assez le php, c'est l'équivalent de l'objet Session en ASP.
 
WRInaute occasionnel
Je partage l'avis d'olivieri : Pourquoi ne pas utiliser un système de gestion de panier par cookie de session ? Ils sont relativement bien acceptés par les navigateurs (parce qu'ils sont détruits à la fin de la session, il ne sont donc pas permanents) et répondent ici à ta problématique. Une grande majorité des paniers en ligne sont gérés avec ce système.

Fred
 
WRInaute accro
Merci à tous.
-> iconso et Oliveri : je vais regarder ça de plus près même si les cookies (comme le javascript), je suis pas trop fan.
-> The jedi : je suis d'accord avec toi, c'était ma première idée. Mais si je commence ma session dès que le visiteur arrive, il va falloir que je fasse un code pour les robots. Ca s'apparente un peu à du cloaking et je compte tellement sur le référencement pour que le site marche que je ne veux prendre aucun risque avec ça.
 
WRInaute impliqué
Et les robots ne peuvent rien ajouter dans le panier ? Il faut être "client" (ou enregistré) pour ajouter des produits au panier ?
 
WRInaute accro
On a pas du se comprendre là ?
Je commence ma session dès que le visiteur a ajouter au panier.
Je pensais que tu me disait qu'il fallait que je commence ma session dès que le visiteur arrive sur le site.

A tu regardé à l'adresse que j'ai donné un peu plus haut ?
 
WRInaute impliqué
blman a dit:
On a pas du se comprendre là ?
Je commence ma session dès que le visiteur a ajouter au panier.
Je pensais que tu me disait qu'il fallait que je commence ma session dès que le visiteur arrive sur le site.

A tu regardé à l'adresse que j'ai donné un peu plus haut ?

Si c'est une session "d'achat", c'est logique qu'elle commence lors de l'ajout du 1er article dans le panier.

Apparament, il faut utiliser la session avec une syntaxe telle que: $_SESSION['variable'] = 'valeur'; et la tu est indépendant de la ligne de commande.

Avec la fonction session_start() lancée avant.

Décidément, il faut vraiment que je me mette au PHP :wink:
 
WRInaute impliqué
Wouaaaaahhh ! !
C'est Michenau de Nantes ! !
'tain je leur ai acheté un paquet de matos à une époque !
y'a toujours le bar sous le comptoir? :D
 
WRInaute accro
oui, ya toujours le bar !
Un petit coup après le boulot, ça fait jamais de mal... et les clients sont contents.

Bon merci à tous. Au niveau des sessions, j'utilise un système que j'ai développé. Je n'utilise pas les PHPSID de php. Je vais garder mon système de meta refresh et de javascript. On a fait pas mal de test et ça fonctionne très bien à tous les coups. Le seul dysfonctionnement apparait lorsque le visiteur n'a pas javascript d'activé et qu'il clique comme un taré sur le bouton précédent, au pire son panier est perdu mais ça va concerné très peu de monde. Je vais en plus mettre un petit texte pour expliquer.
 
Discussions similaires
Haut