Re: Session files in /tmp are zero length
| From: | Lee Stewart | Date: | Wed, 14 May 2003 16:53:54 +0000 |
| Subject: | Re: Session files in /tmp are zero length | ||
| References: | 1 | Groups: | php.general |
| Request: | Send a blank email to php-general+get-147613@lists.php.net to get a copy of this message | ||
Thanks for the suggestion... Trying your simple test, page2 comes up with "test is". And I get another new sess_... file in /tmp, also zero bytes....
Lee
Kirk Johnson wrote:
Sorry, I am stumped. I would start out with the simplest test page I could make, and see if you can get that to work: page.php <? session_start(); $test='foobar'; session_register('test'); header('Location: page2.php'); ?> page2.php <? session_start(); echo "test is $test<br>"; ?>-----Original Message----- From: Lee Stewart [mailto:lstewart@dsgroup.com] Sent: Wednesday, May 14, 2003 10:32 AM To: php-general@lists.php.net Subject: Re: [PHP] Session files in /tmp are zero length I'm really coding only for register_globals ON. I only added the $_SESSION statment just to test and see if that made any difference (it didn't). I think I'm doing just what you described: $username = strtoupper($username); session_register("username"); $authlevel = $row['status']=='a'?1:2; session_register("authlevel"); I just never have anything but the zero length session (sess_...) file -- therefore the next page has nothing passed to it... Lee Kirk Johnson wrote: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) thevariable, 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 sessionat the end of thescript. And, since it is stored after the script ends, itsvalue is notavailable 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$row['status']=='a'?1:2;-----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 =it gets tosession_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-- PHP General Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.phpthe 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