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

Reply via email to