I have a couple of LAN
servers set up for learning & developing. One is FreeBSD 4.10
running apache 1.3 with php4 module and postgresql 7.3 ; the 7.0 is
running apache22, php5 and posstgresql 8.3. Here's the problem: Everything is fine on the older machine. I transferred one "WebSite" to the newer machine; did the pg_dumpall to the new machine and all appears ok. I changed the include $DOCUMENT_ROOTs to ($_SERVER["DOCUMENT_ROOT"]...... and all that is well. However, there seems to be a problem with the sql code which was done by another party. There is a function "checkuser" which is invoked upon login from index.php. The instruction is: checkuser(array(0,1,2,3,4,5,6));...... and there it stops. function checkuser($group_id) { global $sid,$ttl,$login_prompt,$user,$password,$REMOTE_ADDR,$HTTP_POST_VARS, $HTTP_GET_VARS,$SCRIPT_NAME,$HTTP_USER_AGENT,$HTTP_REFERER, $REQUEST_URI,$loglevel; if(!isset($user)) { $user=''; } if(!isset($password)) { $password=''; } if(!isset($sid)) { $sid=''; } if(is_array($group_id)) { $group_id=join($group_id,','); } /* * Statistics: check if such page exists in database * If not, add it */ if($loglevel>=1) { list($page_id)=sqlget(" select page_id from pages where name='$SCRIPT_NAME'"); if(!$page_id) { $page_q=sqlquery("insert into pages (name) values ('$SCRIPT_NAME')"); $page_id=sqlinsid($page_q); } } /* * Get user ID by session ID */ list($user_id)=sqlget(" select \"user\".user_id from \"user\",groups,user_group,session where hash='$sid' and \"user\".user_id=session.user_id and user_group.group_id=groups.group_id and \"user\".user_id=user_group.user_id and groups.group_id in ($group_id) and end_time>".(time())); /* * No such session, or session is expired */ if(!isset($user_id) || $user_id=='') do { /* * Handle POSTs * Check password and group; anonymous access also */ list($user_id)=sqlget(" select \"user\".user_id from \"user\",groups,user_group where \"user\".user_id=user_group.user_id and user_group.group_id=groups.group_id and groups.group_id in ($group_id) and ((\"user\".name='$user' and \"user\".password='".(md5($password))."') or groups.anonymous='Y')"); /* * yeah, authorized */ if(isset($user_id) && $user_id!='' && $user_id>=0) { list($md5)=sqlget(" select hash from session where user_id='$user_id' and ip='$REMOTE_ADDR' and end_time>".(time())." order by end_time desc"); if(isset($md5) && $md5!='') { sqlquery(" update session set end_time=".(time()+$ttl).", visited_pages=visited_pages+1 where hash='$md5' and user_id='$user_id'"); } else do { mt_srand((double)microtime()*1000000); $rnd=mt_rand(0,(double)microtime()*1000000); $md5=md5("$rnd$REMOTE_ADDR$user_id$password"); $result=sqlquery(" insert into session (hash,user_id,start_time, end_time,ip,visited_pages,useragent) values ('$md5','$user_id',".(time()).",".(time()+$ttl).", '$REMOTE_ADDR',1,'$HTTP_USER_AGENT')"); } while (strcmp($result,'error')==0); setcookie('sid',$md5); $sid=$md5; break; } /* * Unauthorized; prompt to login * Save POST and GET variables, except user/password */ setcookie('sid','-1'); $vars=''; while(list($name,$value)=each($HTTP_POST_VARS)) { if($name!='user' && $name!='password') { $vars.="\n<input type=hidden name='$name' value='$value'>"; } } while(list($name,$value)=each($HTTP_GET_VARS)) { if($name!='user' && $name!='password') { $vars.="\n<input type=hidden name='$name' value='$value'>"; } } $login_prompt=eregi_replace('<!-- INFERNO -->','<!-- INFERNO -->'.$vars,$login_prompt); echo $login_prompt; exit(); } while (0); /* * Update existing session to prevent expiration */ else { sqlquery(" update session set end_time=".(time()+$ttl).", visited_pages=visited_pages+1 where hash='$sid'"); } /* * Statistics: write page view */ if($loglevel>=1) { sqlquery(" insert into visits (session_id,page_id,when_stamp,path,referer) select session_id,$page_id,'now','$REQUEST_URI','$HTTP_REFERER' from session where hash='$sid'"); } return $user_id; } The Web page does not load. If I remove the line checkuser (array....) from the php code, things come up fine. Sooooo, I'm a little lost. Could it be that the sql code should be different for the current psql? The database is fine, I can access it and view it (SELECT * FROM ....etc...etc.) from the command line. Could someone please steer me as to what to look for and where to find possible correcections? Thanks much in advance. PJ |