Boutique en ligne, sessions et google.. que faire ? -> id

Consultez la formation au référencement naturel Google de WebRankInfo / Ranking Metrics

gerald11
Nouveau WRInaute
 
Messages: 13
Inscription: Mer Jan 11, 2006 17:58

Boutique en ligne, sessions et google.. que faire ? -> id

Message le Jeu Mar 09, 2006 10:15

Bonjour à tous.

je termine le dév d'une boutique en ligne.
Je n'avais jamais fais cela, et je découvre étape par étape, bien heureux d'avoir un peu maitrisé les sessions pour fabriquer mon petit panier..

Bon, j'en suis désormais à l'étape référencement.. ( rassurez vous, j'y avais tout de même bien réfléchi un peu avant.. URwl, structure des pages, multilangue par paramètres.. etc.. )..

Mais voilà.. Boom.. patatras.. Il semblerait que les sessions, comme les cookies ne soient pas trop appréciés par le grand chef..

Je cherche, je cherche.. mais je n'ai pas encore trouvé de solution satisfaisante.. y en a t'il une ?

Je viens d'avoir une idée.. et je voulais quelques avis avant de passer de en cuisine :

> Pourquoi ne pas activer la variable de session qu'une fois qu'un utilisateur a effectivement ajouté un article dans son panier.

> Sur le bouton ( ajouter au panier ) je place un paramètre (go_session) par exemple, et sur l'entête de mes pages je teste la valeur de ce paramètre pour savoir si je place le session_start() ou non.

> Ensuite, puisque la session est ouverte.. je stocke ce paramètre lui aussi dans la session..

> Coté incidence panier ( qui est un module indépendant.. ), il ne me reste qu'a créer un petit bout de code html pour indiquer qu'il est vide ( dans l'état actuel des choses, il indique cela en lisant la session et indique que le panier est vide si la variable indique zéro.. logique )

Voilà, en quelques mots..

Quelqu'un a t'il déjà expérimenté un truc dans le genre ?
Sinon qu'en pensez vous.. ?

Je me lance ?

:?:


blman
WRInaute accro
WRInaute accro
 
Messages: 2915
Inscription: Ven Sep 05, 2003 10:46

Message le Jeu Mar 09, 2006 10:40

http://www.webrankinfo.com/forums/viewtopic_43923.htm

En gros, tu a raison dans ce que tu dit

gerald11
Nouveau WRInaute
 
Messages: 13
Inscription: Mer Jan 11, 2006 17:58

Message le Jeu Mar 09, 2006 10:46

C'est déjà un premier point.
Merci pour le lien vers le topic.

Donc je vais me lancer.
Toutefois, je voudrais éviter le cookie et la bdd qui stocke les sessions...

A réfléchir.


blman
WRInaute accro
WRInaute accro
 
Messages: 2915
Inscription: Ven Sep 05, 2003 10:46

Message le Jeu Mar 09, 2006 11:20

Le cookie et l'enregistrement dans la bdd est tout de même pratique pour sauvegarder la panier quelques temps (par exemple, sur la boutique que je gère, je constate que beaucoup ajoute au panier sans commander, puis revienne quelques temps plus tard (genre 24H) pour finaliser la commande )
Dernière édition par blman le Jeu Mar 09, 2006 12:12, édité 1 fois.

netsys
WRInaute accro
WRInaute accro
 
Messages: 1110
Inscription: Sam Juil 17, 2004 18:47

Message le Jeu Mar 09, 2006 11:32

Comment ca se passe le stockage en BD, et comment retrouver le visiteur par rapport au champ de la BD ?

-> cookies ???

Anthoduff
WRInaute discret
WRInaute discret
 
Messages: 60
Inscription: Dim Juin 05, 2005 5:22

Message le Jeu Mar 09, 2006 12:13

Salut,

Je comprends pas trop où est le probleme avec la session...

Pour moi la démarche est la suivante :

- session_start() sur toutes les pages
- envoi d'un cookie pour sauver l'id de session (facultatif)
- Dès que l'internaute navigue sur une page du site, la fonction session_start() reprends le même id sans besoin de passage par l'url ou en post ou par le cookie. L'id de session est détruit si la fenêtre est fermée.
- Clic sur ajouter au panier => enregistrement d'une ligne dans le panier avec comme clef l'id de session + article.
- Après commande valider destruction de l'id de session dans le panier.


blman
WRInaute accro
WRInaute accro
 
Messages: 2915
Inscription: Ven Sep 05, 2003 10:46

Message le Jeu Mar 09, 2006 12:14

Oui netsys. Grâce à un cookie, tu peux faire la correspondance entre la dernière session du client et celle enregistré dans le cookie. A partir de ces 2 données, tu peux retrouver son panier et le faire repartir sur sa dernière session.


blman
WRInaute accro
WRInaute accro
 
Messages: 2915
Inscription: Ven Sep 05, 2003 10:46

Message le Jeu Mar 09, 2006 12:18

Anthoduff, la session qui démarre dès le début PEUT géner les bots d'indexation (je dis "peut" car apperemment, il y a une parade en configurant un paramètre dans le php.ini mais je ne m'en rappel plus).

Dans tous les cas, pour une session de panier, il est tout de même plus logique de la faire démarrer à la création du panier, c'est à dire au premier ajout.

Anthoduff
WRInaute discret
WRInaute discret
 
Messages: 60
Inscription: Dim Juin 05, 2005 5:22

Message le Jeu Mar 09, 2006 12:25

@blman

En quoi peut-elle géner le bot ? n'est elle pas transparente lors d'un session_start() sans aucun passage en url ?

Si tu ne la fais démarrer que sur une page panier, tu dois ensuite la faire voyager de pages en pages, session_start() evite ce désagrement.


blman
WRInaute accro
WRInaute accro
 
Messages: 2915
Inscription: Ven Sep 05, 2003 10:46

Message le Jeu Mar 09, 2006 12:37

Anthoduff a écrit:En quoi peut-elle géner le bot ? n'est elle pas transparente lors d'un session_start() sans aucun passage en url ?


Si ta session est transparente, c'est que ton php.ini est bien configuré donc pas de problème au niveau de l'indexation si tes sessions ne se balladent pas dans l'url. Je ne m'y connais pas trop sur ce point car je n'utilise pas les sessions de PHP

En tout cas, ce que je suis sûr, c'est que page.php?sid=fdgdhfgl est différente de page.php?sid=mloppzih aux yeux des bots d'indexation

Anthoduff a écrit:Si tu ne la fais démarrer que sur une page panier, tu dois ensuite la faire voyager de pages en pages, session_start() evite ce désagrement.


Les bots d'indexation n'ajoute pas au panier donc ils ne seront jamais confronté à ce cas de figure.

gerald11
Nouveau WRInaute
 
Messages: 13
Inscription: Mer Jan 11, 2006 17:58

Message le Jeu Mar 09, 2006 12:44

Bon.. je vois que cela s'active.
je pense avoir trouver une solution, mais peut être pas optimale...

En en tête de page j'ai placé le code suivant :

Code: Tout sélectionner
$test_cookie=$_COOKIE['commande_on'];
$sess_in = $_GET['sess_in'];


if ($sess_in == '1')
{session_start(); setcookie("commande_on","1"); }

if ($test_cookie == '1')
{session_start(); $sess_in = '1';}


Sur le bouton ajouter au panier, jai deux version en fonction de la valeur de $sess_in. ( url?tagada=$ref ) ou ( url?tagada=$ref&sess_in=1 )

dans le cas ou sess_in n'est pas encore déclaré->
J'ai ajouté une ligne à mon .htaccess.
L'avant dernière...
Code: Tout sélectionner
....
RewriteRule ^diam_([a-z]+)_([0-9]+)_([0-9]+)_([0-9]+)_([0-9]+).html$  site.php?lang=$1&item=$2&cat=$3&diam_select=$4&tri=$5   [L]
RewriteRule ^select_([a-z]+)_([0-9]+)_([0-9]+)_([0-9]+)_([0-9]+)_([0-9]+)_([0-9]+).html$  site.php?lang=$1&item=$2&cat=$3&article=$4&couleur=$5&diam_select=$6&tri=$7   [L]
RewriteRule ^stylecart_([a-z]+)_([0-9]+)_([0-9]+)_([0-9]+)_([0-9]+)_([0-9]+)_([0-9]+)_([0-9]+).html$  site.php?lang=$1&item=$2&cat=$3&article=$4&couleur=$5&diam_select=$6&tri=$7&complet=$8   [L]
RewriteRule ^panier_([a-z]+)_([0-9]+)_([0-9]+)_([0-9]+)_([0-9]+)_([0-9]+)_([0-9]+)_([0-9]+)_([0-9]+).html$  site.php?lang=$1&item=$2&cat=$3&ref=$4&article=$5&couleur=$6&diam_select=$7&tri=$8&ajout=$9   [L]
RewriteRule ^panier_([a-z]+)_([0-9]+)_([0-9]+)_([0-9]+)_([0-9]+)_([0-9]+)_([0-9]+)_([0-9]+)_([0-9]+)_([0-9]+).html$  site.php?lang=$1&item=$2&cat=$3&ref=$4&article=$5&couleur=$6&diam_select=$7&tri=$8&ajout=$9&sess_in=1


Ensuite il y a juste un test sur le panier. Pour savoir si je l'affiche ou non.
ça à l'air de fonctionner.

Bon après, c'est certain, il faut affiner.

netsys
WRInaute accro
WRInaute accro
 
Messages: 1110
Inscription: Sam Juil 17, 2004 18:47

Message le Jeu Mar 09, 2006 13:33

Les bots n'acceptent pas les cookies donc pour eux le serveur passe la variable de session dans l'url. Les moteurs de référenceront pas alors ces pages...

Merc Blman pour les infos sur le panier en BD. Ce qui veut dire que pour les personnes n'acceptant les cookies on ne peut utiliser les BD pour stocker la variable de session et son contenu ?

gerald11
Nouveau WRInaute
 
Messages: 13
Inscription: Mer Jan 11, 2006 17:58

Message le Jeu Mar 09, 2006 13:54

Oui..
Bon..

L'idée du cookie est de faire suivre la valeur de sess_in à un pendant tout le reste de la navigation.

> Soit je modifie l'ensemble des liens en ajoutant &sess_in=$sess_in

> soit je trouve une astuce via ma fonction rwlurl() - celle qui réecrit les url - qui rajoute la valeur $sess_in à 1. J'en suis juste quite à doubler toute les lignes du .htacess.

> soit je trouve une solution pour faire passer la variable $sess_in une fois qu'elle est défine sans passer par l'url.
Je vous avoue que c'était ma première idée.Mais je n'ai pas réussi à la concrétiser. Pourtant je suis sur que c tout simple : du style,
<form>
<input type='hidden' name='sess_in' value='$sess_in'>
</form>

Le pb, c'est que je n'ai pas trouvé la manière " d'auto-valider le formulaire"..

quelqu'un à une idée..

gerald11
Nouveau WRInaute
 
Messages: 13
Inscription: Mer Jan 11, 2006 17:58

Message le Jeu Mar 09, 2006 17:10

Bon..

je récapitule..

L'idée du formulaire qui s'auto valide..
C'était facile, mais j'aurai du y penser avant.. ça a un peu tendance à faire une boucle..

restait 2 options.
J'ai choisi de modifier ma fonction rwl()
elle était:
Code: Tout sélectionner
function urlrw($url) {
   
      $url_reg = str_replace (array(".","?","=","&"), "@", "$url");
      $pop = split("@","$url_reg");
      
      $url = $pop[0];   
      $i = 3;
      
      while ( $pop[$i] !="" )
      
      {
      $url .= "_".$pop[$i];
      $i++;
      $i++;
      }
   
   return $url.".html";

}


elle est devenue

Code: Tout sélectionner
function urlrw($url) {
   
      $url_reg = str_replace (array(".","?","=","&"), "@", "$url");
      $pop = split("@","$url_reg");
      //echo("urlreg=$url_reg");
      //$img_deb = $pop[0];      
      
      $url = $pop[0];   
      $i = 3;
      
      while ( $pop[$i] !="" )
      
      {
      $url .= "_".$pop[$i];
      $i++;
      $i++;
      }
   
   $sess_in = $_GET['sess_in'];   
   if ($sess_in == '1')
   
   { return $url."_sessin.html";}
   
   else
   
   { return $url.".html";}

}



Pour le reste, je (presque) n'ai touché à rien.

> test de la variable sess_in pour la première entrée au panier.
> doublement des lignes du .htaccess pour urlrw.


Code: Tout sélectionner
RewriteRule ^([a-z]+)_([a-z]+)_([0-9]+)_([0-9]+).html$  /site.php?lang=$2&item=$3&cat=$4  [L]
RewriteRule ^([a-z]+)_([a-z]+)_([0-9]+)_([0-9]+)_sessin.html$  /site.php?lang=$2&item=$3&cat=$4&sess_in=1  [L]


> Petit Jeu pour les crack.. Vous pouvez deviner quel est mon hébergeur ?

Bon voil@.
Comme cela ça fonctionne sans utiliser de cookies ni de session..
Sauf si GG décide de s'offrir un vase...

Dans tous les cas, merci de votre aide.
Encore une fois, j'aurai appris pas mal de choses.
Pour la prochaine fois, je penserai à la solution de @blman.
Effectivement, c peut être plus sérieux d'utiliser une BD pour stocker les sessions.

Enfin, si vous souhaitez regarder ce que cela donne en ligne..
( ce n'est pas pour faire de la pub.. ) mais peut être que je remercie tout le monde un peu vite.. il reste peut être encore une subtilité...
http://www.terresdautan.com
C'est encore en test, donc il reste quelques trucs à finaliser.

A bientôt pour de nouvelles aventures.
Gérald.

caro
WRInaute passionné
WRInaute passionné
 
Messages: 871
Inscription: Lun Juil 21, 2003 18:13

Message le Jeu Mar 09, 2006 19:36

quelques points paraissent bizarres dans cette discussion :

1) "on peut stocker l'id de session dans une base de données"
et alors ? ça résoud pas le problème de toute facon il faut transmettre l'id de session soit par url soit par cookie pour que l'internaute soit identifié.
enregistrer l'id dans la base ne pourra pas dire à quel internaute il appartient.

2) Anthoduff dit "pas besoin de passer l'id par url ou cookie"
si on écoute Anthoduff l'id resterait la même à chaque start, cela me paraissait tellement formidable que je viens d'essayer mais malheureusement si on refuse le cookie et qu'on transmet pas l'id pas url alors à chaque start le serveur envoie un nouvel id, donc ca ne marche pas.

3) j'aimerais qu'on me confirme un truc important :
peut on faire un panier sans envoyer l'id par cookie ou par url ?
je pense que non, mais bon je commence à douter avec les discussions de ces derniers jours sur les sessions.

merci
caro

Boutique en ligne, sessions et google.. que faire ? -> id

Formation recommandée sur ce thème :

Formation Référencement naturel Google : apprenez une méthode efficace pour optimiser à fond le référencement naturel dans Google de façon durable... Formation animée par Olivier Duffez et Fabien Facériès, experts en référencement naturel.

Tous les détails sur le site Ranking Metrics : programme, prix, dates et lieux, inscription en ligne.

Lectures recommandées sur ce thème :



Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 0 invités