roam_server.php

来自「linux/unix环境下的建站系统」· PHP 代码 · 共 229 行

PHP
229
字号
<?phpdefine ('SMTH_ROAM_FILE'  , '/home/bbs/0Announce/roam');define ('SMTH_ROAM_FROM'  , '166.111.8.238');define ('SMTH_ROAM_PORT'  , 1080);function bbs_roam_query ($query_string,$query_keys,$type,&$data,&$err) {    switch ($query_string) {        case 'queryuser':            $query_string = '/service/queryuser.php';            $encoded = 'userid='.rawurlencode ($query_keys[0]);            break;        case 'queryboard':            $query_string = '/service/queryboard.php';            $encoded = 'board='.rawurlencode ($query_keys[0]);            break;        case 'checkreadperm';            $query_string = '/service/checkreadperm.php';            $encoded= 'usernum='.intval ($query_keys[0]).'&bid='.intval ($query_keys[1]);            break;        case 'normalboard':            $query_string = '/service/normalboard.php';            $encoded = 'board='.rawurlencode ($query_keys[0]);            break;        case 'ann_traverse_check':            $query_string = '/service/ann_traverse_check.php';            $encoded = 'filename='.rawurlencode ($query_keys[0]).'&userid='.rawurlencode ($query_keys[1]);            break;        default:            return -1;        }        $query_file = 'http://'.SMTH_ROAM_FROM.':'.SMTH_ROAM_PORT.$query_string;        $url = parse_url($query_file);    if (!$url) return -1;	if (!isset($url['port'])) { $url['port'] = ''; }	if (!isset($url['query'])) { $url['query'] = ''; }    $fp = fsockopen($url['host'], $url['port'] ? $url['port'] : 80 , $errno , $errstr , 30);    if (!$fp)         return -2;        fputs($fp, sprintf("POST %s%s%s HTTP/1.0\n", $url['path'], $url['query'] ? "?" : "", $url['query']));	fputs($fp, "Host: $url[host]\n");	fputs($fp, "Content-type: application/x-www-form-urlencoded\n");	fputs($fp, "Content-length: " . strlen($encoded) . "\n");	fputs($fp, "Connection: close\n\n");		fputs($fp, "$encoded\n");		$line = fgets($fp,1024);	if (!eregi("^HTTP/1\.. 200", $line)) {	    return -3;	}		$data_rcv = '';	$inheader = 1;	while(!feof($fp)) {		$line = fgets($fp,1024);		if ($inheader && ($line == "\n" || $line == "\r\n")) 			$inheader = 0;		elseif (!$inheader) 			$data_rcv .= $line;	}	fclose($fp);        if (!$data_rcv)        return -4;            $parser = xml_parser_create();    xml_parser_set_option($parser,XML_OPTION_CASE_FOLDING,0);    xml_parser_set_option($parser,XML_OPTION_SKIP_WHITE,1);    xml_parse_into_struct($parser,$data_rcv,$values,$tags);    xml_parser_free($parser);        if (strcasecmp($values [1]['tag'],'error')==0)         $err = $values [1]['value'];    else        return -5;        if ($err==1) { //err        if (strcasecmp($values [2]['tag'],'message')==0)             $err = rawurldecode ($values [2]['value']);        else            $err = 'Unknown Error';        return 0;    }        if ($type==1) {        $data = array ();        $i = 2;        $err = 1;        while ($err==1) {             if (strcasecmp ($values [$i]['tag'],'data') == 0 && strcasecmp ($values [$i]['type'],'open') == 0)                $err = 0;             if (!$values [$i])                break;             $i ++;        }        if ($err==1) {            $err = 'Can\'t Get Data!';            return 0;        }                $err = 0;        while (!(strcasecmp ($values [$i]['tag'],'data') == 0 && strcasecmp ($values [$i]['type'],'close') == 0)) {            $data[$values [$i]['tag']] = rawurldecode ($values [$i]['value']);            $i ++;            if (!$values [$i]) {                $err = 1;                break;            }        }                if ($err==1) {            $err = 'Received Data Error!';            return 0;        }    }    else {        if (strcasecmp($values [2]['tag'],'message')==0)             $err = rawurldecode ($values [2]['value']);        else            $err = 'No Message';    }        return 1;}function bbs_roam_readinfor($userid) {    if (strstr($userid, '.'))        return 0;    $file = SMTH_ROAM_FILE . '/' . strtoupper ($userid[0]) . '/' . $userid;    $lines = file ($file);    if (!$lines) return 0;    $ret = array();    foreach ($lines as $line) {        $line = ltrim(trim($line));        $exp = explode (':',$line);        $k = ltrim (trim ($exp[0]));        $v = ltrim (trim ($exp[1]));        if (!$k || !$v)            return 0;        $ret[$k]=$v;    }    return $ret;}function bbs_roam_init_guest () {    global $currentuser;    $currentuser = array (                    'userid' => 'guest'                        );    $_SESSION['currentuser'] = $currentuser;}session_start();session_name();if (!session_is_registered('currentuser')) {    bbs_roam_init_guest ();}else {    $currentuser = $_SESSION['currentuser'];}if (isset ($_GET['roam_user'])) {    if ($currentuser['userid'] != $_GET['roam_user']) {        if ($_GET['pass_infor']==1) {            $user_infor = bbs_roam_readinfor($_GET['roam_user']);            if (!$user_infor)                bbs_roam_init_guest ();            else if (!$ret['ROAM_FROM'] || $ret['ROAM_FROM'] != $_SERVER['REMOTE_ADDR']) {                bbs_roam_init_guest ();            }            else {                $currentuser = $ret;                $_SESSION['currentuser'] = $currentuser;                }        }        else {            bbs_roam_init_guest ();        }    }}function roam_login_init() {    return;}function bbs_roam_getboard ($board, &$brdarr) {    $brdarr = array ();    $board = ltrim (trim ($board));    if (!$board) return -1;    $ret =  bbs_roam_query ('queryboard',array ($board),1,$brdarr,$err);    if ($ret < 0) return -2;    if ($ret == 0) return 0;    if (!sizeof ($brdarr)) return -2;    return $brdarr['BID'];}function bbs_roam_checkreadperm($usernum, $bid) {    $usernum = intval ($usernum);    $bid = intval ($bid);    if ($usernum == 0 || $bid == 0)        return 0;    $ret = bbs_roam_query('checkreadperm',array ($usernum,$bid),0,$data,$err);    if ($ret < 0) return -1;    if ($ret == 1 && strcasecmp ($err,'OK') == 0)        return 1;    return 0;}function bbs_roam_normalboard($board) {    $ret = bbs_roam_query('normalboard',array ($board),0,$data,$err);    if ($ret < 0) return -1;    if ($ret == 1 && strcasecmp ($err,'OK') == 0) return 1;    return 0;}function bbs_roam_ann_traverse_check($filename,$userid) {    if (!$userid) return -1;    $ret = bbs_roam_query('ann_traverse_check',array ($filename,$userid),0,$data,$err);    if ($ret < 0) return -1;    if ($ret == 1 && strcasecmp ($err,'OK') == 0) return 1;    return 0;}?>

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?