Problème de panier dans une boutique

Petit nouveau ! | 9 Messages

29 août 2006, 17:03

Bonjour à tous,

J'ai un problème sur lequel je planche depuis si longtemps que je vais essayer de faire un résumé de tout ce que je sais:

j'ai remarqué que le panier de ma boutique en ligne fait n'importe quoi...au bout d'un certain temps (jamais le même) il se vide tout seul.

J'ai pourtant réglé mon fichier
includes\functions\sessions.php
en mettant ce code:
<?php

  if (STORE_SESSIONS == 'mysql') {
    if (defined('DIR_WS_ADMIN')) {
      if (!$SESS_LIFE = (SESSION_TIMEOUT_ADMIN + 900)) {
        $SESS_LIFE = (SESSION_TIMEOUT_ADMIN + 900);
      }
    } else {
      if (!$SESS_LIFE = get_cfg_var('session.gc_maxlifetime')) {
        $SESS_LIFE = 900;
      }
    }
j'adore l'informatique mais ce n'est pas réciproque :s

Petit nouveau ! | 9 Messages

29 août 2006, 17:03

Mais à priori ce code ne gère pas la durée de session du panier.

j'ai modifié dans application_top (fichier appelé par toutes les pages de ma boutique) la durée du cookie (qui était sur 0, et normalement le 0 signifie que le cookie ne disparait qu'une fois le navigateur fermé...) en la mettant elle aussi sur la valeur que je voulais et ça ne marche pas non plus...

Mes sessions sont stockées dans un répertoire et voici mes réglages de sessions coté admin de mon site:
Répertoire des sessions: /home4/l/monsite/sessions/
Utilisation de force des cookies: False
Vérifiez l'identification de session: False
Vérifiez l'utilisateur: False
Vérifiez l'adresse IP: False
Empêchez les sessions d'araignée: True
Recréez une session: False
je viens d'essayer d'ajouter cette fonction:
if (function_exists('session_set_cookie_params')) { 
     session_set_cookie_params(0,'/catalog/'); 
à mon application_top mais ça n'a rien donné (peut-être mal ajouté c'est possible).

Tests fait avec IE et Opera:

- Je me logue. J'ajoute un produit dans mon panier. Je me délogue. Je me logue avec un autre compte, je me délogue. Je me relogue avec mon premier compte, et je retrouve mon panier. Je me logue avec Opera, mon panier est vide (sur IE, 1 article)

- 2 pcs différents logué avec le même compte. Si un panier est plein l'autre ne l'est pas forcément (logique).

Donc j'ai tendance à penser que la session panier est sous forme de cookie.

- Lorsque je bloque les cookies de IE, je peux quand même mettre dans mon panier des articles et payer (je viens de faire le test). Par contre, je ne peux plus me loguer en admin. --> J'en déduis que le panier n'est pas géré par un cookie, alors que les sessions admin le sont.

- J'ajoute un article dans mon panier. Je lance un chronomètre, le panier se vide au bout d'un temps indéterminé, aléatoire.

Donc je pense définitivement que la session panier n'est pas gérée par un cookie. Dans ce cas, elle est gérée coté serveur et lancée (et interrompue) par une fonction dans un script php. (vrai ou faux?)

Par contre le blocage de cookie m'a démontré que les sessions d'admin sont bien gérées sous forme de cookie (en refusant les cookies je ne pouvais plus me logguer).

Je vais tenter de trouver cette fonction même si je ne sais pas trop où chercher...si quelqu'un a une idée (une solution ce serait super top) je suis preneur parceque là je tourne en rond.

je ne suis pas un pro du php c'est la raison pour laquelle je fais appel à votre aide.

Merci d'avance pour votre aide

Cordialement,

Samoth

PS: désolé pour le post coupé en 2 mais en 1 seul morceau le forum disait que c'était un spam.
j'adore l'informatique mais ce n'est pas réciproque :s

Mammouth du PHP | 19672 Messages

29 août 2006, 17:08

Est-ce qu'il ne manquerait pas un session_start() quelque part qui couperait la session et te ferait perdre le contenu de la session ?
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Petit nouveau ! | 9 Messages

29 août 2006, 17:45

ben normalement quand session_autostart est sur ON pas besoin de session_start() je me trompe?

Sinon ça signifie qu'il faut en mettre à chaque page vu que je n'en ai jamais et les sessions utilisateurs, elles, fonctionnent très bien. Il n'y a que pour les sessions panier que ça bug.
j'adore l'informatique mais ce n'est pas réciproque :s

Mammouth du PHP | 19672 Messages

29 août 2006, 17:49

Te fier à la configuration serveur pour démarrer automatiquement une session n'est pas prudent : ou alors il faudrait passer par ini_get() pour vérifier. Mais quoi qu'il en soit, tu dois contrôler ton code de bout en bout et contrôler toi-même les sessions: dis-toi que les hébergeurs ont chacun une configuration qui leur est propre et sur laqeuelle tu n'auras absolument aucun contrôle (à moins d'avoir un dédié)

Donc, démarre toi-même tes session, ce sera moins aléatoire comme résultat.
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Petit nouveau ! | 9 Messages

29 août 2006, 18:50

En gros tu me conseilles de mettre un session_start() à chaque début de page en php?

J'édite toutes mes pages php et j'ajoute

Code : Tout sélectionner

session_start()
au début c'est ça?
j'adore l'informatique mais ce n'est pas réciproque :s

Eléphant du PHP | 60 Messages

29 août 2006, 19:47

session_start() doit être appelé avant d'afficher quoi que ce soit dans le navigateur.

Eléphant du PHP | 216 Messages

29 août 2006, 19:48

Bonjour,
oui, c'est ce qu'il ta dit!
<?php
session_start(); /* jamais rien au desus de session_start() */
?>
<html>
<head>
etc....
Voila :D
Le PHP c'est bien, surtout quand ça marche ;) mon site
Hébergement gratuit et sans pub => Image

Petit nouveau ! | 9 Messages

30 août 2006, 10:24

ok mais ce qui m'étonne, c'est que beaucoup d'autres utilisateurs possèdent ce genre de boutique (OScommerce) et n'ont jamais eu à faire cette modification pour que leur session fonctionne bien. C'est assez étrange.
j'adore l'informatique mais ce n'est pas réciproque :s