Écrire une réponse

Veuillez écrire votre message et l'envoyer

Cliquez dans la zone sombre de l'image pour envoyer votre message.

Retour

Résumé de la discussion (messages les plus récents en premier)

rvelices
2006-02-07 05:10:18

Si je ne me trompe pas, le remember me ne marche plus avec le nouveau systeme. Le cookie envoye au client expire toujours a la fin de la session.
Il y a un moyen de corriger ca ?

nicolas
2006-02-03 11:01:21

z0rglub a écrit:

(ma remarque sur le patch à "/" est toujours sans réponse)

Pour régler le problème, il va falloir changer la valeur de la propriété session.cookie_path qui est par défaut à "/"

Pour le second problème, je vois deux solutions:
1) déplacer le code qui pose problème
2) gérer completement les sessions dans un seul fichier (renommer functions_session.inc.php en manage_sessions.inc.php) et l'inclure au tout début des scripts. Cela permettrait de régler aussi le problème des caractères excédentaires du fichier de conf.

Finalement j'ai corrigé en mettant les changements de configurations dans le test vérifiant que la gallerie est installée.
J'ai d'autre part ajouté le chemin pour le cookie de session.
J'ai validé tout ça dans le tronc!
Dis gentil chef, si toutes ces modifications te conviennent, tu peux nous faire un build ? :-)

plg
2006-02-01 19:43:37

(ma remarque sur le patch à "/" est toujours sans réponse)

Nouveau petit soucis : lorsque j'utilise upgrade_feed.php, je charge indirectement include/functions_session.inc.php sans avoir chargé include/config_default.inc.php, du coup $conf n'est pas rempli. Ce qui provoque :

Notice: Undefined variable: conf in /home/z0rglub/work/www/pwg/bsf_perf/include/functions_session.inc.php on line 70
Notice: Undefined variable: conf in /home/z0rglub/work/www/pwg/bsf_perf/include/functions_session.inc.php on line 71
Notice: Undefined variable: conf in /home/z0rglub/work/www/pwg/bsf_perf/include/functions_session.inc.php on line 72
Notice: Undefined variable: conf in /home/z0rglub/work/www/pwg/bsf_perf/include/functions_session.inc.php on line 73

1 upgrades to apply

=== upgrade 5

Column has_high phpwebgallery_images added

Le soucis vient du fait qu'il y a autre chose que des fonctions dans include/functions_session.inc.php : il y a un "if" et des "ini_set". Je pense qu'il faudrait soit déplacer ces bouts de code, soit charger la configuration dans upgrade_feed.php. Sachant qu'upgrade_feed.php n'est utile que sur BSF, il sera supprimé pour les branches stables. Sachant également qu'upgrade_feed.php ne doit pas être disponible que pour les administrateurs.

nicolas
2006-01-21 21:39:35

Bon finalement j'ai fait un ajout dans mantis: http://bugs.phpwebgallery.net/view.php?id=268
J'ai aussi corrigé le "bug" dans la branche 1.5, fait le report dans le tronc de j'attends juste un commentaire pour finalement fermé le bug.

nicolas
2006-01-21 15:37:39

Pour régler le problème de l'activation de l'affichage des requêtes, voilà les fichiers que j'ai modifié:
template/yoga/footer.tpl:

Code:

 </div> <!-- copyright -->
 </div> <!-- the_page -->
-
+<!-- BEGIN debug -->
+  {debug.QUERIES_LIST}
+<!-- END debug -->
 </body>
 </html>

include/functions.inc.php:

Code:

 function pwg_query($query)
 {
-  global $conf,$page;
+  global $conf,$page,$debug;
   
   $start = get_moment();
   $result = mysql_query($query) or my_error($query."\n");
@@ -452,12 +452,12 @@
     $output.= '<pre>['.$page['count_queries'].'] ';
     $output.= "\n".$query;
     $output.= "\n".'(this query time : ';
-    $output.= number_format($time, 3, '.', ' ').' s)</b>';
+    $output.= '<b>'.number_format($time, 3, '.', ' ').' s)</b>';
     $output.= "\n".'(total SQL time  : ';
     $output.= number_format($page['queries_time'], 3, '.', ' ').' s)';
-    $output.= '</pre>';
+    $output.= '</pre>'."\n";
     
-    e cho $output;
+    $debug .= $output;
   }
   
   return $result;
@@ -471,9 +471,10 @@
   $now2 = explode( '.', $now[0] );
   $now2 = $now[1].'.'.$now2[1];
   $time = number_format( $now2 - $t2, 3, '.', ' ').' s';
+  $debug .= '<p>';
   $debug.= '['.$time.', ';
   $debug.= $count_queries.' queries] : '.$string;
-  $debug.= "\n";
+  $debug.= "</p>\n";
 }

include/page_tail.php:

Code:

@@ -54,6 +54,14 @@
           'SQL_TIME' => number_format($page['queries_time'],3,'.',' ').' s'));
 }
 
+if ($conf['show_queries']) 
+{
+  $template->assign_block_vars(
+    'debug',
+    array('QUERIES_LIST' => $debug)
+  );
+}
+
 //--------------------------------------------------------------------- contact

Qu'en pensez-vous ? Comment j'intègre ça ? Pierrick, veux-tu que je fasse d'abord un ajout dans le bugtracker ?

p.s: comme d'habitude le forum refuse que j'écrive e cho sans espace!

nicolas
2006-01-20 22:52:41

z0rglub a écrit:

:-) C'est exactement la réponse que je voulais. Je suis d'accord avec toi pour le mode debug. La première version écrivait dans un vrai fichier de log séparé, mais c'était moins pratique à lire que directement dans le navigateur. Je trouverais un moyen de n'envoyer des octets que via le template.

Je fais deux ou trois modifs et je revalide mes sessions.

z0rglub a écrit:

Par contre, comment résoudre le problème de l'étourdi qui ajoute un espace après le "?>" de son include/config_local.inc.php

Je ne vois pas de solution miracle.
D'habitude je gère les sessions différemment. Je m'assure que l'ouverture de la session se fait dans le premier include.

plg
2006-01-20 22:04:26

nicolas a écrit:

Pourquoi l'affichage en mode debug ne se fait pas dans le template ? Et même plus généralement pourquoi tous les affichages ne se font pas à travers le template ? Il ne devrait y avoir ni e cho ni print dans le code mis à part la classe template. Tu n'es pas d'accord ?

:-) C'est exactement la réponse que je voulais. Je suis d'accord avec toi pour le mode debug. La première version écrivait dans un vrai fichier de log séparé, mais c'était moins pratique à lire que directement dans le navigateur. Je trouverais un moyen de n'envoyer des octets que via le template.

Par contre, comment résoudre le problème de l'étourdi qui ajoute un espace après le "?>" de son include/config_local.inc.php ?

nicolas
2006-01-20 21:50:55

z0rglub a écrit:

Oui, je connais. C'est pour cela que j'ai remplacé la redirection par header HTTP en une redirection via HTML. La raison principale : à partir du moment où un webmaster modifie le fichier de configuration, tu peux être certain que dans 50% des cas, il va ajouter des caractères en dehors des balises <?php ?> (et donc envoie sur la page).

Je me doute bien que tu connais. ;-)
Pourquoi l'affichage en mode debug ne se fait pas dans le template ? Et même plus généralement pourquoi tous les affichages ne se font pas à travers le template ? Il ne devrait y avoir ni e cho ni print dans le code mis à part la classe template. Tu n'es pas d'accord ?
De cette façon on résoudrait le problème des sessions et on en profiterait pour rendre la fabrication des pages plus cohérente.

plg
2006-01-20 15:01:50

nicolas a écrit:

Warning: session_start(): Cannot send session cache limiter - headers already sent [...]

Je regarde et je corrige. Cela provient du fait que l'utilisation des sessions ajoute des entêtes http et cela doit se faire avant tout autre envoie au client d'où l'erreur.

Oui, je connais. C'est pour cela que j'ai remplacé la redirection par header HTTP en une redirection via HTML. La raison principale : à partir du moment où un webmaster modifie le fichier de configuration, tu peux être certain que dans 50% des cas, il va ajouter des caractères en dehors des balises <?php ?> (et donc envoie sur la page).

nicolas
2006-01-20 14:36:11

z0rglub a écrit:

J'ai un problème avec la nouvelle gestion des sessions. Si j'active show_queries, à chaque page, j'ai droit à :

Warning: session_start(): Cannot send session cache limiter - headers already sent (output started at /home/z0rglub/work/www/pwg/bsf/include/functions.inc.php:460) in /home/z0rglub/work/www/pwg/bsf/include/user.inc.php on line 31

Je ne connais pas l'impact.

Je regarde et je corrige. Cela provient du fait que l'utilisation des sessions ajoute des entêtes http et cela doit se faire avant tout autre envoie au client d'où l'erreur.

plg
2006-01-20 14:25:34

Autre problème avec le nouveau système de sessions : le path du cookie est "/", ce qui fait que je ne peux pas avoir 2 installations sur la même machine :-/ (voir comment c'était géré avec l'ancien système).

plg
2006-01-20 13:31:41

J'ai un problème avec la nouvelle gestion des sessions. Si j'active show_queries, à chaque page, j'ai droit à :

Warning: session_start(): Cannot send session cache limiter - headers already sent (output started at /home/z0rglub/work/www/pwg/bsf/include/functions.inc.php:460) in /home/z0rglub/work/www/pwg/bsf/include/user.inc.php on line 31

Je ne connais pas l'impact.

nicolas
2006-01-17 21:58:58

z0rglub a écrit:

Aujourd'hui, les sessions sont simplement utilisées pour être associées à un utilisateur, ensuite les données liées à l'utilisateur sont chargées dans $user. Je ne pense pas que l'impact soit si important, ou alors j'ai loupé quelque chose. Je considère que add_session_id, ça touche beaucoup de code, mais c'est simplissime à supprimer.

non l'impact n'est pas important; il y a juste beaucoup de fichiers à modifier mais find, et sed sont mes amis.

z0rglub a écrit:

Oui, une remarque : n'oublies pas mettre un commentaire au dessus de chaque paramètre de $conf dans include/config_default.inc.php à l'image des autres paramètres. Je ne sais pas si tu comptais le faire, mais l'extrait de code laisse supposer que non.

je n'ai pas mis les commentaires sur le forum mais je les mettrais dans le fichier.

z0rglub a écrit:

nicolas a écrit:

p.s: je reporterais toutes ces explications dans le wiki quand ce sera terminé.

Si tu veux, mais j'ai pour idée de réserver les spécifications du wiki pour les évolutions fonctionnelles, pas tellement pour les évolutions techniques. Enfin, si tu veux ajouter des explications dans le wiki, ce ne peut être que bénéfique.

En fait je pensais surtout au wiki pour faire évoluer la documentation.

Je finalise. Je devrais être en mesure de vous livrer quelque chose demain.

plg
2006-01-17 19:51:15

nicolas a écrit:

Je vais maintenant m'attaquer à l'utilisation des sessions proprement dites ce qui représente le gros du boulot.

Aujourd'hui, les sessions sont simplement utilisées pour être associées à un utilisateur, ensuite les données liées à l'utilisateur sont chargées dans $user. Je ne pense pas que l'impact soit si important, ou alors j'ai loupé quelque chose. Je considère que add_session_id, ça touche beaucoup de code, mais c'est simplissime à supprimer.

nicolas a écrit:

Si d'ores et déjà vous avez des questions ou remarques j'y répondrais avec plaisir.

Oui, une remarque : n'oublies pas mettre un commentaire au dessus de chaque paramètre de $conf dans include/config_default.inc.php à l'image des autres paramètres. Je ne sais pas si tu comptais le faire, mais l'extrait de code laisse supposer que non.

N'oublies pas non plus de supprimer le paramétrage obsolete lié aux anciennes sessions.

nicolas a écrit:

p.s: je reporterais toutes ces explications dans le wiki quand ce sera terminé.

Si tu veux, mais j'ai pour idée de réserver les spécifications du wiki pour les évolutions fonctionnelles, pas tellement pour les évolutions techniques. Enfin, si tu veux ajouter des explications dans le wiki, ce ne peut être que bénéfique.

nicolas
2006-01-15 14:51:50

Je continue dans le même sujet pour vous tenir au courant de l'évolution. Je me suis un peu dispersé dans mes explications.
En y regardant de plus près tout à l'heure je me suis apperçu que cela allait être plus complexe (et pas plus compliqué!) que prévu. Cela va juste me prendre un peu plus de temps!
Les modifications que j'ai déjà faites:
- dans le fichier de configuration général (include/config_default.inc.php), dans la partie sessions j'ai ajouté:

Code:

$conf['session_use_cookies'] = 1;
$conf['session_use_only_cookies'] = 1;
$conf['session_use_trans_sid'] = 0;
$conf['session_name'] = 'pwg_id';
$conf['session_save_handler'] = 'db';

Les 3 premières variables configurent le fonctionnement des sessions: l'identifiant de session est stocké côté client dans un cookie et il ne transite pas dans l'url. La 4ème variable définit le nom de ce cookie. La 5ème permet de choisir le type de stockage des sessions côté serveur; par défaut on les stockera dans la base de données (db) mais on peut imaginer d'utiliser le comportement par défaut des sessions i.e stockées dans des fichiers.

J'ai d'autre part modifié le fichier include/functions_session.inc.php pour définir le stockage des sessions avec la fonction session_save_handler(). J'ai utiliser 6 fonctions que j'ai préfixées par pwg_session, à savoir pwg_session_open, pwg_session_close, pwg_session_read, pwg_session_write, pwg_session_destroy et pwg_session_gc.
L'utilisation du stockage en base va m'obliger à modifier la table sessions de la manière suivante;

Code:

/* table originelle: */
phpwebgallery_session {
  `id` varchar(255) binary NOT NULL default '',
  `user_id` smallint(5) NOT NULL default '0',
  `expiration` datetime NOT NULL default '0000-00-00 00:00:00',
  PRIMARY KEY  (`id`)
} TYPE=MyISAM;

/* nouvelle table: */
phpwebgallery_session {
  `id` varchar(255) binary NOT NULL default '',
  `data` text NOT NULL,
  `expiration` datetime NOT NULL default '0000-00-00 00:00:00',
  PRIMARY KEY  (`id`)
} TYPE=MyISAM;

Je vais maintenant m'attaquer à l'utilisation des sessions proprement dites ce qui représente le gros du boulot.

Si d'ores et déjà vous avez des questions ou remarques j'y répondrais avec plaisir.

p.s: aucune de ces modifications n'a été mise à jour dans le dépot puisque cela n'a un sens que dans son ensemble.

p.s: je reporterais toutes ces explications dans le wiki quand ce sera terminé.

Pied de page des forums

Propulsé par FluxBB

github twitter newsletter Faire un don Piwigo.org © 2002-2024 · Contact