php.net |  support |  documentation |  report a bug |  advanced search |  search howto |  statistics |  random bug |  login
Bug #15428 Session does not allow to update variables
Submitted: 2002-02-07 09:14 UTC Modified: 2002-03-05 18:32 UTC
Votes:3
Avg. Score:4.7 ± 0.5
Reproduced:1 of 1 (100.0%)
Same Version:0 (0.0%)
Same OS:0 (0.0%)
From: m_t at mail dot ru Assigned:
Status: Closed Package: Session related
PHP Version: 4.1.1 OS: FreeBSD
Private report: No CVE-ID: None
 [2002-02-07 09:14 UTC] m_t at mail dot ru
When I try to save in the session variable, which is an array and every line of an array is HASH it allows to save ONLY first line (array[0]) later calling the same function in the same script with new data changes an array in memory, but after the script is finished - no new data stored in session, but session file is updated (time).
When I install PHP 4.0.4 under WIN2000 - everything works good, also the same scripts works good under Linux with php 4.0.6, compiled options:
 './configure' '--enable-discard-path' '--with-ibm-db2=/usr/IBMdb2/V7.1' '--enable-ftp' '--enable-trans-sid' '--with-gd' '--enable-gd-native-tt' '--with-freetype-dir' '--with-png-dir' '--with-jpeg-dir' '--with-zlib-dir'

for 4.1.1 under freeBSD options are:
 './configure' '--enable-discard-path' '--with-mysql=/usr/local' '--with-jpeg-dir=/usr/local' '--with-freetype' '--with-freetype-dir=/usr/local' '--with-png-dir=/usr/local' '--with-zlib' '--with-zlib-dir=/usr/local' '--enable-ftp' '--with-gd=/usr/local' '--enable-trans-sid'

Patches

Add a Patch

Pull Requests

Add a Pull Request

History

AllCommentsChangesGit/SVN commitsRelated reports
 [2002-02-07 21:14 UTC] yohgaki@php.net
Short complete script and session realated ini settings are needed.
Could you post them here?
 [2002-02-08 04:43 UTC] m_t at mail dot ru
function check_session()
{
global $SEID, $lang, $vars;
session_start($SEID);
if( !(session_is_registered('lang')) )
    {
    $lang='D';
    session_register('lang');
    }
}
check_session();
global $basket;
if (!session_is_registered('basket') || $basket==null || $basket=="")
{
    $basket=array();
    session_register('basket');    
}
/* this funstion is used to store in a session data about every article, the call is always the same, but after a first call it saves data, on a second call it adds data to an array but does not update data in a session, on PHP 4.0.4 and 4.0.6 it works perfect under freeBSD and Linux */

function add()
{
global $art_name, $size, $qty, $model_number, $color, $customer_id, $maxqty, $ek_price, $vk_price, $program, $vars, $magras, $la_type, $program_n, $color_n, $season, $size_names, $lafirm, $collection_name;
global $basket, $max_qtys;
//walking in a busket for checking an existance of the same artikel
    $i=0;
    $exists=false;
    while(isset($basket[$i]))
    {
	$tmp=$basket[$i];
	$ki=0;
	while($ki<7)
	 {
	 $tmpn="lab".$ki;
	 global $$tmpn;
	if (check_digit($$tmpn) && $$tmpn!=0)
	{
	 if($tmp['ID'] == $model_number && $tmp['size'] == $size_names[$magras][$ki] && $tmp['color'] == $color)
	 {
	    $basket[$i]['qty']+= $$tmpn;
	    $exists = true;
	    break;
	 }
	}
	 $ki++;
	 }
    $i++;
    }
	
    if ($exists != true)
    { 
	$ki=0;
      while($ki<7)
      {
      $tmpn="lab".$ki;
      global $$tmpn;
       if(check_digit($$tmpn) && $$tmpn != 0)
       { 
        $qty_real=min($max_qtys[($size_names[$magras][$ki])], $$tmpn);
        $tmp=array(
	"ID" => $model_number,
	"name" => $art_name, 
	"size" => $size_names[$magras][$ki], 
	"qty" => $qty_real,
	"maxqty" => $max_qtys[($size_names[$magras][$ki])],
	"color" => $color,
	"program" => $program,
	"customer" => $customer_id,
	"ek_price" => "$ek_price",
	"vk_price" => "$vk_price",
	"magras" => $magras,
	"la"=>($ki+1),
	"program_n"=> $program_n,
	"color_n"=> $color_n,
	"agent" => $vars['username'],
	"season"=> $season,
	"collection"=>$lafirm,
	"collection_name"=>$collection_name
	);
	array_push($basket, $tmp);//echo $tmp['ID']." ".$basket[1]['ID'];
       }
     $ki++;
     }
    }
    
}

////////////////////////////
ini params:

[Session]
; Handler used to store/retrieve data.
session.save_handler = files

; Argument passed to save_handler.  In the case of files, this is the path
; where data files are stored. Note: Windows users have to change this 
; variable in order to use PHP's session functions.
session.save_path = /tmp

; Whether to use cookies.
session.use_cookies = 0


; Name of the session (used as cookie name).
session.name = SEID

; Initialize session on request startup.
session.auto_start = 0

; Lifetime in seconds of cookie or, if 0, until browser is restarted.
session.cookie_lifetime = 0

; The path for which the cookie is valid.
session.cookie_path = /

; The domain for which the cookie is valid.
session.cookie_domain =

; Handler used to serialize data.  php is the standard serializer of PHP.
session.serialize_handler = php

; Percentual probability that the 'garbage collection' process is started
; on every session initialization.
session.gc_probability = 3

; After this number of seconds, stored data will be seen as 'garbage' and
; cleaned up by the garbage collection process.
session.gc_maxlifetime = 1440

; Check HTTP Referer to invalidate externally stored URLs containing ids.
session.referer_check =

; How many bytes to read from the file.
;session.entropy_length = 0

; Specified here to create the session id.
;session.entropy_file =

;session.entropy_length = 16

;session.entropy_file = /dev/urandom

; Set to {nocache,private,public} to determine HTTP caching aspects.
session.cache_limiter = nocache

; Document expires after n minutes.
session.cache_expire = 180

; use transient sid support if enabled by compiling with --enable-trans-sid.
session.use_trans_sid = 1

url_rewriter.tags = "a=href,area=href,frame=src,input=src,form=fakeentry"
 [2002-03-05 18:32 UTC] yohgaki@php.net
This bug has been fixed in CVS.

It's probably fixed in CVS. Please reopen if there is the problem.
 
PHP Copyright © 2001-2024 The PHP Group
All rights reserved.
Last updated: Wed May 29 11:01:32 2024 UTC