вот можно такое сделать?, на пример поставил ссылку в этот скрипт и для того чтоб эту ссылку увидет, надо пользователю оставить на форуме на пример 10 сообщений и после он сможет увидеть ссылку или то что поставил под этот тяг. Я думаю вы поняли что я имею ввиду.
только для новичков это для тех у кого еще ноль сообшений для тех такое ставить, пока 10 сообщений не набирет на форуме только такда увидет то что я закрыл
1. pyccak - 15 Сентября, 2005 - 13:44:49 - перейти к сообщению
2. TvoyWeb - 15 Сентября, 2005 - 15:05:11 - перейти к сообщению
pyccak
Ну сделай проверку:
Ну сделай проверку:
CODE:
if ($inuser['posts'] <= 10 )
{
// не показываем
}
else
{
//показываем
}
{
// не показываем
}
else
{
//показываем
}
3. pyccak - 15 Сентября, 2005 - 15:24:41 - перейти к сообщению
TvoyWeb
а куда это поставить надо?. скажи точно
а куда это поставить надо?. скажи точно
4. nokia6230 - 15 Сентября, 2005 - 15:30:37 - перейти к сообщению
pyccak пишет:
а куда это поставить надо?. скажи точно
lib.php
5. nokia6230 - 15 Сентября, 2005 - 18:39:40 - перейти к сообщению
TvoyWeb
Как это должно выглядеть? Так?
Как это должно выглядеть? Так?
CODE:
if ($exbb['reged'])
{
}
else
if ($inuser['posts'] <= 10 )
{
$post = preg_replace( "#\[hide\](.+?)\[/hide\]#is", "<span class=small>Скрытый текст:</span><table cellpadding=3 cellspacing=0 width=85% class=hide_table><tr><td class=hide_td>$1</td></tr></table>", $post );
}
else
{
$post = preg_replace( "#\[hide\](.+?)\[/hide\]#is", "<span class=small><font color=red>[ Скрытый текст. Для прочтения необходима <a href=\"register.php\">регистрация</a>! ]</font></span>", $post );
}
{
}
else
if ($inuser['posts'] <= 10 )
{
$post = preg_replace( "#\[hide\](.+?)\[/hide\]#is", "<span class=small>Скрытый текст:</span><table cellpadding=3 cellspacing=0 width=85% class=hide_table><tr><td class=hide_td>$1</td></tr></table>", $post );
}
else
{
$post = preg_replace( "#\[hide\](.+?)\[/hide\]#is", "<span class=small><font color=red>[ Скрытый текст. Для прочтения необходима <a href=\"register.php\">регистрация</a>! ]</font></span>", $post );
}
6. TvoyWeb - 16 Сентября, 2005 - 01:33:04 - перейти к сообщению
nokia6230
Скорее всего так тогда:
Скорее всего так тогда:
CODE:
if ($exbb['reged'] && $inuser['posts'] <= 10 )
{
$post = preg_replace( "#\[hide\](.+?)\[/hide\]#is", "<span class=small>Скрытый текст:</span><table cellpadding=3 cellspacing=0 width=85% class=hide_table><tr><td class=hide_td>$1</td></tr></table>", $post );
}
else
{
$post = preg_replace( "#\[hide\](.+?)\[/hide\]#is", "<span class=small><font color=red>[ Скрытый текст. Для прочтения необходима <a href=\"register.php\">регистрация</a>! ]</font></span>", $post );
}
{
$post = preg_replace( "#\[hide\](.+?)\[/hide\]#is", "<span class=small>Скрытый текст:</span><table cellpadding=3 cellspacing=0 width=85% class=hide_table><tr><td class=hide_td>$1</td></tr></table>", $post );
}
else
{
$post = preg_replace( "#\[hide\](.+?)\[/hide\]#is", "<span class=small><font color=red>[ Скрытый текст. Для прочтения необходима <a href=\"register.php\">регистрация</a>! ]</font></span>", $post );
}
7. CaptainFlint - 16 Сентября, 2005 - 02:05:09 - перейти к сообщению
А можно сделать помощнее: чтобы в самом теге HIDE указывать число постов. Т.е., например, пишешь [hide=15]текст[/hide] - и текст будет скрыт для всех незарегистрированных и тех, кто набрал меньше 15 постов. Я это у себя сделал так:
в lib.php после строчки, парсящей обычный hide, добавил строку:
а ниже, после функции ikoncode, добавил функцию
Плюс в lang.php добавил строчки (можно и прямо в код функции их запихнуть, если мультиязычность не нужна):
в lib.php после строчки, парсящей обычный hide, добавил строку:
PHP:
$post = preg_replace_callback("#(\[hide=)([0-9]+)(\])(.+?)(\[\/hide\])#is", 'reg_exp_callback', $post);
а ниже, после функции ikoncode, добавил функцию
PHP:
function reg_exp_callback($arr) {
global $exbb,$lang,$inmembmod;
if (!$exbb['reged']) {
return "<BR><span class=small><font color=red>[$lang[HiddenText]. $lang[ToRead] $lang[RegisterAnd] $lang[CollectPosts1] $arr[2] $lang[CollectPosts2]!]</font></span>";
}
$member = getmember($exbb['mem_id']);
if (($member['posts'] >= $arr[2]) || $inmembmod) {
return "<BR><span class=small>$lang[HiddenText]:</span><table cellpadding=3 cellspacing=0 width=85% class=hide_table><tr><td class=hide_td>$arr[4]</td></tr></table>";
} else {
return "<BR><span class=small><font color=red>[$lang[HiddenText]. $lang[ToRead] $lang[CollectPosts1] $arr[2] $lang[CollectPosts2]!]</font></span>";
}
}
global $exbb,$lang,$inmembmod;
if (!$exbb['reged']) {
return "<BR><span class=small><font color=red>[$lang[HiddenText]. $lang[ToRead] $lang[RegisterAnd] $lang[CollectPosts1] $arr[2] $lang[CollectPosts2]!]</font></span>";
}
$member = getmember($exbb['mem_id']);
if (($member['posts'] >= $arr[2]) || $inmembmod) {
return "<BR><span class=small>$lang[HiddenText]:</span><table cellpadding=3 cellspacing=0 width=85% class=hide_table><tr><td class=hide_td>$arr[4]</td></tr></table>";
} else {
return "<BR><span class=small><font color=red>[$lang[HiddenText]. $lang[ToRead] $lang[CollectPosts1] $arr[2] $lang[CollectPosts2]!]</font></span>";
}
}
Плюс в lang.php добавил строчки (можно и прямо в код функции их запихнуть, если мультиязычность не нужна):
PHP:
$lang['HiddenText'] = 'Скрытый текст';
$lang['ToRead'] = 'Для прочтения необходимо';
$lang['Register'] = '<a href=\"register.php\">зарегистрироваться</a>';
$lang['RegisterAnd'] = '<a href=\"register.php\">зарегистрироваться</a> и';
$lang['CollectPosts1'] = 'набрать не менее';
$lang['CollectPosts2'] = 'сообщений';
$lang['ToRead'] = 'Для прочтения необходимо';
$lang['Register'] = '<a href=\"register.php\">зарегистрироваться</a>';
$lang['RegisterAnd'] = '<a href=\"register.php\">зарегистрироваться</a> и';
$lang['CollectPosts1'] = 'набрать не менее';
$lang['CollectPosts2'] = 'сообщений';
8. DrNets - 16 Сентября, 2005 - 04:21:08 - перейти к сообщению
CaptainFlint пишет:
А можно сделать помощнее: чтобы в самом теге HIDE указывать число постов. Т.е., например, пишешь [hide=15]текст[/hide] - и текст будет скрыт для всех незарегистрированных и тех, кто набрал меньше 15 постов. Я это у себя сделал так:.......
.....
.....
а теперь спросим у TvoyWeb - безопасно ли это? т.к с файлом lib.php лучше не шутить
9. TvoyWeb - 16 Сентября, 2005 - 04:22:33 - перейти к сообщению
CaptainFlint
А зачем ты открываешь файл юзера? Добавь в глобальные переменные $inuser и проверяй $inuser['posts'] .
Если в каждом посте будет скрытый текст, так что постоянно открывать файл юзера? Тем более что массив $inuser это данные in forum curent user
Детально не всматривался в код. Просто сейчас нет времени. Вечерком гляну.
А зачем ты открываешь файл юзера? Добавь в глобальные переменные $inuser и проверяй $inuser['posts'] .
Если в каждом посте будет скрытый текст, так что постоянно открывать файл юзера? Тем более что массив $inuser это данные in forum curent user
DrNets пишет:
а теперь спросим у TvoyWeb - безопасно ли это?
Детально не всматривался в код. Просто сейчас нет времени. Вечерком гляну.
10. TvoyWeb - 16 Сентября, 2005 - 05:33:19 - перейти к сообщению
CaptainFlint
Думаю будешь непротив небольшой модификации твоего кода.
lib.php
Добавляем функцию:
В функцию ikoncode()
lang.php
Добавляем строчки:
Думаю будешь непротив небольшой модификации твоего кода.
lib.php
Добавляем функцию:
CODE:
function reg_exp_callback($arr)
{
global $exbb,$lang,$inmembmod,$inuser;
$maxposts = 50;//если юзер не ввел кол-во постов в теге hide
if (!$exbb['reged'])
{
$hidetext = $lang['HiddenText'].' '.$lang['ToRead'].$lang['Register']. sprintf($lang['CollectPosts'], $arr[1]);
return "<BR><span class=small><font color=red>[$hidetext!]</font></span>";
}
$arr[1] = (empty($arr[1]) || $arr[1] == 0) ? $maxposts:$arr[1];
if ($inuser['posts'] >= $arr[1] || $inmembmod)
{
return "<BR><span class=small>$lang[HiddenText]</span><table cellpadding=3 cellspacing=0 width=85% class=hide_table><tr><td class=hide_td>$arr[2]</td></tr></table>";
}
else
{
$hidetext = $lang['HiddenText'].' '.$lang['ToRead']. sprintf($lang['CollectPosts'], $arr[1]);
return "<BR><span class=small><font color=red>[$hidetext!]</font></span>";
}
}
{
global $exbb,$lang,$inmembmod,$inuser;
$maxposts = 50;//если юзер не ввел кол-во постов в теге hide
if (!$exbb['reged'])
{
$hidetext = $lang['HiddenText'].' '.$lang['ToRead'].$lang['Register']. sprintf($lang['CollectPosts'], $arr[1]);
return "<BR><span class=small><font color=red>[$hidetext!]</font></span>";
}
$arr[1] = (empty($arr[1]) || $arr[1] == 0) ? $maxposts:$arr[1];
if ($inuser['posts'] >= $arr[1] || $inmembmod)
{
return "<BR><span class=small>$lang[HiddenText]</span><table cellpadding=3 cellspacing=0 width=85% class=hide_table><tr><td class=hide_td>$arr[2]</td></tr></table>";
}
else
{
$hidetext = $lang['HiddenText'].' '.$lang['ToRead']. sprintf($lang['CollectPosts'], $arr[1]);
return "<BR><span class=small><font color=red>[$hidetext!]</font></span>";
}
}
В функцию ikoncode()
CODE:
$post = preg_replace_callback("#\[hide(?:=([0-9]+))*\](.+?)\[/hide\]#is", 'reg_exp_callback', $post);
lang.php
Добавляем строчки:
CODE:
$lang['HiddenText'] = 'Скрытый текст:';
$lang['ToRead'] = 'Для прочтения необходимо';
$lang['Register'] = ' <a href="register.php">зарегистрироваться</a> и';
$lang['CollectPosts'] = ' набрать не менее %d сообщений';
$lang['ToRead'] = 'Для прочтения необходимо';
$lang['Register'] = ' <a href="register.php">зарегистрироваться</a> и';
$lang['CollectPosts'] = ' набрать не менее %d сообщений';