Форум программистов, компьютерный форум, киберфорум
PHP для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.70/40: Рейтинг темы: голосов - 40, средняя оценка - 4.70
-1 / 0 / 0
Регистрация: 17.08.2015
Сообщений: 38

Скрытие части страницы для неавторизованных пользователей

23.08.2015, 04:31. Показов 7736. Ответов 15
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Есть 2 страницы. Код и шаблон, page.php и page.html

page.php
PHP
1
2
3
$tmp=file_get_contents($_SERVER['DOCUMENT_ROOT']."/page.php");#Указываем на шаблон страницы
$tmp = str_replace("{name}", $user_name, $tmp);#Вставляем данные в шаблон
echo $tmp;#Выводим страницу
page.html
HTML5
1
Привет, <b>{name}</b>
Вопрос. Как в page.html сделать теги отвечающие за скрытие информации от неавторизованных пользователей?
Распознать авторизованного пользователя можно переменной $user_id
Если она больше нуля - пользователь авторизован.

Должно быть так
page.html
HTML5
1
2
3
Привет, <b>{name}</b><br>
{hidden}Какой то текст, который видят только пользователи{/hidden}
{not-hidden}Какой то текст, который видят только гости{/not-hidden}
Не предлагайте подключать разные инклуды, в зависимости от $user_id!
Задача - разместить ЛЮБОЙ код и текст между спец. полями.
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
23.08.2015, 04:31
Ответы с готовыми решениями:

Закрыть элемент для неавторизованных пользователей
Добрый день, по долгу службы дали администрировать сайт rusenergo.perm.ru . Изначально в обязанности входила только раскрутка (даже не...

Скрытие кнопок для разных категорий пользователей
Помогите еще раз. :cry: Суть такая. --После ввода логина и пароля, пользователю должна открыться кнопочная форма (НЕ главная, а...

Скрытие ярлыков от пользователей
Доброго времени суток! Есть проблема. На работе оочень любопытный начальник хочет сидеть у меня на компе под моим профилем и смотреть что...

15
99 / 46 / 18
Регистрация: 09.08.2015
Сообщений: 367
23.08.2015, 04:37
Цитата Сообщение от hihihiman Посмотреть сообщение
Вопрос. Как в page.html сделать теги отвечающие за скрытие информации от неавторизованных пользователей?
А как собственно сделан {name}? Способов то много.

Цитата Сообщение от hihihiman Посмотреть сообщение
Не предлагайте подключать разные инклуды, в зависимости от $user_id!
0
-1 / 0 / 0
Регистрация: 17.08.2015
Сообщений: 38
23.08.2015, 04:44  [ТС]
А как собственно сделан {name}? Способов то много.
Ммм. Сообщения набиваешь...
Берётся текст из html файла и "{name}" заменяется на значение переменной.
Всё достаточно просто, www.php.su/str_replace

Вопрос актуален.
0
99 / 46 / 18
Регистрация: 09.08.2015
Сообщений: 367
23.08.2015, 05:14
Цитата Сообщение от hihihiman Посмотреть сообщение
Ммм. Сообщения набиваешь...

Не по теме:

За них платят? O_o



Цитата Сообщение от hihihiman Посмотреть сообщение
Должно быть так
Если только html то проверять в php авторизацию и просто вырезать все ненужное. Если нужен php код то сложнее. Очевидный вариант парсер, но это сложно и не факт что имеет смысл. Есть функция eval которая выполняет php код из строки, просто но не быстро. Можно транслировать tpl файлы (ну или html) в php заранее, заменяя свои конструкции на php. Ну и самый простой вариант это include.

Если есть желание творить велосипед то можно почитать что-то про создание шаблонизатора, если нет то обычный include и php в качестве шаблонизатора самый эффективный выход.
0
-1 / 0 / 0
Регистрация: 17.08.2015
Сообщений: 38
23.08.2015, 05:48  [ТС]
Цитата Сообщение от AncientPenguin Посмотреть сообщение

Не по теме:

За них платят? O_o





Если только html то проверять в php авторизацию и просто вырезать все ненужное. Если нужен php код то сложнее. Очевидный вариант парсер, но это сложно и не факт что имеет смысл. Есть функция eval которая выполняет php код из строки, просто но не быстро. Можно транслировать tpl файлы (ну или html) в php заранее, заменяя свои конструкции на php. Ну и самый простой вариант это include.

Если есть желание творить велосипед то можно почитать что-то про создание шаблонизатора, если нет то обычный include и php в качестве шаблонизатора самый эффективный выход.
Давай так, я ещё раз напишу что мне нужно и если ты не знаешь как это возможно реализовать - не пиши больше в этом треде.
PAGE.HTML и выполняет функцию шаблона, как ты, AncientPenguin, уже наверное понял.
Туда я помещаю лишь готовые данные. Выполнять какие угодно действия В шаблоне кроме разметки - я НЕ собираюсь.
Допустимо использование лишь тегов для скрытия контента от гостей.

Мне нужно что бы тег {hidden} выполнял роль вроде
PHP
1
if($user_id > 0){
а {/hidden} заменялся на
PHP
1
}else if ($user_id <= 0){echo'Неа, это только для пользователей.';}
Понимаешь?
Все действия и обработку всего выполняет page.php
А в html лишь разметка. И {hidden}анус{/hidden} размещённое в page.html - увидят только пользователи.

Но учти, page.html лишь шаблон. И этот файл не доступен для просмотра вне page.php
Да и права выставленные на файл не позволяют.
Поэтому page.html это лишь текст который вставляется в page.php

Предлагайте свои идеи, ссылок накидайте. Интересно!
0
99 / 46 / 18
Регистрация: 09.08.2015
Сообщений: 367
23.08.2015, 06:05
hihihiman,

PHP
1
2
3
4
5
$html // Переменная с html страницей.
if($user_id <= 0){
    $pattern = '/(\{hidden\})(.*)(\{\/hidden\})/si';
    $html = preg_replace($pattern, '', $html);
}
Регулярные выражения.
1
-1 / 0 / 0
Регистрация: 17.08.2015
Сообщений: 38
23.08.2015, 15:57  [ТС]
Цитата Сообщение от AncientPenguin Посмотреть сообщение
hihihiman,

PHP
1
2
3
4
5
$html // Переменная с html страницей.
if($user_id <= 0){
    $pattern = '/(\{hidden\})(.*)(\{\/hidden\})/si';
    $html = preg_replace($pattern, '', $html);
}
Регулярные выражения.
Да! Именно так. Это то о чём я просил.
Давно ещё читал об этом. Нужно будет почитать об этом.
Подскажи пока что ещё как сделать что бы if($user_id > 0) эти теги вырезало из кода.
Ато сейчас для авторизованного эти теги отображаются как простой тег.
В целом, хорошо. Спасибо.

Добавлено через 39 минут
А, всё понял.
PHP
1
2
3
4
else if($user_id > 0){
    $pattern = '/(\{hidden\})|(\{\/hidden\})/si';
    $tmp = preg_replace($pattern, '', $tmp);
}
Таким образом говорим скрыть {hidden} и {/hidden} если пользователь авторизован.

Добавлено через 45 минут
Цитата Сообщение от AncientPenguin Посмотреть сообщение
hihihiman,

PHP
1
2
3
4
5
$html // Переменная с html страницей.
if($user_id <= 0){
    $pattern = '/(\{hidden\})(.*)(\{\/hidden\})/si';
    $html = preg_replace($pattern, '', $html);
}
Регулярные выражения.
Теперь проблема такая
HTML5
1
2
3
{hidden}Вы юзер{/hidden}
{nothidden}Вы гость{/nothidden}
{hidden}Контент{/hidden}
Выводит Вы юзер и Контент если пользователь авторизован
И не выводит ничего если не авторизован.

При том что если
HTML5
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
{nothidden}Вы гость{/nothidden}
{hidden}Вы юзер{/hidden}
{hidden}Контент{/hidden}
То всё отлично.
 
Проблема в том что вообще ВСЁ что между тегами {hidden} и {/hidden} - считается скрытым.
 
Даже если явно был закрывающий {/hidden}
 
То есть код
[HTML]
{hidden}Вы юзер{/hidden}
{nothidden}Вы гость{/nothidden}
Бла бла бла, это видят все
{hidden}Контент{/hidden}
Превращается в
HTML5
1
2
3
4
{hidden}Вы юзер
{nothidden}Вы гость{/nothidden}
Бла бла бла, это видят все
Контент{/hidden}
И всё это скрывается от неавторизованных.

Что посоветуешь? Как сделать так, что бы {/hidden} реально заканчивал скрытый текст?
[/HTML]
0
365 / 372 / 89
Регистрация: 01.12.2013
Сообщений: 1,629
23.08.2015, 16:10
Кровь из глаз. Редкая ересь. Регулярки еще прикрутили!
Вот текст в шаблоне
PHP
1
2
3
4
5
6
7
<h1>Страница</h1>
<?php if($user_id > 0):?>
Срытый от неавторизованных пользователей блок
<?php else:?>
Срытый от (A!)вторизованных пользователей блок. если конечно такой блок требуется
<?php endif; ?>
Текст доступный всем пользователям.
и все!
0
-1 / 0 / 0
Регистрация: 17.08.2015
Сообщений: 38
23.08.2015, 16:20  [ТС]
Цитата Сообщение от ads Посмотреть сообщение
Кровь из глаз. Редкая ересь. Регулярки еще прикрутили!
Вот текст в шаблоне
PHP
1
2
3
4
5
6
7
<h1>Страница</h1>
<?php if($user_id > 0):?>
Срытый от неавторизованных пользователей блок
<?php else:?>
Срытый от (A!)вторизованных пользователей блок. если конечно такой блок требуется
<?php endif; ?>
Текст доступный всем пользователям.
и все!
Лол, читай вопрос внимательно прежде чем нести чушь.
AncientPenguin понял меня и ответил верно. Мне необходимы именно ТЕГИ.
К тому же, как бонус к твоей невнимательности, PHP не выполняется из файла шаблона.
Ведь повторюсь, этот самый файл ВКЛЮЧАЕТСЯ В PHP СКРИПТ.
То есть это УЖЕ часть PHP кода, а ты предлагаешь использовать теги <?php ?>

Я бы сказал "Спасибо, капитан" если бы этот код хотя бы работал в файле шаблона.
Но это вопиющая невнимательность.

Как раз ТЫ и не прав. Спасибо за внимание, но набивай посты в другом треде.
Приятного дня.
0
 Аватар для Игорь[Igor]
726 / 478 / 130
Регистрация: 24.12.2008
Сообщений: 3,924
23.08.2015, 16:28
вот замена тега BB кода подойдет и тебе немного изменив
PHP
1
2
3
4
5
6
7
preg_match_all('/\[image]([^[]*)\[\/image]/i', $txt, $match);
        if(count($match[0]) > 0)
        {
            foreach($match[1] as $val)
            $txt = str_replace('[image]'.$val.'[/image]', "<img src=\"$val\" />", $txt);
            $i++;
        }
0
365 / 372 / 89
Регистрация: 01.12.2013
Сообщений: 1,629
23.08.2015, 16:39
Цитата Сообщение от hihihiman Посмотреть сообщение
$tmp=file_get_contents($_SERVER['DOCUMENT_ROOT']."/page.php");
самая идиотская реализация шаблонизатора из учебных примеров для понимания принципов. include(require)работает быстрее и менее ресурсоемко. Там же можно сделать php вставки. а если уж нужно именно текстовое значение шаблона да еще с отработавшими php вставками используют ob_start и ob_get_flush. но вам об этом еще рано читать.
0
-1 / 0 / 0
Регистрация: 17.08.2015
Сообщений: 38
23.08.2015, 17:10  [ТС]
Цитата Сообщение от ads Посмотреть сообщение
самая идиотская реализация шаблонизатора из учебных примеров для понимания принципов. include(require)работает быстрее и менее ресурсоемко. Там же можно сделать php вставки. а если уж нужно именно текстовое значение шаблона да еще с отработавшими php вставками используют ob_start и ob_get_flush. но вам об этом еще рано читать.
ШАБЛОНИЗАТОР... Ты серьёзно? Погугли это слово.
Обычно под этим словом люди понимают какое то гавно с своей логикой.
А мне не нужна логика в шаблоне. Онли формирование страницы.
Это нельзя звать шаблонизатором, приятель.
Или по твойму BB коды это тоже шаблонизатор?
Это называется шаблон. Не более. Простое отделение кода от визуальной составляющей.
Для большего удобства.
Игорь[Igor] Спасибо. Сейчас буду тестить.
0
365 / 372 / 89
Регистрация: 01.12.2013
Сообщений: 1,629
23.08.2015, 17:52
Цитата Сообщение от hihihiman Посмотреть сообщение
Или по твойму BB коды это тоже шаблонизатор?
Это называется шаблон.
слыш дружок, если в твоем колхозе так принято общаться, то дело в следующем: я про BBCode вообще ничего не говорил, воспаленные фантазии оставь себе, но на всякий случай: BBCode это язык разметки. Когда закончишь фантазировать -почитай википедию и найди где там используется слово шаблон. Насчет отделения кода от визуальной составляющей: Give a man enough rope and he’ll hang himself
0
99 / 46 / 18
Регистрация: 09.08.2015
Сообщений: 367
24.08.2015, 03:17
Лучший ответ Сообщение было отмечено hihihiman как решение

Решение

Цитата Сообщение от hihihiman Посмотреть сообщение
Теперь проблема такая
Код HTML5Выделить код
1
2
3
{hidden}Вы юзер{/hidden}
{nothidden}Вы гость{/nothidden}
{hidden}Контент{/hidden}
Выводит Вы юзер и Контент если пользователь авторизован
И не выводит ничего если не авторизован.
PHP
1
$pattern = '/(\{hidden\})(.*?)(\{\/hidden\})/si';
Если добавить знак вопроса после звездочки то регулярка получиться "не жадная" и не будет пытаться сожрать весь текст до последнего {\hidden}.

Цитата Сообщение от hihihiman Посмотреть сообщение
Подскажи пока что ещё как сделать что бы if($user_id > 0) эти теги вырезало из кода.
Просто вырезать тег лучше str_replace, она быстрее.

Цитата Сообщение от ads Посмотреть сообщение
самая идиотская реализация шаблонизатора из учебных примеров для понимания принципов. include(require)работает быстрее и менее ресурсоемко. Там же можно сделать php вставки. а если уж нужно именно текстовое значение шаблона да еще с отработавшими php вставками используют ob_start и ob_get_flush. но вам об этом еще рано читать.
собственный синтаксис шаблонизатора -> file_get_contents -> регулярки -> file_put_contents -> готовая php страница в которой код написан своим языком, но работает она со скоростью include без всяких долгих ob_start и ob_get_flush.

Цитата Сообщение от ads Посмотреть сообщение
я про BBCode вообще ничего не говорил, воспаленные фантазии оставь себе, но на всякий случай: BBCode это язык разметки.
И у него язык разметки, из каких же соображений вы для языка разметки советуйте include?
1
-1 / 0 / 0
Регистрация: 17.08.2015
Сообщений: 38
24.08.2015, 04:31  [ТС]
Цитата Сообщение от AncientPenguin Посмотреть сообщение
PHP
1
$pattern = '/(\{hidden\})(.*?)(\{\/hidden\})/si';
Если добавить знак вопроса после звездочки то регулярка получиться "не жадная" и не будет пытаться сожрать весь текст до последнего {\hidden}.



Просто вырезать тег лучше str_replace, она быстрее.



собственный синтаксис шаблонизатора -> file_get_contents -> регулярки -> file_put_contents -> готовая php страница в которой код написан своим языком, но работает она со скоростью include без всяких долгих ob_start и ob_get_flush.



И у него язык разметки, из каких же соображений вы для языка разметки советуйте include?
Это именно то, что мне было необходимо. Большое спасибо за конкретные ответы и понимание.
Всё сработало.
Был бы благодарен, если бы посоветовал что нибудь почитать о регулярных выражениях, читал мануал на php.net
0
99 / 46 / 18
Регистрация: 09.08.2015
Сообщений: 367
24.08.2015, 04:57
Цитата Сообщение от hihihiman Посмотреть сообщение
Был бы благодарен, если бы посоветовал что нибудь почитать о регулярных выражениях, читал мануал на php.net
Увы мануал на php.net это все что я о них знаю.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
24.08.2015, 04:57
Помогаю со студенческими работами здесь

Скрытие разделов от пользователей.
Я планирую создать несколько учётных записей для различных целей, как-то: рабочий, игровой, просмотр видео/интернет. Так вот. Как...

Создание страницы для заявки от пользователей!
Решил сделать страницу заполнения форм как тут http://www.nn4you.ru/road/?app=true А вот код кнопки ОТПРАВИТЬ не знаю Задача: При...

Страницы сайта предназначены не для пользователей
Вот и я видимо попал под нарушение лицензии :) Вобщем есть сайтик, не индексится уже 2 месяца. Сателлитом это можно назвать с трудом.....

Выдача определенной страницы для пользователей IE
Здравствуйте! Возникла необходимость запрещать доступ к сайту через браузер Internet Explorer. Точнее... Как узнать что пользователь...

Разные заглавные страницы для разных пользователей
Имеется приложение (на ROR) и главная страница /home (welcome#home) должна сильно изменять в зависимости от того авторизован ли...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
16
Ответ Создать тему
Новые блоги и статьи
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем. . . .
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru