developer.jelix.org is not used any more and exists only for history. Post new tickets on the Github account.
developer.jelix.org n'est plus utilisée, et existe uniquement pour son historique. Postez les nouveaux tickets sur le compte github.

Ticket #417: 417-jSession-session-name.patch

File 417-jSession-session-name.patch, 6.4 KB (added by Julien, 13 years ago)

Patch principal

  • lib/jelix-scripts/templates/var/config/defaultconfig.ini.php.tpl

     
    137137
    138138
    139139[sessions]
     140; You can change the session name by setting the following parameter (only accepts alpha-numeric chars) :
     141; name = "mySessionName"
    140142; Use alternative storage engines for sessions
    141143;
    142144; usage :
  • lib/jelix/core/jSession.class.php

     
    44* @subpackage core
    55* @author     Julien Issler
    66* @contributor
    7 * @copyright  2007 Julien Issler
     7* @copyright  2007-2008 Julien Issler
    88* @link       http://www.jelix.org
    99* @licence    GNU Lesser General Public Licence see LICENCE file or http://www.gnu.org/licenses/lgpl.html
    1010* @since 1.0
     
    2727    public static function start(){
    2828        $params = $GLOBALS['gJConfig']->sessions;
    2929
    30         if(!isset($params['storage'])){
    31             session_start();
    32             return true;
    33         }
     30        if(isset($params['storage'])){
     31       
     32            switch($params['storage']){
    3433
    35         switch($params['storage']){
     34                case 'dao':
     35                    session_set_save_handler(
     36                        array(__CLASS__,'daoOpen'),
     37                        array(__CLASS__,'daoClose'),
     38                        array(__CLASS__,'daoRead'),
     39                        array(__CLASS__,'daoWrite'),
     40                        array(__CLASS__,'daoDestroy'),
     41                        array(__CLASS__,'daoGarbageCollector')
     42                    );
     43                    self::$_params = $params;
     44                    break;
    3645
    37             case 'dao':
    38                 session_set_save_handler(
    39                     array(__CLASS__,'daoOpen'),
    40                     array(__CLASS__,'daoClose'),
    41                     array(__CLASS__,'daoRead'),
    42                     array(__CLASS__,'daoWrite'),
    43                     array(__CLASS__,'daoDestroy'),
    44                     array(__CLASS__,'daoGarbageCollector')
    45                 );
    46                 self::$_params = $params;
    47                 break;
     46                case 'files':
     47                    $path = str_replace(array('lib:','app:'), array(LIB_PATH, JELIX_APP_PATH), $params['files_path']);
     48                    session_save_path($path);
     49                    break;
    4850
    49             case 'files':
    50                 $path = str_replace(array('lib:','app:'), array(LIB_PATH, JELIX_APP_PATH), $params['files_path']);
    51                 session_save_path($path);
    52                 break;
    53 
    54             default:
    55                 break;
     51                default:
     52                    break;
     53            }
     54           
    5655        }
    57 
     56       
     57        if(isset($params['name'])){
     58            $params['name'] = trim($params['name']);
     59            if($params['name'] === ''){
     60                throw new jException('jelix~errors.jsession.name.empty');
     61            }
     62               
     63            if(!preg_match('#^[a-zA-Z0-9]+$#',$params['name'])){
     64                // regexp check because session name can only be alpha numeric according to the php documentation
     65                throw new jException('jelix~errors.jsession.name.invalid');
     66            }
     67               
     68            session_name($params['name']);
     69        }
    5870        session_start();
    5971        return true;
    6072    }
     
    150162    }
    151163
    152164}
    153 ?>
    154  Pas de fin de ligne à la fin du fichier
     165?>
  • lib/jelix/core/defaultconfig.ini.php

     
    201201
    202202[sessions]
    203203shared_session = off
     204; You can change the session name by setting the following parameter (only accepts alpha-numeric chars) :
     205; name = "mySessionName"
     206;
    204207; Use alternative storage engines for sessions
    205208;
    206209; usage :
  • lib/jelix/core-modules/jelix/locales/en_EN/errors.UTF-8.properties

     
    2626cli.unknow.option = (43)Unknow option "%s"
    2727cli.two.many.parameters = (44)Too many parameters
    2828
     29#---- jSession
     30jsession.name.empty = (90)Session name cannot be empty.
     31jsession.name.invalid = (91)Session name only accepts alpha-numeric chars.
     32
    2933#---- action
    3034ad.controller.file.unknow=(100)Action %s : controller file %s doesn't exists
    3135ad.controller.class.unknow=(101)Action %s :  controller class %s doesn't exists (file : %s)
  • lib/jelix/core-modules/jelix/locales/en_US/errors.UTF-8.properties

     
    2626cli.unknow.option = (43)Unknow option "%s"
    2727cli.two.many.parameters = (44)Too many parameters
    2828
     29#---- jSession
     30jsession.name.empty = (90)Session name cannot be empty.
     31jsession.name.invalid = (91)Session name only accepts alpha-numeric chars.
     32
    2933#---- action
    3034ad.controller.file.unknow=(100)Action %s : controller file %s doesn't exists
    3135ad.controller.class.unknow=(101)Action %s :  controller class %s doesn't exists (file : %s)
  • lib/jelix/core-modules/jelix/locales/fr_FR/errors.UTF-8.properties

     
    2626cli.unknow.option = (43)Option "%s" inconnue
    2727cli.two.many.parameters = (44) Trop de paramètres
    2828
     29#---- jSession
     30jsession.name.empty = (90)Le nom de session ne peut pas être vide.
     31jsession.name.invalid = (91)Le nom de session ne peut contenir que des caractères alpha-numériques.
     32
    2933#---- actions
    3034ad.controller.file.unknow=(100)Action %s : le fichier contrôleur %s n'existe pas
    3135ad.controller.class.unknow=(101)Action %s : la classe contrôleur %s n'existe pas (fichier : %s)