UID для ббкода

Форум для авторов модов для phpBB 3.0.x. Здесь можно попросить помощи в разработке у коллег.
Правила форума
Местная Конституция | Шаблон запроса | Документация (phpBB3) | Переход на 3.0.6 и выше | FAQ-3 (phpbb3) | Как задавать вопросы | Как устанавливать моды

Ваш вопрос может быть удален без объяснения причин, если на него есть ответы по приведённым ссылкам (а вы рискуете получить предупреждение ;) ).
Аватара пользователя
Serious
phpBB 1.0.0
Сообщения: 8
Стаж: 18 лет 2 месяца

UID для ббкода

Сообщение Serious »

Подскажите, по какому принципу и на основании какой информации генерируется этот самый uid для тега?
Аватара пользователя
rxu
phpBB Guru
phpBB Guru
Сообщения: 17272
Стаж: 20 лет 4 месяца
Откуда: Красноярск
Благодарил (а): 632 раза
Поблагодарили: 2412 раз

Re: UID для ббкода

Сообщение rxu »

Код: Выделить всё

$bbcode_uid = substr(base_convert(unique_id(), 16, 36), 0, BBCODE_UID_LEN);
Изображение
Аватара пользователя
Serious
phpBB 1.0.0
Сообщения: 8
Стаж: 18 лет 2 месяца

Re: UID для ббкода

Сообщение Serious »

Спасибо, уже лучше ;)

Теперь возник вопрос по функции

Код: Выделить всё

/**
* Return unique id
* @param string $extra additional entropy
*/
function unique_id($extra = 'c')
{
	static $dss_seeded = false;
	global $config;

	$val = $config['rand_seed'] . microtime();
	$val = md5($val);
	$config['rand_seed'] = md5($config['rand_seed'] . $val . $extra);

	if ($dss_seeded !== true && ($config['rand_seed_last_update'] < time() - rand(1,10)))
	{
		set_config('rand_seed', $config['rand_seed'], true);
		set_config('rand_seed_last_update', time(), true);
		$dss_seeded = true;
	}

	return substr($val, 4, 16);
}
Не совсем понимаю, как она работает. Допустим, у меня есть текст сообщения из базы данных, в него нужно руками вставить тег с uid'ом. Как это сделать? BBCODE_UID_LEN по умолчанию равен 8, правильно я понял?
Аватара пользователя
rxu
phpBB Guru
phpBB Guru
Сообщения: 17272
Стаж: 20 лет 4 месяца
Откуда: Красноярск
Благодарил (а): 632 раза
Поблагодарили: 2412 раз

Re: UID для ббкода

Сообщение rxu »

Вам надо понять, как это работает, или uid получить? У вас готовое выражение есть, вычисляете и используете, в чём проблема? BBCODE_UID_LEN - это длина uid, как явствует из названия.
Изображение
Аватара пользователя
Палыч
Former team member
Сообщения: 9683
Стаж: 20 лет 3 месяца
Откуда: Питер
Благодарил (а): 3 раза
Поблагодарили: 454 раза

Re: UID для ббкода

Сообщение Палыч »

Serious писал(а):Не совсем понимаю, как она работает.
Тайна сия - велика есть. 8-)
Use the secure hash to generate BBCODE_UIDs
Serious писал(а):BBCODE_UID_LEN по умолчанию равен 8, правильно я понял?
Задаётся в файле constants.php

Код: Выделить всё

// BBCode UID length
define('BBCODE_UID_LEN', 8);
Не все то WINDOWS, что висит... phpBB только учусь.
ICQ, email, ЛС - только для личных сообщений. Вопросы по phpbb только на форумах. По найму не работаю.
Аватара пользователя
Serious
phpBB 1.0.0
Сообщения: 8
Стаж: 18 лет 2 месяца

Re: UID для ббкода

Сообщение Serious »

Надо получить уид во внешнем скрипте. Откуда берется $config['rand_seed']? И можно ли забить на весь код, кроме

Код: Выделить всё

$val = $config['rand_seed'] . microtime();
? Задача состоит в добавлении одного или нескольких ббкодов во множество сообщений прямо в текст сообщения из бд.
Аватара пользователя
Serious
phpBB 1.0.0
Сообщения: 8
Стаж: 18 лет 2 месяца

Re: UID для ббкода

Сообщение Serious »

Подскажите, пожалуйста.
Аватара пользователя
rxu
phpBB Guru
phpBB Guru
Сообщения: 17272
Стаж: 20 лет 4 месяца
Откуда: Красноярск
Благодарил (а): 632 раза
Поблагодарили: 2412 раз

Re: UID для ббкода

Сообщение rxu »

Serious писал(а):Откуда берется $config['rand_seed']?
Из таблицы phpbb_config. Генерируется в этой же функции.
Serious писал(а):И можно ли забить на весь код
Не думаю. Лучше использовать тем же способом, как это сделано в phpBB3.
Изображение
Otto fon f.
phpBB 1.0.0
Сообщения: 6
Стаж: 18 лет 5 месяцев

Re: UID для ббкода

Сообщение Otto fon f. »

Задача состоит в добавлении одного или нескольких ббкодов во множество сообщений прямо в текст сообщения из бд.
заходишь в phpbb_posts, находишь нужное сообщение, смотришь какой bbcode_uid в этом сообщении и добавляешь его в тег

Вернуться в «Для авторов (phpBB 3.0.x)»