Просмотр файла gbs/gb.php

Размер файла: 18.6Kb
<?
require('./inc/configuration.php');
require('./inc/functions.php');

$go = isset($_GET['do']) ? $_GET['do'] : 'index';
$id = isset($_GET['id']) ? (int)$_GET['id'] : 0;

if($go != 'index' && $go != 'write' && $go != 'citate' && $go != 'mail' && $go != 'url' && $go != 'gb_codes' && $go != 'smiles') $go = 'xakep';

if(mysql_num_rows(mysql_query('SELECT `id` FROM `books` WHERE `id` = '.$id.';')) == 0)
{
	error('Гостевая с таким ID не найдена!');
}

if(mysql_num_rows(mysql_query('SELECT `id` FROM `disarmed` WHERE `book` = '.$id.' and `ip` = "'.$_SERVER['REMOTE_ADDR'].'" and `expired` > UNIX_TIMESTAMP();')) > 0)
{
	error('Доступ заблокирован.');
}

if(mysql_num_rows(mysql_query('SELECT `id` FROM `disarmed` WHERE `book` = '.$id.' and `ua` = "'.mysql_escape_string($_SERVER['HTTP_USER_AGENT']).'" and `expired` > UNIX_TIMESTAMP();')) > 0)
{
	error('Доступ заблокирован.');
}

$changes = get_config($id);

switch($go)
{
	case 'index':
	echo title(htmlspecialchars(stripslashes($changes['title']))).
	'<div class="header">'.htmlspecialchars(stripslashes($changes['headertitle'])).'</div>'.
	'<!-- Меню -->'.
	'<div class="buttons">'.
	'<div class="hr_up"></div>'.
	'<a href="gb.php?id='.$id.'&amp;do=write">Написать</a>| <a href="gb.php?id='.$id.'">Обновить</a> | <a href="gb.php?id='.$id.'&amp;do=gb_codes">GB коды</a> | <a href="gb.php?id='.$id.'&amp;do=smiles">Смайлы</a>'. 
	'<div class="hr_down"></div>'.
	'</div>'.
	'<!-- Меню -->';
	/* ^ HEADER ^*/
	if(mysql_num_rows(mysql_query('SELECT `id` FROM `msg` WHERE `book` = '.$id.';')) == 0)
	{
		echo '<div class="msg">Гостевая книга пуста. Становись первым!</div>';
	}
	else
	{
		$all = mysql_num_rows(mysql_query('SELECT `id` FROM `msg` WHERE `book` = '.$id.';'));
		$pnumber = $changes['elementsonpage'];
		$page=(isset($_GET['page'])) ? (int)$_GET['page'] : 1;
		$num_pages=ceil($all/$pnumber);
		$start=$page*$pnumber-$pnumber;
		
		if ($page > $num_pages || $page < 1)
		{
			$page=1;
    		$start=0;
		}
		
		$q = mysql_query('SELECT * FROM `msg` WHERE `book` = '.$id.' ORDER BY `id` DESC LIMIT '.($start).','.($start + $pnumber).';');
		
		while($r = mysql_fetch_array($q))
		{
			/* PRINT MESSAGES */
			
			if($r['type'] == 1) $nickname = htmlspecialchars(stripslashes($r['nick']));
			if($r['type'] == 2) $nickname = '<span style="color: #0099FF;">Администратор</span>';
			if($r['type'] == 3) $nickname = '<span style="color: #BB0000;">Системное</span>';
			if($r['type'] == 4) $nickname = '<span style="color: #660000;">Владелец сервиса</span>';
			
			$url = !empty($r['url']) ? '<a href="gb.php?id='.$id.'&amp;do=url&amp;link='.urlencode($r['url']).'"><img src="img/url.gif" alt="Сайт" /></a>' : '';
			$mail = !empty($r['mail']) ? '<a href="gb.php?id='.$id.'&amp;do=mail&amp;msg='.$r['id'].'"><img src="img/e-mail.gif" alt="E-Mail пользователя" /></a>' : '';
			$citate = '<a href="gb.php?id='.$id.'&amp;do=citate&amp;msg='.$r['id'].'"><img src="img/citate.gif" alt="." /></a>';
			$msg = GB_codes(htmlspecialchars(stripslashes($r['msg'])));
			$msg=str_replace(":@","<img src=\"smile/angry.gif\" alt=\":@\"/>",$msg);
			$msg=str_replace("B)","<img src=\"smile/cool.gif\" alt=\"B)\"/>",$msg);
			$msg=str_replace(":|","<img src=\"smile/frown.gif\" alt=\":|\"/>",$msg);
			$msg=str_replace(":D","<img src=\"smile/grin.gif\" alt=\":D\"/>",$msg);
			$msg=str_replace(":p","<img src=\"smile/pfft.gif\" alt=\":p\"/>",$msg);
			$msg=str_replace(":(","<img src=\"smile/sad.gif\" alt=\":(\"/>",$msg);
			$msg=str_replace(":o","<img src=\"smile/shock.gif\" alt=\":o\"/>",$msg);
			$msg=str_replace(":)","<img src=\"smile/smile.gif\" alt=\":)\"/>",$msg);
			$msg=str_replace(";)","<img src=\"smile/wink.gif\" alt=\";)\"/>",$msg);
			echo '<div class="msg">'.
			'<div class="nick"><img src="img/punkt.gif" alt="." />'.
			$nickname.', '.date('d/m/Y H:i',$r['date']).
			'</div>'.
			'<div class="text">'.
			$msg.
			'</div>'.
			'<div class="icons">'.
			$url.
			$mail.
			$citate.
			'</div>'.
			'</div>';
		}
		
		echo '<div class="buttons">'.
		'<div class="hr_up"></div>';
    	for($pr = '', $i =1; $i <= $num_pages; $i++)
    	{
        echo $pr=(($i == 1 || $i == $num_pages || abs($i-$page) < 2) ? ($i == $page ? " [$i] " : ' <a href="gb.php?id='.$id.'&amp;page='.$i.'">'.$i.'</a> ') : (($pr == ' ... ' || $pr == '')? '' : ' ... '));
    	}
		echo '<div class="hr_down"></div></div>';
	}
	/* v FOOTER v */
	echo '<a href="'.htmlspecialchars(stripslashes($changes['url'])).'">На главную</a>'.
	the_end();
	break;
	
	case 'write':
	if(isset($_POST['nickname']) && isset($_POST['msg']) && isset($_POST['captcha']))
	{
		if(empty($_POST['nickname']) or empty($_POST['msg']) or empty($_POST['captcha']))
		{
			error('Вы не заполнили какое-то из обязательных полей!');
		}
		
		if($_POST['captcha'] != $_SESSION['code'])
		{
			error('Введенный код с картинки не совпадает с реальным! Вы ошиблись..');
		}
		
		if(preg_match('#[^А-яЁёA-z0-9=-_\+\)\(\[\]@!\?\^~]{5,20}+#iSu',$_POST['nickname'])) 
		{
			error('Ник содержит &quot;плохие&quot; символы! Или не превышает лимит в 5 символов, или наоборот состоит больше чем из 20 букв.');
		}
		
		if(preg_match('#(http://|wap\.|www\.)[-a-z0-9_\.]+([-a-z0-9_]+\.(html|php|wml|pl|cgi))?([-a-z0-9_:@&\?=+\.!/~*\'%$]+)?#i',$_POST['msg']))
		{
			error('В Вашем сообщении находится что-то плохое. Не знаете что? ;)');
		}
		
		if(!empty($_POST['email']) && !preg_match('#[0-9a-z_]+@[0-9a-z_^\-.]+\.[a-z]{2,4}#i',$_POST['email']))
		{
			error('E-mail указан не верно! Он должен быть вида [email protected]');
		}
		
		if(!empty($_POST['url']) && $_POST['url'] != 'http://' && !preg_match('#http://[-a-z0-9_\.]+([-a-z0-9_]+\.(html|php|wml|pl|cgi))?([-a-z0-9_:@&\?=+\.!/~*\'%$]+)?#i',$_POST['url']))
		{
			error('Ссылка на Ваш сайт указана не верно..');
		}
		
		if($_POST['url'] == 'http://') $_POST['url'] = '';
		
		mysql_query('INSERT INTO `msg` SET `nick` = "'.mysql_escape_string($_POST['nickname']).'", `msg` = "'.mysql_escape_string($_POST['msg']).'", `url` = "'.mysql_escape_string($_POST['url']).'", `mail` = "'.mysql_escape_string($_POST['email']).'", `date` = UNIX_TIMESTAMP(), `ip` = "'.$_SERVER['REMOTE_ADDR'].'", `ua` = "'.mysql_escape_string($_SERVER['HTTP_USER_AGENT']).'", `book` = '.$id.';') or die(error('При добавлении сообщения произошла ошибка!'));
		
		unset($_SESSION['code']);
		
		echo title('Сообщение добавлено.').
		'<div class="header">Спасибо что пишите..</div>'.
		'<div class="msg">'.
		'<div class="nick">Ваше сообщение было добавлено.</div>'.
		'<div class="text">'.
		htmlspecialchars(stripslashes($changes['msgonadd'])).'<br />'.
		'</div>'.
		'<div class="icons">'.
		'<a href="gb.php?id='.$id.'">Назад в гостевую</a><br />'.
		'</div>'.
		'</div>'.
		the_end();
		
		die();
	}
	echo title('Пишим сообщение').
	'<div class="header">Для добавления сообщения нужно заполнить все поля помеченные звездочкой!</div>'.
	'<form action="gb.php?do=write&amp;'.SID.'&amp;id='.$id.'" method="POST">'.
	'<div class="msg">'.
	'<div class="nick">Написанное Вами может быть удалено из эфира, поскольку это личное право администратора.</div>'.
	'<div class="text">'.
	'<u>Ваш Ник</u> : <b>*</b><br />'.
	'<input type="text" name="nickname" /><br />'.
	'<u>Ваш E-Mail</u> :<br />'.
	'<input type="text" name="email" /><br />'.
	'<u>Ваш сайт</u> :<br />'.
	'<input type="text" name="url" value="http://" /><br />'.
	'<u>Текст сообщения</u> : <b>*</b><br />'.
	'<textarea name="msg" /><br />'.
	'Код с картинки : <b>*</b><br />'.
	'<img src="captcha.php?'.SID.'" alt="." /><br />'.
	'<input type="text" name="captcha" /><br />'.
	'Проверьте правильность заполненых данных, и нажмите на кнопку &quot;Добавить&quot;.<br />'.
	'</div>'.
	'<div class="icons"><input type="submit" value="Добавить" /></div>'.
	'</div>'.
	'</form>'.
	the_end();
	break;
	
	case 'citate':
	$msg = isset($_GET['msg']) ? intval($_GET['msg']) : 0;
	
	if(mysql_num_rows(mysql_query('SELECT `id` FROM `msg` WHERE `book` = '.$id.' and `id` = '.$msg.';')) == 0)
	{
		error('Сообщение не найдено!');
	}
	
	if(isset($_POST['nickname']) && isset($_POST['citate']) && isset($_POST['captcha']))
	{
		if(empty($_POST['nickname']) or empty($_POST['citate']) or empty($_POST['captcha']))
		{
			error('Вы не заполнили какое-то из обязательных полей!');
		}
		
		if($_POST['captcha'] != $_SESSION['code'])
		{
			error('Введенный код с картинки не совпадает с реальным! Вы ошиблись..');
		}
		
		if(preg_match('#[^А-яЁёA-z0-9=-_\+\)\(\[\]@!\?\^~]{5,20}+#iSu',$_POST['nickname'])) 
		{
			error('Ник содержит &quot;плохие&quot; символы! Или не превышает лимит в 5 символов, или наоборот состоит больше чем из 20 букв.');
		}
		
		if(preg_match('#(http://|wap\.|www\.)[-a-z0-9_\.]+([-a-z0-9_]+\.(html|php|wml|pl|cgi))?([-a-z0-9_:@&\?=+\.!/~*\'%$]+)?#i',$_POST['msg']))
		{
			error('В Вашем сообщении находится что-то плохое. Не знаете что? ;)');
		}
		
		if(!empty($_POST['email']) && !preg_match('#[0-9a-z_]+@[0-9a-z_^\-.]+\.[a-z]{2,4}#i',$_POST['email']))
		{
			error('E-mail указан не верно! Он должен быть вида [email protected]');
		}
		
		if(!empty($_POST['url']) && $_POST['url'] != 'http://' && !preg_match('#http://[-a-z0-9_\.]+([-a-z0-9_]+\.(html|php|wml|pl|cgi))?([-a-z0-9_:@&\?=+\.!/~*\'%$]+)?#i',$_POST['url']))
		{
			error('Ссылка на Ваш сайт указана не верно..');
		}
		
		if($_POST['url'] == 'http://') $_POST['url'] = '';
		
		mysql_query('INSERT INTO `msg` SET `nick` = "'.mysql_escape_string($_POST['nickname']).'", `msg` = "[quote]'.mysql_result(mysql_query('SELECT `msg` FROM `msg` WHERE `id` = '.$msg.';'),0).'[/quote]'.mysql_escape_string($_POST['citate']).'", `url` = "'.mysql_escape_string($_POST['url']).'", `mail` = "'.mysql_escape_string($_POST['email']).'", `date` = UNIX_TIMESTAMP(), `ip` = "'.$_SERVER['REMOTE_ADDR'].'", `ua` = "'.mysql_escape_string($_SERVER['HTTP_USER_AGENT']).'", `book` = '.$id.';') or die(error('При добавлении сообщения произошла ошибка!'));
		
		unset($_SESSION['code']);
		
		echo title('Сообщение добавлено.').
		'<div class="header">Спасибо что пишите..</div>'.
		'<div class="msg">'.
		'<div class="nick">Ваше сообщение было добавлено.</div>'.
		'<div class="text">'.
		htmlspecialchars(stripslashes($changes['msgonadd'])).'<br />'.
		'</div>'.
		'<div class="icons">'.
		'<a href="gb.php?id='.$id.'">Назад в гостевую</a><br />'.
		'</div>'.
		'</div>'.
		the_end();
		
		die();
	}
	
	echo title('Цитируем сообщение').
	'<div class="header">Для добавления сообщения нужно заполнить все поля помеченные звездочкой!</div>'.
	'<form action="gb.php?do=citate&amp;'.SID.'&amp;id='.$id.'&amp;msg='.$msg.'" method="POST">'.
	'<div class="msg">'.
	'<div class="nick">Написанное Вами может быть удалено из эфира, поскольку это личное право администратора.</div>'.
	'<div class="text">'.
	'<u>Ваш Ник</u> : <b>*</b><br />'.
	'<input type="text" name="nickname" /><br />'.
	'<u>Ваш E-Mail</u> :<br />'.
	'<input type="text" name="email" /><br />'.
	'<u>Ваш сайт</u> :<br />'.
	'<input type="text" name="url" value="http://" /><br />'.
	'<u>Текст сообщения</u> : <b>*</b><br />'.
	'<textarea name="citate" /><br />'.
	'Код с картинки : <b>*</b><br />'.
	'<img src="captcha.php?'.SID.'" alt="." /><br />'.
	'<input type="text" name="captcha" /><br />'.
	'Проверьте правильность заполненых данных, и нажмите на кнопку &quot;Добавить&quot;.<br />'.
	'</div>'.
	'<div class="icons"><input type="submit" value="Добавить" /></div>'.
	'</div>'.
	'</form>'.
	the_end();
	break;
	
	case 'mail':
	$msg = isset($_GET['msg']) ? (int) $_GET['msg'] : 0;
	
	if(mysql_num_rows(mysql_query('SELECT `id` FROM `msg` WHERE `book` = '.$id.' and `id` = '.$msg.' and `mail` != "";')) == 0)
	{
		error('Автор этого сообщения не оставлял e-mail или этого сообщения не существует вообще.');
	}
	
	if(isset($_POST['message']))
	{
		if(empty($_POST['message']))
		{
			error('ВПИШИТЕ СООБЩЕНИЕ!!');
		}
		
		mail(mysql_result(mysql_query('SELECT `id` FROM `msg` WHERE `book` = '.$id.' and `id` = '.$msg.';'),0),'Письмо с гостевой книги сайта '.$changes['url'],$_POST['message']);
		
		error('Сообщение было отправлено!');
		
		die();
	}
	
	echo title('Отправляем сообщение на e-mail').
	'<div class="header">Шлём письмо пользователю!</div>'.
	'<div class="msg">'.
	'<div class="nick">Заполните сообщение и нажмите на кнопку &quot;отправить&quot;!</div>'.
	'<div class="text">'.
	'<form action="gb.php?id='.$id.'&amp;do=mail&amp;msg='.$msg.'" method="POST">'.
	'<b>Текст сообщения</b>:<br />'.
	'<textarea name="message" /><br />'.
	'<input type="submit" value="Отослать" />'.
	'</form>'.
	'</div>'.
	'<div class="icons">'.
	'<a href="gb.php?id='.$id.'">Назад в гостевую</a><br />'.
	'</div>'.
	'</div>'.
	the_end();
	
	break;
	
	case 'url':
	
	if(!isset($_GET['url']) or !preg_match('#http://[-a-z0-9_\.]+([-a-z0-9_]+\.(html|php|wml|pl|cgi))?([-a-z0-9_:@&\?=+\.!/~*\'%$]+)?#i',$_GET['url']))
	{
		$url = 'http://wap.j3m.ru/';
	}else{
		$url = urldecode($_GET['url']);
	}
	
	header("Content-type: text/vnd.wap.wml; charset=utf-8");
	header("Last-Modified: ".gmdate("D, d M Y H:i:s")." GMT");
	header("Cache-Control: no-cache, must-relative");
	
	echo '<?xml version="1.0" encoding="utf-8"?>'.
	'<!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN"'.
	' "http://www.wapforum.org/DTD/wml_1.1.xml">'.
	'<wml>'.
	'<head>'.
	'<meta http-equiv="Cache-Control" content="no=cache" forua="true" />'.
	'</head>'.
	'<card id="go" title="Переходим.." ontimer="'.$url.'"><timer value="20" />'.
	'<p align="center">'.
	'Безопасный переход по ссылке :<br/>'.
	'<a href="'.htmlspecialchars(stripslashes($url)).'">'.htmlspecialchars(stripslashes($url)).'</a>'.
	'</p></card></wml>';
	
	
	break;
	
	case 'gb_codes':
	echo title('GB коды').
	'<div class="header">Выделяйся!</div>'.
	'<div class="msg">'.
	'<div class="nick">На этой странице Вы можете узнать как можно подчеркнуть сообщение, и выделить его из всех окружающих, с помощью GB кодов. ;)</div>'.
	'<div class="text">'.
	'Ниже Вы видите пример того, что можно делать с помощью этих кодов. Коды можно обьединять.<br />'.
	'[b]текст[/b] - <b>текст</b><br />'.
	'[u]текст[/u] - <u>текст</u><br />'.
	'[i]текст[/i] - <i>текст</i><br />'.
	'[url]http://wap.j3m.ru/[/url] - '.GB_codes('[url]http://wap.j3m.ru/[/url]').'<br />'.
	'[quote]текст =)[/quote] - '.GB_codes('[quote]текст =)[/quote]').'(^ один результат от кода. ^)<br />'.
	'</div>'.
	'<div class="icons">'.
	'<a href="gb.php?id='.$id.'">Назад в гостевую</a><br />'.
	'</div>'.
	'</div>'.
	the_end();
	break;
	
	case 'smiles':
	echo title('Смайлики').
	'<div class="header">Выделяй эмоции!</div>'.
	'<div class="msg">'.
	'<div class="nick">На этой странице Вы можете узнать как можно подчеркнуть сообщение, и выделить его из всех окружающих, с помощью смайлов. :-)</div>'.
	'<div class="text">'.
	'Ниже Вы видите справа значение для смайла, а слева его картинку.<br />';
	echo '<img src="smile/smile.gif" alt=":)"/> :)<br/>';
	echo '<img src="smile/wink.gif" alt=";)"/> ;)<br/>';
	echo '<img src="smile/frown.gif" alt=":|"/> :|<br/>';
	echo '<img src="smile/sad.gif" alt=":("/> :(<br/>';
	echo '<img src="smile/shock.gif" alt=":o"/> :o<br/>';
	echo '<img src="smile/pfft.gif" alt=":p"/> :p<br/>';
	echo '<img src="smile/cool.gif" alt="B)"/> B)<br/>';
	echo '<img src="smile/grin.gif" alt=":D"/> :D<br/>';
	echo '<img src="smile/angry.gif" alt=":@"/> :@<br/>'.
	'</div>'.
	'<div class="icons">'.
	'<a href="gb.php?id='.$id.'">Назад в гостевую</a><br />'.
	'</div>'.
	'</div>'.
	the_end();
	break;
	
	case 'xakep':
	write_log();
	echo title('by DikS..').
	'<div class="header">&quot;Чешащимся ручкам&quot; посвящается..</div>'.
	'<div class="msg">'.
	'Ну что мой друг, засветился? Поздравляю тебя, теперь ты и твои данные в журнальчеке безопасности. А теперь я тебе подкину пищу для размышлений. Подумай, а стоит-ли заниматься этой байдой дальше? :-)<br />'.
	'Наверное думаешь типа блефую?<br />'.
	'Конечно блефую, только в браузере смени index.php?do='.htmlspecialchars($_GET['do']).' на security_log.txt и почитай, ты там наверное на последней строчке.))'.
	'<div class="icons">'.
	'<a href="index.php">Сервис гостевых книг</a><br />'.
	'</div>'.
	'</div>'.
	the_end();
	break;
}


?>