8791 sujets

Développement web côté serveur, CMS

Bonjour à tous,
Depuis quelques jours je rencontre un problème très gênant. Je développe un application web compatible PC, tablette et smartphone. Afin de pouvoir l'utiliser les internautes doivent être connectés à leur compte créé préalablement.
Pour commencer je souhaitais utiliser les variables de sessions afin de garder quelques informations sur l'utilisateur comme son ID par exemple. Le problème est que sur smartphone relié à l'application via la 3G la variable de session n'est pas retrouvée et par conséquent l'utilisateur est déconnecté.
Ma deuxième solution serait de garder les informations dans un cookie crypté avec une clé propre à l'utilisateur mais ce n'est pas vraiment SECURE d'après ce que j'ai pu constater. Smiley sweatdrop
Avez vous une solution à me préconiser? Une astuce pour les sessions sur smartphone en 3G ?
Salut, je ne connaissais pas ce soucis.

Le problème serait qu'en 3G l'IP du visiteur peut changer d'une page à l'autre et du coup perte des variables de session

Apparemment il est possible de contourner le problème via session_set_save_handler.

Tiens nous au jus ^^
Modifié par G3ronim0 (13 Apr 2012 - 11:10)
Merci pour le lien je vais regarder ça Smiley biggrin
As-tu un avis sur la question de sécurité des cookies ? Les variables de sessions étant stockées sur le serveur sont du fait moins sujet au piratage non ?
Personnellement, je n'utilise que les session dans mes applis...surement que d'autre pourrons répondre mieux que moi sur les problèmes de sécurité.
Les cookies étants accessibles localement il est plus que recommandé d'éviter d'y stocker des données sensibles.
Généralement on utilise les cookies pour stoker des données de préférences utilisateurs par exemple.

Pour ton problème cela vient du fait qu'en 3G la connexion passe par une sorte de proxy, ce qui a pour effet de faire changer l'ip du l'utilisateur aléatoirement d'une page à l'autre.

La meilleur solution pour palier à ce problème est de stocker les sessions en BDD, via la methode session_set_save_handler().
C'est d'ailleurs la solution utilisable dans le framework Symfony via la classe sfPDOSessionStorage.
Suivant vos conseils et parès quelques recherche je suis tombé sur cet article : http://materre.jeaf.fr/post/2010/08/17/PHP-:-perte-des-variables-de-session-en-3G-ou-avec-un-proxy.
Cependant ce morceau de code créé des variables de sessions vide en se connectant via Google Chrome et IE et par conséquent n'arrive pas à se connecté à l'application alors que cela ne fonctionne alors que sur Firefox cela marche très bien et a priori sur smartphone aussi... Je vais essayer des l'enregistrement en BDD Smiley cligne
Cela fonctionne pour les mobiles! Merci du coup de main. Smiley biggrin
Je pense utiliser la session en BDD seulement pour les smartphones car sinon le nombre de requête risque d'être important.