Ok, I'm new to sessions and have a few questions...

Here is my plan. I'm running a news type web site where subscribers 
have different privileges on what they can view and download. The 
privileges are stored in a mySQL DB. My plan is to make users login 
(thereby starting a session with all their permission data). We will 
also allow the users to save their login and password as a cookie, 
thereby starting a new session every time they visit the web site.

Using sessions to serve as a logged on status I'm pretty sure I can 
do authentication for PHP pages. However my worry is when someone 
types in a URL to get a PDF file. So what I was thinking of doing was 
writing an apache module that did the following:

When a file with .pdf is asked for it looks to see if the user is 
currently in a session (aka 'logged on'). I'm guessing the module can 
know this by using the HTTP headers. Figuring we can look to see if 
its giving a cookie with the sid or its part of the URL.

Ok, question 1: If I compile with -enable-trans-sid is the sid 
included as part of the HTTP header? Also my understanding is if i 
complied with this I don't have put the SID in each URL, if so and 
cookies are available on the client side which will PHP use?

Once the module has the sid it can read the cookie like file related 
to that SID in the /tmp dir and figure out what the user's privileges 
are.

Question 2: I was looking at the values in the php.ini file

[Session]
session.save_handler      = files   ; handler used to store/retrieve data
session.save_path         = /tmp    ; argument passed to save_handler
                                     ; in the case of files, this is the
                                     ; path where data files are stored
session.use_cookies       = 1       ; whether to use cookies
session.name              = PHPSESSID 
                                     ; name of the session
                                     ; is used as cookie name
session.auto_start        = 0       ; initialize session on request startup
session.cookie_lifetime   = 0       ; lifetime in seconds of cookie
                                     ; or if 0, until browser is restarted
session.cookie_path       = /       ; the path the cookie is valid for
session.cookie_domain     =         ; the domain the cookie is valid for
session.serialize_handler = php     ; handler used to serialize data
                                     ; php is the standard serializer of PHP
session.gc_probability    = 1       ; percentual probability that the
                                     ; 'garbage collection' process is started
                                     ; on every session initialization
session.gc_maxlifetime    = 1440    ; after this number of seconds, stored
                                     ; data will be seen as 'garbage' and
                                     ; cleaned up by the gc process
session.referer_check     =         ; check HTTP Referer to invalidate
                                     ; externally stored URLs containing ids
session.entropy_length    = 0       ; how many bytes to read from the file
session.entropy_file      =         ; specified here to create the session id
; session.entropy_length    = 16
; session.entropy_file      = /dev/urandom
session.cache_limiter     = nocache ; set to {nocache,private,public} to
                                     ; determine HTTP caching aspects
session.cache_expire      = 180     ; document expires after n minutes
session.use_trans_sid     = 1       ; use transient sid support if enabled
                                     ; by compiling with --enable-trans-sid

Now according to this the cookie like files should be deleted after 
1440 seconds, but on my machine their not. Any reason why?

Thanks for you help ahead of time the few of you out there who might 
dare to tacle these questions.

If anyone out there can point me to some good copy on PHP sessions 
and how they work under the hood please do so.

thanks
Mike

Reply via email to