Désactiver les sessions dans les URLS ?

  • Auteur de la discussion Auteur de la discussion pooxeur
  • Date de début Date de début
WRInaute discret
Bonjour,

Sur mon hébergement OVH, la variable PHP session.use_trans_sid est à On d'après le PHPINFO.

Du coup, les sessions PHP sont dans l'URL si les visiteurs n'acceptent pas les cookies. Je ne souhaite pas que les sessions soient dans l'URL mais uniquement via cookie.

Que dois-je configurer ?

J'ai essayé un .htaccess avec :
php_flag session.use_trans_sid off => marche pas chez OVH
php_value session.use_trans_sid 0 => marche pas chez OVH
ou
php_value session.use_trans_sid false => marche pas chez OVH

et dans le script PHP
ini_set('session.use_trans_sid', false);
=> marche pas non plus

Comment faire pour désactiver les sessions URL ?
 
WRInaute passionné
Une solution qui n'en est pas vraiment une mais qui fonctionne : transforme tes liens relatifs (mapage.php) en absolus (-http://www.monsite.com/mapage.php)
 
WRInaute discret
ca ne fonctionne pas chez OVH
j'ai essayé le
ini_set('session.use_only_cookies', 1);


marche pas non plus !!!
une autre solution ? please help !
 
WRInaute impliqué
j'ai deja essaye tout ca, ya rien a faire , meme avec trans_id a 0 et only_cookie a 1

le SID apparait toujours au premier chargement..

tu peux evnutellement forcer un refresh lors du premier demarrage de la session, sinon si c'est pour pas faire fuire les robots , tu demarres pas la session quand c'est un robot qui parcours le site.
 
WRInaute discret
comment on peut savoir si c un robot ???

faut enregistrer toute la liste ???

remarque y'a peut etre une solution en
ne démarrant la session avec session_start() que si un cookie particulier existe....

si pas de cookie => pas de session_start()
non ?
 
WRInaute impliqué
oui, mais les visiteurs humains qui ne sont encore jamais venus ?

enfin ca depend ce que tu veux faire exactement.. si tu as tes parametres a use_only_cookie l'id de session sera afficher qu'une fois, c pas trop grave

si tu as peur du hijacking (c comme ca qu'on dit ?) c tres simple d'y remedier...

si c'est pour pas afficher de SESSID pour les robots, oui je peux te filer une liste de user_agents, et t'expliquer comment faire pour que la liste se maintienne a jour toute seule ensuite..

moi, perso j'ai fait ca :

d'abord je verifie si il s'agit d'un robot, et ensuite :

if ($isRobot)
{
@log_robot();
}
else
{
session_set_cookie_params(0, '/', '.' . DOMAIN, false);
session_save_path(SESSION_PATH);
session_name('SID');
session_start();

if ($_SESSION['checkHost'] != md5(SECURITY_CODE . get_ip() . session_id()))
{
session_regenerate_id();
session_unset();
$_SESSION['checkHost'] = md5(SECURITY_CODE . get_ip() . session_id());
}
}

la derniere partie c'est pour eviter le hijacking, c'est invisible pour les utilisateurs, ca reinitialise pas la session de l'utilisateur si qqn essaye de se connecter avec son id de session, et ca refile une session vierge a celui qui a essayer de se connecter avec le session id d'un autre...
 
WRInaute discret
merci fbparis !

oui en fait c pour éviter à la fois
le session hijacking ds les urls
et les robots
j'ai 500 pages indexées dans google à ce jour, je ne veux pas les perdre apres la migration chez OVH ;)


je suis preneur de ton code pour les robots
 
WRInaute impliqué
bah pour les robots j'ai fait un truc special, en fait mon fichier robots.txt est interprete par php, a chaque fois qu'il est appele, j'enregistre le user agent dans ma liste de robots (si il y est pas deja) (je m'occuppe pas des ips...)

et autrement, la j'ai ajouté aussi un truc : si l'agent contient "spider" ou "crawl" ou "bot" je l'ajoute a la liste de robots.

j'ai demarré avec une liste assez complete qui se met a jour toute seule depuis... tu peux la recup sur mon site dans l'admin..
 
WRInaute impliqué
jtai explique le principe, ya rien de complique.. pour ma part j'ai code ca en vitesse comme un goret ca me fait chier de refiler ca :p
 
WRInaute discret
tu veux dire que robots.txt est un php qui

1/ lis le user agent,
2/ check s'il est deja dans le fichier des useragents
3/ si oui, fait rien
4/ sinon, ajoute le useragent

et en plus tu as un truc dans ton code index.php qui ajoute les useragent avec "bot", "crawl" et "spider"

du coup si c un robot, tu fais pas de session start !!

c bien cela ?

alors merci !
 
WRInaute impliqué
voila, exactement, rien de bien complique.. tu peux mettre les user agents dans une base de donnees, un fichier etc, a toi de voir...

hey, c pas mal ton site, zavez bosser dur !
 
WRInaute impliqué
si je peux me permettre, les balises meta no cache, cache content etc c'est pas la peine, si tu utilises les sessions php, des headers pour la gestion du cache sont deja envoyes, et si ces headers te conviennent pas tu peux les changer avec ini_set :)
 
Discussions similaires
Haut