RE: [PHP] Session files in /tmp are zero length

From: Date: Wed, 14 May 2003 15:57:15 +0000
Subject: RE: [PHP] Session files in /tmp are zero length
Groups: php.general 
Request: Send a blank email to php-general+get-147602@lists.php.net to get a copy of this message
It looks like the coding style is a mix of register_globals "on" and "off". Here's a summary of what it should be: If register_globals is "On" in php.ini, then do the following: - use session_register() to create your session variables; - use the global variable to access (assign, print) the variable, not the $HTTP_SESSION_VARS (or $_SESSION) array. Example: $myVar = 'test'; session_register('myVar'); $myVar = 'some new value'; print $myVar; Note: the value of $myVar is what is stored to the session at the end of the script. And, since it is stored after the script ends, its value is not available via $HTTP_SESSION_VARS[] until the next page. If register_globals is "Off" in php.ini, then do the following: - do not use session_register(), etc. - use $HTTP_SESSION_VARS (or $_SESSION) for all accesses. Example: $HTTP_SESSION_VARS['myVar'] = 'test'; $HTTP_SESSION_VARS['myVar'] = 'some new value'; print $HTTP_SESSION_VARS['myVar']; Kirk > -----Original Message----- > From: Lee Stewart [mailto:lstewart@dsgroup.com] > Sent: Wednesday, May 14, 2003 9:45 AM > To: php-general@lists.php.net > Subject: Re: [PHP] Session files in /tmp are zero length > > > I did add the error_reporting, but still saw no errors... > > Here's the majority of the code: > error_reporting(E_ALL); > $errmsg = ''; > session_start(); > if( isset($username) ) { > require_once('Connections/mySql.php'); > mysql_select_db($database_mySql, $mySql) or > die(mysql_error($mySql)); > $rs = mysql_query("select * from employee where > initials = '" . > strtoupper($username) . "'", $mySql) or die(mysql_error($mySql)); > if( !(mysql_num_rows($rs)) ) { // not valid username > mysql_free_result($rs); > $errmsg = "Invalid Userid"; > unset($username); > } > else { // valid user, now validate password and status > $row = mysql_fetch_assoc($rs); > mysql_free_result($rs); > if( $row['pw'] == $password ) { // if > correct password > if( $row['status'] == 'a' || > $row['status'] == > 'm' ) { // if active user > $_SESSION["username"] = $username; > $username = strtoupper($username); > session_register("username"); > $authlevel = $row['status']=='a'?1:2; > session_register("authlevel"); > mysql_query("update employee set > lastlogin = " . (time()-10800) . " where initials = '$username'", > $mySql) or die(mysql_error($mySql)); > echo "<meta http-equiv=refresh > content=\"0; url=browse.php\">"; > exit; > > What follows just closes out the if's and has the html for > the page to > be redisplayed on an invalid userid/password. > > It does accept the userid/password, validates it, but when it gets to > the second page (browse.php), it does not know the username > or authlevel. > > When I take a look at /tmp (it's on Linux), I see the > sess_.... file(s), > but it's zero length... No variable names, no values. > > Like I mentioned, I'm migrating this from a PHP 4.0.3 system > to 4.2.2. > register_globals is ON. And /tmp is world writable.. > > I've even tried the "new" '$_SESSION["username"] = > $username;' syntax, > with the same results. (Though I have to admit that I'd hate > to have to > recode the entire app to change all the session_register stmts!) > > Thanks for any adivce... > Lee > > > > Kirk Johnson wrote: > > > > Start by setting the error reporting level to max, using: > > > > error_reporting(E_ALL); > > > > We may need to see some representative code to help. > > > > Kirk > > > -- > PHP General Mailing List (http://www.php.net/) > To unsubscribe, visit: http://www.php.net/unsub.php >

« previous php.general (#147602) next »