Précédent   Forum des professionnels en informatique > PHP > Langage > Sessions
Sessions Forum d'entraide sur les sessions avec PHP. Avant de poster -> FAQ sessions, Cours sessions et Sources sécurité
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 19/07/2011, 09h44   #1
Invité de passage
 
Inscription : septembre 2007
Messages : 4
Détails du profil
Informations forums :
Inscription : septembre 2007
Messages : 4
Points : 0
Points : 0
Par défaut Navigation avec session suivi d'un comportement sans session

Bonjour à tous,

voici mon problème :

lorsqu'un visiteur navigue sur une page du site et qu'il n'est pas connecté (reconnu avec un cookie et des variables de session) il voit le contenu suivant : "C1C3".
Le cache de "C1C3" est créé, s'il n'existe pas et uniquement si le visiteur est non connecté.

Lorsque le visiteur est connecté, il voit "C1CiC3" est aucun cache n'est sensé être créé, ni appelé pour cette page.

Mais voilà, lorsqu'on navigue, en mode connecté, le cache de la page contenant "C1C3" se crée quand même, alors que le visiteur connecté voit bien "C1CiC3".

Par ailleurs, si on supprime manuellement depuis le FTP le cache de C1C3 qui n'était pas sensé être créé et qu'on repasse sur la page en mode connecté, le cache n'est pas recréé comme au premier passage. En réalité le cache n'existe plus mais un navigateur pourrait croire le contraire car clearstatcache() n'a pas été appelée.
A tout hasard j'ai refait l'expérience avec une balise meta noindex,nofollow mais le même problème se reproduit.

Des idées ?

Merci d'avance
guikkom est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/07/2011, 10h38   #2
Modérateur
 
Avatar de Benjamin Delespierre
 
Benjamin Delespierre
Développeur Web
Inscription : février 2010
Messages : 2 984
Détails du profil
Informations personnelles :
Nom : Benjamin Delespierre
Âge : 24
Localisation : France

Informations professionnelles :
Activité : Développeur Web
Secteur : High Tech - Opérateur de télécommunications

Informations forums :
Inscription : février 2010
Messages : 2 984
Points : 5 011
Points : 5 011
Hello

C'est quoi au juste ces histoires de caches ?
__________________
A la recherche d'un framework MVC facile a prendre en main ? Essayez Axiom
Nouveau: la référence d'Axiom est disponible sur GitHub (je la peaufine en ce moment même).

Un problème correctement identifié est à moitié résolu, évitez de poster l'intégralité de votre code avec pour seule explication "ça ne marche pas...".
Pour identifier correctement vos problèmes PHP, utilisez la gestion des erreurs et xdebug.

Les boutons et existent, servez-vous en
Benjamin Delespierre est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/07/2011, 12h59   #3
Invité de passage
 
Inscription : septembre 2007
Messages : 4
Détails du profil
Informations forums :
Inscription : septembre 2007
Messages : 4
Points : 0
Points : 0
Ici le cache correspond à une partie de la page html qui est enregistrée dans un fichier pour être resservie plus tard afin d'éviter de refaire les requêtes sql et traitement php à chaque passage d'un nouveau visiteur.
Dans le cas où le visiteur n'est pas connecté, on lui sert la page en cache.
S'il est connecté, la page qu'il verra est personnalisée et n'est donc pas mise en cache.
A noter que je n'ai pas le problème quand je teste en local mais uniquement en ligne sur serveur mutualisé.
guikkom est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/07/2011, 13h09   #4
Modérateur
 
Avatar de Benjamin Delespierre
 
Benjamin Delespierre
Développeur Web
Inscription : février 2010
Messages : 2 984
Détails du profil
Informations personnelles :
Nom : Benjamin Delespierre
Âge : 24
Localisation : France

Informations professionnelles :
Activité : Développeur Web
Secteur : High Tech - Opérateur de télécommunications

Informations forums :
Inscription : février 2010
Messages : 2 984
Points : 5 011
Points : 5 011
Comment fais-tu pour distinguer le mode connecté du mode déconnecté ?
Est-ce un système de cache maison ?
Comment fonctionne la mise en cache ?
Utilises-tu un CMS ?

Avec le peu d'informations que tu nous donne on va avoir du mal à déterminer la cause de ton problème...
__________________
A la recherche d'un framework MVC facile a prendre en main ? Essayez Axiom
Nouveau: la référence d'Axiom est disponible sur GitHub (je la peaufine en ce moment même).

Un problème correctement identifié est à moitié résolu, évitez de poster l'intégralité de votre code avec pour seule explication "ça ne marche pas...".
Pour identifier correctement vos problèmes PHP, utilisez la gestion des erreurs et xdebug.

Les boutons et existent, servez-vous en
Benjamin Delespierre est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/07/2011, 13h34   #5
Invité de passage
 
Inscription : septembre 2007
Messages : 4
Détails du profil
Informations forums :
Inscription : septembre 2007
Messages : 4
Points : 0
Points : 0
Le visiteur connecté est reconnu s'il possède la variable SESSION['mem_id'].
Je n'utilise pas de CMS.
Voici la fonction qui crée le cache :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
 
function cre_cache($fCache,$a_cacher)
{
	$fd = fopen($fCache, 'wb');
	if(flock($fd, LOCK_EX|LOCK_NB)) 
		{		
		fwrite($fd, $a_cacher);        		
		fclose($fd);
		echo $a_cacher;
		}
		else
		{
		flock($fd, LOCK_SH); 
		fclose($fd);
		echo $a_cacher;
		}
}
Et l'utilisation qui pose problème :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
 
if(isset(SESSION['mem_id']))
{ // Pas de mise en cache
$res = req_sql($valeurs_personnalisees);
mise_en_forme_php($res);
}
elseif(file_exists(fCache) AND !isset(SESSION['mem_id']))
{ //Mise en cache
$res = req_sql($valeurs_par_defaut);
ob_start();
mise_en_forme_php($res);
$a_cacher = ob_get_clean();
cre_cache($fCache, $a_cacher);
} else { 
echo file_get_contents($fCache); }
guikkom est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 13h20.


 
 
 
 
Partenaires

Hébergement Web