Просмотр файла wip-site-portal/src/ini.php

Размер файла: 8.55Kb
<?
function timer($mod=false){
	switch($mod){
		default:
			break;
		
		case 'start':
			$tmr=explode(' ', microtime());
			return substr($tmr[1],3,10)+$tmr[0];
			break;
			
		case 'stop':
			global $st;
			$tmr=explode(' ', microtime());
			$et=substr($tmr[1], 3, 10)+$tmr[0];
			echo '['.round($et-$st, 5).' sec.]';
			break;
	}
}

switch($_SERVER['SERVER_NAME']){
	
	default:
		#error_reporting(0); # Отключаем ошибки на сервера
		
		define('mysql_host', 'localhost');
		define('mysql_user', '');
		define('mysql_pass', '');
		define('mysql_db', '');
		break;
	
	case 'localhost':
		define('mysql_host', 'localhost');
		define('mysql_user', 'root');
		define('mysql_pass', '');
		define('mysql_db', '_chat');
		break;

}

$st=timer('start');

header('Expires: Mon, 26 Jul 1997 05:00:00 GMT');
header('Cache-Control: no-cache, must-revalidate');
header('Pragma: no-cache');
header('Last-Modified: '.gmdate('D, d M Y H:i:s').'GMT');

$addr=$_SERVER['REMOTE_ADDR'];

if(strlen($addr)>15){ //Для кривых REMOTE_ADDR
	$arr=explode(',',$addr);
	$addr=trim($arr[0]);
}

$agent=htmlspecialchars($_SERVER['HTTP_USER_AGENT'],ENT_QUOTES);

$ref=rand(100000, 999999);

$locs=array(
'love'=>'Знакомства',
'chat'=>'Чат',
'forums'=>'Форумы',
);


function connect(){
	$link = mysql_pconnect (mysql_host, mysql_user, mysql_pass);
	
	//mysql_query('SET NAMES "CP1251"');
	//mysql_query("SET collation_connection='cp1251_general_ci'");
	//mysql_query("SET collation_server='cp1251_general_ci'");
	mysql_query("SET character_set_client='utf8'");
	mysql_query("SET character_set_connection='utf8'");
	mysql_query("SET character_set_results='utf8'");
	//mysql_query("SET character_set_server='cp1251'");
	
	mysql_select_db(mysql_db);
	
	
	return($link);
}

function head($title,$timer=false,$timer_link=false,$center=false)
{
	header("Content-type:text/vnd.wap.wml");
	echo '<?xml version="1.0" encoding="UTF-8"?>'.
	'<!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.2//EN" "http://www.wapforum.org/DTD/wml12.dtd">'.
	'<wml><head><meta http-equiv="Cache-Control" content="no-cache" forua="true"/></head>';
	
	if ($timer and $timer_link) echo '<card id="main" title="'.$title.'" ontimer="'.$timer_link.'"><timer value="'.$timer.'"/>';
	else echo '<card id="main" title="'.$title.'">';
	
	if(!$center) echo '<p>';
	else echo '<p align="center">';
}
	

function foot(){
	echo '<br/><small>';
	$st=timer('stop');
	echo '</small></p></card></wml>';
}

# Выбор правильного падежа существительного в зависимости от числа
# $vars = 'case1:case2:case3';
# case1 - род. п., мн. ч
# case2 - род. п., ед. ч
# case3 - им. п., ед. ч
function word_case ($vars, $value){
	$words=explode(':', $vars);

	$s = $words[0];
	if ( ( $value%10==2 or $value%10==3 or $value%10==4 ) && (int)($value/10)!=1) $s = $words[1];
	if ($value%10==1 && (int)($value/10)!=1) $s = $words[2];
				
	return $s;
}

function login($fields='nick', $loc=false, $anon=false){
	
	@$uid=intval($_POST['uid']);
	@$nick=htmlspecialchars($_POST['nick'], ENT_QUOTES);
	@$pass=htmlspecialchars($_POST['pass'], ENT_QUOTES);
	
	$sid = false;
	@$sid = htmlspecialchars($_GET['sid'], ENT_QUOTES);
	if(!$sid and isset($_COOKIE['wip_session'])) @$sid=htmlspecialchars($_COOKIE['wip_session'], ENT_QUOTES);
	
	if(!$sid and (!$uid and !$pass) and (!$nick and !$pass)){
		if($anon){
			$GLOBALS['sid'] =false;
			return false;
		}
		
		head('Ошибка!', 15, 'login.php');
		echo '<small><b>Неверный вход!</b></small>';
		foot();
		exit();
	}
	
	if(($uid or $nick) and $pass){
		$select=mysql_query("select wip_users.id, wip_users.inv, $fields from wip_users where (wip_users.id='$uid' or wip_users.nick='$nick') and wip_users.pass='".md5($pass)."';");
		if(mysql_affected_rows()<1){
			if($anon){
				$GLOBALS['sid'] = false;
				return false;
			}
			
			head('Ошибка!',15,'index.php');
			echo '<small><b>Неверный вход!</b></small>';
			foot();
			exit();
		}
	}
	
	if($sid and (!$nick or !$pass)) {
		$select=mysql_query("select wip_users.id, wip_users.inv, wip_sess.uid, $fields from wip_users, wip_sess where wip_users.id=wip_sess.uid and wip_sess.sid='$sid';");
		if(mysql_affected_rows()<1){
			if($anon){
				$GLOBALS['sid'] =false;
				return false;
			}
			
			head('Ошибка!',15,'index.php');
			echo '<small><b>Неверная сессия!</b></small>';
			foot();
			exit();
		}
	}
	
	$res=mysql_fetch_assoc($select);
	
	# Проверки на бан:
	$bans=mysql_query("select wip_users.nick, wip_bans.time, wip_bans.reason from wip_bans, wip_users where wip_users.id=wip_bans.who and wip_bans.time>'".time()."' and wip_bans.uid='$res[id]' and wip_bans.loc='$loc';");
		
	if(mysql_affected_rows()>0){
		$bans_res=mysql_fetch_assoc($bans);
			
		//Определение оставшегося времени бана
		$str_diff=false;
		$diff=$bans_res['time']-time();
			
		if($diff>=3600){
			$hor=floor($diff/3600);
			if($hor!=0) $str_diff=$hor.' часов ';
		}
			
		if($diff>=60){
			$min=floor(($diff%3600)/60);
			if($min!=0) $str_diff.=$min.' минут ';
		}
			
		$sec=floor($diff%60);
		if($sec!=0) $str_diff.=$sec.' секунд ';
		////
		
		head('Вы забанены!');
		echo '<small>';
		echo '<b>Вы забанены!</b><br/>';
		echo '<b>Забанил:</b> '.$bans_res['nick'].'<br/>';
		echo '<b>Причина:</b> '.$bans_res['reason'].'<br/>';
		echo '<b>Осталось времени:</b> '.$str_diff.'<br/>';
		echo '<anchor>Назад<prev/></anchor><br/>';
		echo '</small>';
		foot();
		exit();
	}
	
	global $addr;
		
	$mask=explode('.',$addr);
	$mask=$mask[0].'.'.$mask[1].'.'.$mask[2];
	
	$bans=mysql_query("select id from wip_bans where (ip='$addr' or ip like '%".$mask."%') and loc='$loc';");

	if(mysql_affected_rows()>0){
		$bans_res=mysql_fetch_assoc($bans);

		if($anon){
			$GLOBALS['sid'] =false;
			return false;
		}

		head('Вы забанены!');
		echo '<small>';
		echo '<b>Вы забанены по IP!</b><br/>';
		echo '<anchor>Назад<prev/></anchor><br/>';
		echo '</small>';
		foot();
		exit();
	}
	
	if($loc){
		
		if($loc == 'forums') $bc = 'forum_cookie_ban';
		elseif($loc == 'chat') $bc = 'chat_cookie_ban';
			
		$ban_cookie = mysql_result(mysql_query("SELECT `".$bc."` FROM `wip_users` WHERE `id`='".$res['id']."';"), 0);
		
		if(!isset($_COOKIE[$loc.'_login']) and $ban_cookie==1){
			setcookie($loc.'_login', 'on', time()+31536000);
			$_COOKIE[$loc.'_login'] = 'on';
		}
		
		if(isset($_COOKIE[$loc.'_login']) and $ban_cookie==0){
			setcookie($loc.'_login', false, time()+31536000);
			$_COOKIE[$loc.'_login'] = false;
		}
		
		
	}
	####
	
	$select=mysql_query("select sid from wip_sess where uid='$res[id]';");
	if(mysql_affected_rows()>0){
		$sess=mysql_fetch_row($select);
		$sid=$sess[0];
		mysql_query("update wip_sess set uid='$res[id]', time='".time()."' where sid='$sid';");
	}
		
	else {
		$sid=substr(md5(mt_rand(10,100000000)),0,10);
		mysql_query("insert into wip_sess set uid='$res[id]', sid='$sid', time='".time()."';");
	}
	
	if(!$res['inv']) mysql_query("update wip_users set online='".time()."' where id='$res[id]';");
	else mysql_query("update wip_users set online='0' where id='$res[id]';");
	
	if(!isset($_COOKIE['wip_session']) or @$_COOKIE['wip_session']!=$sid){
		setcookie('wip_session', $sid, (time() + 999999));
	}
	
	$GLOBALS['sid']=$sid;
	return $res;
}

# Анонимус получает ID, идентифицируемый по IP/Soft/Cookie
function an_id(){
	global $agent, $addr;
	$an_id = false;
	
	$select = mysql_query("SELECT `id` FROM `wip_anonymouses` WHERE `ip`='".$addr."' AND `soft`='".$agent."';");
	
	if(mysql_affected_rows()>0) $an_id = mysql_result($select, 0);
	
	elseif(isset($_COOKIE['an_id'])) {
		mysql_query("SELECT `id` FROM `wip_anonymouses` WHERE `id`='".intval($_COOKIE['an_id'])."';");
		if(mysql_affected_rows()>0) $an_id = intval($_COOKIE['an_id']);
		
		mysql_query("UPDATE `wip_anonymouses` SET `ip`='".$addr."', `soft`='".$agent."' WHERE `id`='".$an_id."';");
	}
	
	if($an_id) mysql_query("UPDATE `wip_anonymouses` SET `time`='".time()."' WHERE `id`='".$an_id."';");
	
	if(!$an_id) {
		mysql_query("INSERT INTO `wip_anonymouses` SET `ip`='".$addr."', `soft`='".$agent."', `time`='".time()."';");
		$an_id = mysql_insert_id();
	}
	
	setcookie('an_id', $an_id, time() + 10000000);
	
	return $an_id;
}

?>