<?
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;
}
?>