⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 index.php

📁 phpwind最新php论坛源码
💻 PHP
字号:
<?php
!function_exists('readover') && exit('Forbidden');
$wind_in='bank';
require_once(D_P.'data/bbscache/bk_config.php');

$groupid == 'guest' && Showmsg('not_login');
$bk_open == '0'     && Showmsg('bk_close');

list($db_moneyname,$db_moneyunit,$db_rvrcname,$db_rvrcunit,$db_creditname,$db_creditunit)=explode("\t",$db_credits);
$bankdb   = $db->get_one("SELECT deposit,startdate,ddeposit,dstartdate FROM pw_memberinfo WHERE uid='$winduid'");
require_once(R_P.'require/credit.php');
$creditdb = GetCredit($winduid);
InitGP(array('action'));

if (empty($action)) {

	$showdb = array();
	foreach ($creditdb as $key => $value) {
		$_CREDITDB[$key] && $showdb[$key] = array($value[0],$value[1]);
	}
	if (!$bankdb) {
		$bankdb['deposit']=$bankdb['ddeposit']=$bankdb['startdate']=$bankdb['dstartdate']=0;
	}
	if ($bankdb['startdate'] && $timestamp>$bankdb['startdate']) {
		$accrual=round((floor(($timestamp-$bankdb['startdate'])/86400))*$bankdb['deposit']*$bk_rate/100);
	} else {
		$accrual=0;
	}
	$ddates=floor(($timestamp-$bankdb['dstartdate'])/($bk_ddate*30*86400));
	if ($bankdb['dstartdate'] && $ddates) {
		$daccrual=round($ddates*$bk_ddate*30*$bankdb['ddeposit']*$bk_drate/100);
	} else {
		$daccrual=0;
	}

	$allmoney = $winddb['money']+$bankdb['deposit']+$bankdb['ddeposit'];
	if (!$bankdb['deposit'] || !$bankdb['startdate']) {
		$bankdb['savetime']="--";
	} else {
		$bankdb['savetime']=get_date($bankdb['startdate']);
	}
	if (!$bankdb['ddeposit'] || !$bankdb['dstartdate']) {
		$bankdb['dsavetime']="--";
	} else {
		$bankdb['dsavetime']=get_date($bankdb['dstartdate'],'Y-m-d');
		$endtime=get_date($bankdb['dstartdate']+$bk_ddate*30*86400,'Y-m-d');
	}
	foreach ($_CREDITDB as $key=>$value) {
		if (!$showdb[$key]) {
			$showdb[$key][0]=$value[0];
			$showdb[$key][1]=0;
		}
	}
	!$bk_num && $bk_num=10;
	if (!$bk_per || $timestamp - @filemtime(D_P."data/bbscache/bank_sort.php") > $bk_per*3600) {
		$_DESPOSTDB=array();
		$query=$db->query("SELECT i.uid,m.username,i.deposit,i.startdate FROM pw_memberinfo i LEFT JOIN pw_members m ON m.uid=i.uid ORDER BY i.deposit DESC LIMIT $bk_num");
		while ($deposit=$db->fetch_array($query)) {
			if ($deposit['deposit']) {
				$deposit['startdate']=get_date($deposit['startdate']);
				$_DESPOSTDB[]=array($deposit['uid'],$deposit['username'],$deposit['deposit'],$deposit['startdate']);
			}
		}
		$_DDESPOSTDB=array();
		$query=$db->query("SELECT i.uid,username,ddeposit,dstartdate FROM pw_memberinfo i LEFT JOIN pw_members m ON m.uid=i.uid ORDER BY ddeposit DESC LIMIT $bk_num");
		while ($deposit=$db->fetch_array($query)) {
			if ($deposit['ddeposit']) {
				$deposit['dstartdate']=get_date($deposit['dstartdate']);
				$_DDESPOSTDB[]=array($deposit['uid'],$deposit['username'],$deposit['ddeposit'],$deposit['dstartdate']);
			}
		}
		$wirtedb=savearray('_DESPOSTDB',$_DESPOSTDB);
		$wirtedb.="\n".savearray('_DDESPOSTDB',$_DDESPOSTDB);
		writeover(D_P.'data/bbscache/bank_sort.php',"<?php\r\n".$wirtedb.'?>');
	}
	include(D_P."data/bbscache/bank_sort.php");
	require_once PrintHack('index');footer();
}

if ($_POST['action'] && $bk_timelimit && ($timestamp-$bankdb['startdate']<$bk_timelimit || $timestamp-$bankdb['dstartdate']<$bk_timelimit)) {
	Showmsg('bk_time_limit');
}

if ($_POST['action']=='save') {

	InitGP(array('savemoney','btype'));
	if (!is_numeric($savemoney) || $savemoney <= 0) {
		Showmsg('bk_save_fillin_error');
	}

	//$db->query("LOCK TABLES pw_memberdata WRITE,pw_memberinfo WRITE");
	$lockfile = D_P.'data/bbscache/lock_bank.txt';
	$fp = fopen($lockfile,'wb+');
	flock($fp,LOCK_EX);

	$rt=$db->get_one("SELECT money FROM pw_memberdata WHERE uid='$winduid'");
	$savemoney>$rt['money'] && Showmsg('bk_save_error');
	$btype != 1 && $btype != 2 && Showmsg('undefined_action');
	banksave($winduid,$savemoney,$bankdb,$btype);

	fclose($fp);
	//$db->query("UNLOCK TABLES");

	require_once(R_P.'require/writelog.php');
	$log = array(
		'type'      => 'bk_save',
		'username1' => $windid,
		'username2' => '',
		'field1'    => $savemoney,
		'field2'    => $winduid,
		'field3'    => '',
		'descrip'   => 'bk_save_descrip_'.$btype,
		'timestamp' => $timestamp,
		'ip'        => $onlineip,
	);
	writeforumlog($log);
	refreshto($basename,'bank_savesuccess');

} elseif ($_POST['action']=='draw') {

	InitGP(array('drawmoney','btype'));
	if (!is_numeric($drawmoney) || $drawmoney <= 0) {
		Showmsg('bk_draw_fillin_error');
	}
	$btype != 1 && $btype != 2 && Showmsg('undefined_action');

	//$db->query("LOCK TABLES pw_memberdata WRITE,pw_memberinfo WRITE");
	$lockfile = D_P.'data/bbscache/lock_bank.txt';
	$fp = fopen($lockfile,'wb+');
	flock($fp,LOCK_EX);

	$bankdb   = $db->get_one("SELECT deposit,startdate,ddeposit,dstartdate FROM pw_memberinfo WHERE uid='$winduid'");
	if ($btype==1) {
		if ($drawmoney>$bankdb['deposit']) Showmsg('bk_draw_error');
	} else {
		if ($drawmoney>$bankdb['ddeposit']) Showmsg('bk_draw_error');
	}
	bankdraw($winduid,$drawmoney,$bankdb,$btype);

	fclose($fp);
	//$db->query("UNLOCK TABLES");

	require_once(R_P.'require/writelog.php');
	$log = array(
		'type'      => 'bk_draw',
		'username1' => $windid,
		'username2' => '',
		'field1'    => $drawmoney,
		'field2'    => $winduid,
		'field3'    => '',
		'descrip'   => 'bk_draw_descrip_'.$btype,
		'timestamp' => $timestamp,
		'ip'        => $onlineip,
	);
	writeforumlog($log);
	refreshto($basename,'bank_drawsuccess');

} elseif ($_POST['action']=='virement') {

	require_once(R_P.'require/msg.php');
	if ($bk_virement!=1) {
		Showmsg('bk_virement_close');
	}
	InitGP(array('to_money','pwuser','memo'));
	if (!is_numeric($to_money) || $to_money <= 0 || $to_money < $bk_virelimit) {
		Showmsg('bk_virement_count_error');
	}
	$memo = Char_cv($memo);
	strlen($memo)>255 && $memo = substrs($memo,255);
	$pwuser = trim($pwuser);
	$userdb = $db->get_one("SELECT uid,username FROM pw_members WHERE username='$pwuser'");
	if (!$pwuser || !$userdb) {
		$errorname = Char_cv($pwuser);
		Showmsg('user_not_exists');
	}
	if ($userdb['uid']==$winduid) {
		Showmsg('bk_virement_error');
	}
	$to_money=floor($to_money);
	$to_shouxu=round($bk_virerate*$to_money/100);
	$needmoney=$to_money+$to_shouxu;

	//$db->query("LOCK TABLES pw_memberdata WRITE,pw_memberinfo WRITE");
	$lockfile = D_P.'data/bbscache/lock_bank.txt';
	$fp = fopen($lockfile,'wb+');
	flock($fp,LOCK_EX);

	$bankdb   = $db->get_one("SELECT deposit,startdate,ddeposit,dstartdate FROM pw_memberinfo WHERE uid='$winduid'");
	if ($needmoney>$bankdb['deposit']+$bankdb['ddeposit']) {
		Showmsg('bk_no_enough_deposit');
	}
	$to_bankdb = $db->get_one("SELECT deposit,startdate FROM pw_memberinfo WHERE uid='$userdb[uid]'");
	if ($needmoney<=$bankdb['deposit']) {
		bankdraw($winduid,$needmoney,$bankdb,1,0);
	} else {
		bankdraw($winduid,$bankdb['deposit'],$bankdb,1,0);
		bankdraw($winduid,$needmoney-$bankdb['deposit'],$bankdb,2,0);
	}
	banksave($userdb['uid'],$to_money,$to_bankdb,1,0);

	fclose($fp);
	//$db->query("UNLOCK TABLES");

	$message = array($pwuser,0,'virement_title',$timestamp,'virement_content');
	writenewmsg($message,1);
	require_once(R_P.'require/writelog.php');
	$log = array(
		'type'      => 'bk_vire',
		'username1' => $windid,
		'username2' => $pwuser,
		'field1'    => $to_money,
		'field2'    => $winduid,
		'field3'    => $userdb['uid'],
		'descrip'   => 'bk_vire_descrip',
		'timestamp' => $timestamp,
		'ip'        => $onlineip,
	);
	writeforumlog($log);
	refreshto($basename,'bank_viresuccess');

} elseif ($action=='log') {

	require_once GetLang('log');
	include_once(R_P.'require/forum.php');
	InitGP(array('type','page','to'));
	$sqladd = '';
	$select = array();
	if ($type && in_array($type,array('bk_save','bk_draw','bk_vire','bk_credit'))) {
		$sqladd = "AND type='$type'";
		$select[$type] = "selected";
	}
	(!is_numeric($page) || $page < 1) && $page = 1;
	$sqlfiled = $to ? 'username2' : 'username1';

	$limit = "LIMIT ".($page-1)*$db_perpage.",$db_perpage";
	$rt    = $db->get_one("SELECT COUNT(*) AS sum FROM pw_forumlog WHERE type LIKE 'bk\_%' AND $sqlfiled='$windid' $sqladd");
	$pages = numofpage($rt['sum'],$page,ceil($rt['sum']/$db_perpage),"$basename&action=log&type=$type&");
	$query = $db->query("SELECT * FROM pw_forumlog WHERE type LIKE 'bk\_%' AND $sqlfiled='$windid' $sqladd ORDER BY id DESC $limit");
	while ($rt = $db->fetch_array($query)) {
		$rt['date']   = get_date($rt['timestamp']);
		$rt['descrip']= str_replace(array('[b]','[/b]'),array('<b>','</b>'),$rt['descrip']);
		$logdb[] = $rt;
	}
	require_once PrintHack('index');footer();
}

function banksave($uid,$money,$bankdb,$type,$vire=1) {
	global $db,$timestamp,$bk_rate,$bk_ddate,$bk_drate;

	$vire && $db->update("UPDATE pw_memberdata SET money=money-'$money' WHERE uid='$uid'",0);
	if ($type==1) {
		if ($bankdb['startdate'] && $timestamp>$bankdb['startdate']) {
			$accrual=round((floor(($timestamp-$bankdb['startdate'])/86400))*$bankdb['deposit']*$bk_rate/100);//银行利息
		} else {
			$accrual=0;
		}
		if ($bankdb) {
			$db->update("UPDATE pw_memberinfo SET deposit=deposit+'$money'+'$accrual',startdate='$timestamp' WHERE uid='$uid'");
		} else {
			$db->update("INSERT INTO pw_memberinfo SET uid='$uid', deposit='$money',startdate='$timestamp'");
		}
	} else {
		$ddates=floor(($timestamp-$bankdb['dstartdate'])/($bk_ddate*30*86400));
		if ($bankdb['dstartdate'] && $ddates) {
			$daccrual=round($ddates*$bk_ddate*30*$bankdb['ddeposit']*$bk_drate/100);
		} elseif ($bankdb['dstartdate'] && !$ddates) {
			$daccrual=round((floor(($timestamp-$bankdb['dstartdate'])/86400))*$bankdb['ddeposit']*$bk_rate/100);
		} else {
			$daccrual=0;
		}
		if ($bankdb) {
			$db->update("UPDATE pw_memberinfo SET ddeposit=ddeposit+'$money'+'$daccrual',dstartdate='$timestamp' WHERE uid='$uid'");
		} else {
			$db->update("INSERT INTO pw_memberinfo SET uid='$uid', ddeposit='$money',dstartdate='$timestamp'");
		}
	}
}

function bankdraw($uid,$money,$bankdb,$type,$vire=1) {
	global $db,$timestamp,$bk_rate,$bk_ddate,$bk_drate;
	if ($type==1) {
		if ($bankdb['startdate'] && $timestamp>$bankdb['startdate']) {
			$accrual=round((floor(($timestamp-$bankdb['startdate'])/86400))*$bankdb['deposit']*$bk_rate/100);
		} else {
			$accrual=0;
		}
		$db->update("UPDATE pw_memberinfo SET deposit=deposit-'$money'+'$accrual',startdate='$timestamp' WHERE uid='$uid'",0);
	} else {
		$ddates=floor(($timestamp-$bankdb['dstartdate'])/($bk_ddate*30*86400));
		if ($bankdb['dstartdate'] && $ddates) {
			$daccrual=round($ddates*$bk_ddate*30*$bankdb['ddeposit']*$bk_drate/100);
		} else {
			$daccrual=0;
		}
		$db->update("UPDATE pw_memberinfo SET ddeposit=ddeposit-'$money'+'$daccrual',dstartdate='$timestamp' WHERE uid='$uid'",0);
	}
	$vire && $db->update("UPDATE pw_memberdata SET money=money+'$money' WHERE uid='$uid'");
}

function savearray($name,$array) {
	$arraydb="\$$name=array(\r\n\t\t";
	foreach ($array as $value1) {
		$arraydb.='array(';
		foreach ($value1 as $value2) {
			$arraydb.='"'.addslashes($value2).'",';
		}
		$arraydb.="),\r\n\t\t";
	}
	$arraydb.=");\r\n";
	return $arraydb;
}
?>

⌨️ 快捷键说明

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