Дополнительные BB-CODE теги

6.87K
.
¤
FlySelf (26.01.2010/19:26)
если всё правильно продумать, то риска можно избежать
ну само собой, это уже на усмотрение автора
.
все лучшее детям
Значит ставить нельзя эти коды . А жалко даже
.
аkа ПьяНый Ангел
почему нельзя?
.
все лучшее детям
Олег же сказал взламывают через них сильно сайты
.
xsrk, Он говорил если автор добавит тег для картинок, на данный момент код безопасен
.
аkа ПьяНый Ангел
ну во первых Олег говорит про код цвета текста. но его исправляли. как вы читаете%)
.
Добавил новые теги!
[img]прямой_адрес_до_изображения[/img]
[size=размер_текста]текст[/size] - размер задается в пикселях от 4 до 48

Добавленный и обновленный код:
// код для тега SIZE и IMG
// добавляется в функцию tags()
$var = preg_replace_callback('#\[size=([0-9]{1,2})\](.*?)\[/size\]#si',
							create_function(
											'$data',
                            				'if(intval($data[1])>48) {
                            					$data[1] = 48;
                            				} elseif (intval($data[1])<4) {
                            					$data[1] = 4;
                            				}
                            				return "<span style=\"font-size:{$data[1]}px\">{$data[2]}</span>";
                            				'
                            ), $var);
// В уже знакомое выражение обработки URL встроена обработка IMG
$var = preg_replace_callback('`\\[url=((?:http|ftp)+s?://.+?)\\](.+?)\\[/url\\]|((?:http|ftp)+s?://(www.)?[0-9a-z\.-]+\.[0-9a-z]{2,6}[0-9a-zA-Z/\?\.\~&amp;_=/%\-\+:#]*)|\[img\]((?:http|ftp)+s?://[a-zA-Z0-9\-\_\+\.\%\~\/]+?\.(?:jpeg|jpe|jpg|gif|png|tga|tif|tiff|bmp))\[/img\]`', 'url_replace', $var);

Теперь функции которые претерпели модификации
// В функцию w_gHide() была встроена проверка изображения на валидность
function w_gHide($gh){
	// gHide valid finction by SunRise
	// Допольнительно в функцию добавлена обработка тэга IMG от SunRise
	// Данной функцией обрабатывать ВХОДЯЩИЕ данные
	global $user_id, $rights;
	// Обработчик тэга IMG
	if(preg_match('#\[img\](.*?)\[\/img\]#si', $gh))
	{
    	if(preg_match('#\[img\]((?:http|ftp)+s?://[a-zA-Z0-9\-\_\+\.\%\~\/]+?\.(?:jpeg|jpe|jpg|gif|png|tga|tif|tiff|bmp))\[\/img\]#si', $gh))
    	{
    		return preg_replace_callback('#\[img\]((?:http|ftp)+s?://[a-zA-Z0-9\-\_\+\.\%\~\/]+?\.(?:jpeg|jpe|jpg|gif|png|tga|tif|tiff|bmp))\[\/img\]#si',
    									 create_function(
    								 					'$data',
    								 					'$img = @getimagesize($data[1]);
														if(!empty($img) && is_array($img) && in_array($img[\'mime\'], array(\'image/gif\', \'image/jpeg\', \'image/png\', \'image/tga\', \'image/bmp\', \'image/tiff\')) && $img[0] > 10 && $img[1] > 10)
														{
															return \'[img]\' . $data[1] . \'[/img]\';
														}
														else
														{
															return \'[Неверное изображение в тэге!!!]\';
														}'
									 	 ), $gh);
		}
		else
		{
            return preg_replace('#\[img\](.*?)\[\/img\]#si', '[Неверный формат адреса в тэге!!!]', $gh);
		}
    }
    // *******************
	if(preg_match('#\[ghide=(.*?)\](.*?)\[\/ghide\]#si',$gh))
	{
	    if($rights>=2)
	    {
            return $gh;
	    }
	    else
	    {
	    	return '[Не хулигань!]';
	  	}
	}
	elseif(preg_match('#\[ghide\](.*?)\[\/ghide\]#si',$gh))
	{
		return preg_replace('#\[ghide\](.*?)\[\/ghide\]#si', '[ghide=' . $user_id . ']\1[/ghide]', $gh);
	}
	else
	{
		return $gh;
	}
}

// В функцию парсинга было встроено выражение вывода IMG
function url_replace($m) {
    // Служебная функция парсинга URL (прислал FlySelf)
    // Втсавка кода обработки тега IMG от SunRise
    if(isset($m[5]))
    {
		$matches = array('%3C','%3E','%26','%26','%22','%3A','%28','%29');// отчистка от символов < > & ' " : ( ) в URL формате
		$m[5] = str_replace($matches, '', $m[5]);
		return '<img src="'.$m[5].'" alt="'.$m[5].'" stryle="border:0" />';
    }
    else
    {
    	if (!isset($m[3]))
    	{
        	return '<a href="' . $_SERVER['DOCUMET_ROOT'] . '/ol.php?ol=' . urlencode(base64_encode($m[1])) . '">' . $m[2] . '</a>';
        }
    	else
    	{
    		$lText = '';
    		if(mb_strlen($m[3])>70) $lText = mb_substr($m[3],0,70) . '...'; else $lText = $m[3];
        	return '<a href="' . $_SERVER['DOCUMET_ROOT'] . '/ol.php?ol=' . urlencode(base64_encode($m[3])) . '">' . $lText . '</a>';
        }
    }
}


В прошлых версиях был забыт(обделен) модератор чата. Он не видел содержимое тега ghide (так как чатом я не пользуюсь), теперь он добавлен в список видящих.
Прикрепленный архив содержит файл func.php, которого и коснулись все изменения.
Прикрепленные файлы:
.
а бузопасен тег IMG?
.
Безопасен
.
Хотелось бы услышать ответ подробней! просто если я неошибаюсь то олег что то говарил плохое об этом теге
Всего: 269