Yep. Tried it with IE / NS / and Mozilla Firebird. Same problem.
=P e p i e D e s i g n s
www.pepiedesigns.com
Providing Solutions That Increase Productivity
Web Developement. Database. Hosting. Multimedia.
On Sat, 18 Oct 2003, Marek Kilimajer wrote:
> Did you try it with another browser? Make some really simple example and
> see if this is still happening.
>
> [-^-!-%- wrote:
> > Environment: Linux , PHP 4.2.3,MySql 3.23.39,Apache, and so on
> >
> > The Problem:
> > I have a user authentication script that uses sessions to track the user
> > id. Everything works fine with HTTP, but $_SESSIONS['var'] renders nothing
> > under a secure connection (SSL). Using $_SESSION['myVar']=
> > 'myValueGoesHere' loses its value, once I move to another page. Even when
> > I use SESSION_START() before accessing the value (like echo
> > $_SESSION['myVar']).
> >
> > The PUZZLE:
> > If I print a character before starting the session (as we all know is
> > illegal), the secured page will access $_SESSION['myVar'] with no
> > problems - minus the warning messages for printing chars before
> > session_start(). print_r($_SESSION) will display all of its
> > content properly, but will be lost when I move to another page.
> >
> >
> > Any suggestions?
> >
> > ===Sample CODE =====
> >
> >
> > ===Class_Page.php has ===
> >
> > //this is a general class that handles the general site
> > //it pretty much holds all the application's functions
> > ...
> > //the function AuthenticateUser() is used to valid a user's access.
> > //if $_SESSION['userid'] exist, then the user is logged in.
> > //otherwise, the user is prompted to login
> >
> > class Page {
> >
> > var $INFO;
> >
> > function Page(){
> > session_start();
> > ...
> > }
> >
> > .
> > .
> > .
> >
> > function AuthenticateUser(){
> > if(isset($_SESSION['userid']) and !empty($_SESSION['userid']) ...){
> > //user is already logged in
> >
> > $this->INFO = $this->getUserInfo($_SESSION['clientid']);
> >
> > return True;
> > }else{
> > $usr = $_POST['username']; //simplified code. no security.
> > $pas = $_POST['password'];
> >
> > $qry = mysql_query('select * from users where usr=$usr and
> > pass=$as ...) or die($this->ErrorDisplay);
> >
> > if(mysql_num_rows($qry)>0){
> > $validUser = mysql_fetch_object($qry);
> >
> > session_start();
> > $_SESSION['userid'] = $validUser->uid;
> > $_SESSION['username'] =$validUser->uname;
> > ...
> > return True;
> > }else{
> > $_SESSION=Array();
> > session_destroy();
> > $this->ErrorDisplay('invaliduser');
> > return False;
> >
> > }
> >
> > }
> >
> >
> > } //end of class
> >
> >
> >
> >
> > //==== Privatepage.php
> >
> > include(class_Page.php);
> >
> > $page = new Page;
> >
> > //access control
> >
> > if($page->AuthenticateUser()=='True'){ //a valid user
> >
> > //display content
> >
> > print_r($_SESSION) //test session contents
> >
> > }else{
> > $page->ErrorDisplay('noaccess');
> > }
> >
> >
> >
> >
> >
> > The above code fails when runned as-is. However, if I print any character
> > before testing the sesion values, it will run.
> >
> > Like:
> > function AuthenticateUser(){
> >
> > //normal: DOES NOT WORK
> > session_start();
> > print_r($_SESSION); //prints empty array
> >
> > //weird: WORKS with HEADER() warnings...
> > echo ' ';
> > session_start();
> > print_r($_SESSION); //prints SESSION content
> >
> > ...
> >
> > }
> >
> >
> >
> >
> >
> >
> > =P e p i e D e s i g n s
> > www.pepiedesigns.com
> > Providing Solutions That Increase Productivity
> >
> > Web Developement. Database. Hosting. Multimedia.
> >
>
--
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php