1 (edited by sridhar 2007-10-17 08:26)

Topic: Integration of Punbb To Handshake Script

Hello i need some1 frm the coder community to help me i bought a handshake script and this script owes an option to integrate forum to it but unfortunately i do not include punbb in its predefined script but it has phpbb, so i can give a the script for integration of phpbb that can be treated as sample to make a same thing for punbb so that i can integrate the same to my script

<?php

function phpbb_register($values){
    
    $host_details = parse_url($values["url"]);
    $host = $host_details["host"];
    $phpbb_path = $host_details["path"];
    if(!ereg("/$",$phpbb_path))
        $phpbb_path.= "/";
        
    $cookie_file = phpbb_cookie_file();    
    @unlink($cookie_file);
    
    $result = phpbb_curl("http://".$host.$phpbb_path."profile.php",$cookie_file,"mode=register&agreed=true");
    preg_match("/name=\"sid\" value=\"([^\"]+)\"/",$result,$match);
    $sid = $match[1];    
        
    $phpbb_values = array(
        "mode" => "register",
        "agreed" => "true",
        "coppa" => "0",            
        "username" => $values["username"],
        "email" => $values["email"],
        "new_password" => $values["password"],
        "password_confirm" => $values["password"],
        "viewemail" => "0",
        "hideonline" => "0",
        "notifyreply" => "1",
        "notifypm" => "1",
        "popup_pm" => "1",
        "attachsig" => "1",
        "allowbbcode" => "1",
        "allowhtml" => "1",
        "allowsmilies" => "1",
        "language" => "english",
        "style" => "1",
        "timezone" => "0",
        "dateformat" => "D M d, Y g:i a",
        "icq" => "",
        "aim" => "",
        "msn" => "",
        "yim" => "",
        "website" => "",
        "location" => "",
        "occupation" => "",
        "interests" => "",
        "signature" => "",
        "submit" => "1",
        "sid" => $sid
    );
        
    while(list($key,$val) = each($phpbb_values)){
        $post_string.= $key."=".urlencode($val)."&";
    }//while
    $post_string = rtrim($post_string,"&");
    
    $result = phpbb_curl("http://".$host.$phpbb_path."profile.php",$cookie_file,$post_string);
    
    return true;
    
}//phpbb_register

function phpbb_login($values){
    
    $host_details = parse_url($values["url"]);
    $host = $host_details["host"];
    $cookie_url = eregi_replace("^www","",$host);
    $phpbb_path = $host_details["path"];
    if(!ereg("/$",$phpbb_path))
        $phpbb_path.= "/";

    $phpbb_values = array(
        "username" => $values["username"],
        "password" => $values["password"],
        "redirect" => "",
        "submit" => "1",
        "login" => "1"
    );
    
    if($values["remember"])
        $phpbb_values["autologin"] = "1";
            
    while(list($key,$val) = each($phpbb_values)){
        $post_string.= $key."=".urlencode($val)."&";
    }//while
    $post_string = rtrim($post_string,"&");
    
    $cookie_file = phpbb_cookie_file();    
    @unlink($cookie_file);
    $line = phpbb_curl("http://".$host.$phpbb_path."login.php",$cookie_file,$post_string,"",1);
    
    $line = ereg_replace("\r","",$line);
    $lines = explode("\n",$line);
    $skip[0] = 1;
    $skip[1] = 1;
    foreach($lines as $header){
        if(eregi("^Set-Cookie",$header)){
            preg_match_all("/^Set-Cookie: ([^=]+)=([^;]+);/",$header,$matches);
            $name   = $matches[1][0];
            $value  = urldecode($matches[2][0]);
            preg_match_all("/expires=([^;]+);/",$header,$matches);
            $expire_string = $matches[1][0];
            if($expire_string)
                $expire = strtotime($expire_string);
            else
                $expire = 0;
            if($name == "phpbb2mysql_data" && $skip[0]){
                $skip[0] = 0;
            }//if
            elseif($name == "phpbb2mysql_sid" && $skip[1]){
                $skip[1] = 0;
            }//elseif
            else{            
                load_cookie($name,$value,$expire,$cookie_url);
            }//else
        }//if
        elseif(eregi("^Location",$header)){
            $link = ereg_replace("Location: ","",$header);
            $url = parse_url($link);                    
            parse_str($url["query"],$phpbb_answer);
            $session_id = $phpbb_answer["sid"];
            load_cookie("phpbb_sid",$phpbb_answer["sid"],0);
        }//elseif
    }//foreach
    
    $client_ip = ( !empty($HTTP_SERVER_VARS['REMOTE_ADDR']) ) ? $HTTP_SERVER_VARS['REMOTE_ADDR'] : ( ( !empty($HTTP_ENV_VARS['REMOTE_ADDR']) ) ? $HTTP_ENV_VARS['REMOTE_ADDR'] : getenv('REMOTE_ADDR') );
    $user_ip = phpbb_encode_ip($client_ip);
    
    $conn = @mysql_connect($values["dbhost"],$values["dbuser"],$values["dbpass"],1);
    @mysql_select_db($values["dbname"],$conn);
    
    $sql_query = "UPDATE ".$values["dbprefix"]."sessions SET session_ip = '".$user_ip."'
                  WHERE session_id='".$session_id."'";
    @mysql_query($sql_query,$conn);
    @mysql_close($conn);
    
    return true;
        
}//phpbb_login

function phpbb_logout($values){
    
    $host_details = parse_url($values["url"]);
    $host = $host_details["host"];
    $phpbb_path = $host_details["path"];
    if(!ereg("/$",$phpbb_path))
        $phpbb_path.= "/";

    $phpbb_values = array(        
        "submit" => "1",
        "logout" => "true",
        "sid" => $GLOBALS["Get"]->cookie("phpbb_sid")
    );
            
    while(list($key,$val) = each($phpbb_values)){
        $post_string.= $key."=".urlencode($val)."&";
    }//while
    $post_string = rtrim($post_string,"&");
            
    $fp = fsockopen ($host, 80, $errno, $errstr);
    if($fp){
    fputs($fp, "POST ".$phpbb_path."login.php HTTP/1.1\r\n"); 
    fputs($fp, "Host: ".$host."\r\n"); 
    fputs($fp, "Content-type: application/x-www-form-urlencoded\r\n"); 
    fputs($fp, "Content-length: ".strlen($post_string)."\r\n");
    while(list($key,$val) = each($_COOKIE)){
        $cookies.= $key."=".urlencode($val)."; ";
    }//while
    $cookies = rtrim($cookies,'; ');
    fputs($fp, "Cookie: ".$cookies."\n");
    fputs($fp, "Connection: close\r\n\r\n"); 
    fputs($fp, $post_string."\r\n\r\n");
    $line = "";
    while (!feof($fp)) {
        $line.= fgets ($fp,1024);
    }//while
    fclose ($fp);
    }//if
            
    $line = ereg_replace("\r","",$line);
    $lines = explode("\n",$line);
    foreach($lines as $header){
        if(eregi("^Set-Cookie",$header)){
            preg_match_all("/^Set-Cookie: ([^=]+)=([^;]+);/",$header,$matches);
            $name   = $matches[1][0];
            $value  = urldecode($matches[2][0]);
            preg_match_all("/expires=([^;]+);/",$header,$matches);
            $expire_string = $matches[1][0];
            if($expire_string)
                $expire = strtotime($expire_string);
            else
                $expire = 0;            
            load_cookie($name,$value,$expire);
        }//if
    }//foreach
    
    load_cookie("phpbb_sid","",time()-10);
    
    return true;
    
}//phpbb_logout

function phpbb_link($values){
    
    return rtrim($values["url"],"/")."/index.php?sid=".$GLOBALS["Get"]->cookie("phpbb_sid");
    
}//phpbb_link

function phpbb_encode_ip($dotquad_ip){
    
    $ip_sep = explode('.', $dotquad_ip);
    return sprintf('%02x%02x%02x%02x', $ip_sep[0], $ip_sep[1], $ip_sep[2], $ip_sep[3]);
    
}//phpbb_encode_ip

function phpbb_curl($url,$cookie_path="",$postfileds="",$referrer="",$header="",$follow=1){
    
    $agent = "Mozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:1.4) Gecko/20030624 Netscape/7.1 (ax)";
    $ch = curl_init(); 
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
    curl_setopt($ch, CURLOPT_URL,$url);
    curl_setopt($ch, CURLOPT_USERAGENT, $agent);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
    if($follow)
        curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);

    if($referrer!="")    
        curl_setopt($ch, CURLOPT_REFERER, $referrer);
        
    if($cookie_path!=""){
        curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie_path);
        curl_setopt($ch, CURLOPT_COOKIEJAR, $cookie_path);
    }//if
    
    if($postfileds!=""){
        curl_setopt($ch, CURLOPT_POST, 1); 
        curl_setopt($ch, CURLOPT_POSTFIELDS,$postfileds); 
    }//if
    
    if($header!="")
        curl_setopt($ch, CURLOPT_HEADER, 1);

    $result = curl_exec ($ch);
    curl_close ($ch);
    
    return $result;
    
}//phpbb_curl

function phpbb_cookie_file(){
    
    mt_srand((double)microtime()*100000);
    $fpath = DOC_ROOT."/temp";
    $fname = hs_substr(md5(time().mt_rand(0,100)),0,15);
    
    $cookie_file = $fpath."/".$fname.".txt";
    
    return $cookie_file;
    
}//phpbb_cookie_file

?>

regards

Sridhar

2

Re: Integration of Punbb To Handshake Script

If you bought the script, ask the company that sells it to do the code