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

Закрыть элемент для неавторизованных пользователей

17.09.2011, 02:19. Показов 4720. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день, по долгу службы дали администрировать сайт rusenergo.perm.ru . Изначально в обязанности входила только раскрутка (даже не через интернет) Но потом, навесили еще кучу функций ))

Начальнику потребовалось закрыть элемент раздела "Типовые проекты", а сайт был разработан сторонней компанией на собственном движке (если бы это была Joomla или WordPress было бы много легче) И вот я копаясь в коде придумал как это реализовать, но вот проблема, после внесения изменений стали закрыты все элементы этого раздела. Причем если указать в коде несуществующий id (из базы данных) эта строчка кода совсем перестает работать (то есть скорее всего работает почти правильно, только возможно нужно немного подкорректировать) Помогите пожалуйста!

Вот собственно сам код странички данного раздела:
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
<?php
    include $_SERVER["DOCUMENT_ROOT"]."/manage/inc/all.php";
    $urlstr = config_get('requrl');
    $urlarr = explode("/",$urlstr);
    $section = str_replace("//","/","/".$urlarr[1]."/");
    $section2 = str_replace("//","/",$section.$urlarr[2]."/");
    $section3 = str_replace("//","/",$section2.$urlarr[3]."/");
    
    if (isset($_GET['pub'])) { 
        $pub = floor($_GET['pub']);
        if (strrpos($urlstr,"/")==strlen($urlstr)-1){$urlstr=substr($urlstr,0,strlen($urlstr)-1);}
        $urlstr=substr($urlstr,0,strrpos($urlstr,"/")+1);
    }else $pub = 0; 
 
    $iface = content_lookup($urlstr);
    $smalltitle = content_get_title(content_get_id($urlstr));
    $ptitle = $smalltitle.' — '.'Русэнерго';
    $elementlist = $iface->GetList();
    if ($pub>0){
        foreach ($elementlist as $element){
            if (floor($element['id'])==floor($pub)){
                $ptitle = $element['name'].' — '.$ptitle;
            }
        }
    } 
    $ptitle = str_replace('Услуги — ','Услуги компании ',$ptitle);
    $ptitle = str_replace('Типовые проекты — ','Типовые проекты компании ',$ptitle);
?>
<?
    $title = "Русэнерго — производство и реализация электромонтажного оборудования";
    include $_SERVER['DOCUMENT_ROOT'].'/inc/header.php';
?>
            <div class="mContent">
                <div class="clear"></div>
                <?
                    include $_SERVER['DOCUMENT_ROOT'].'/inc/left.php';
                ?>
                <div class="cRight">
                    <div class="contentWrapper">
                        <?if (!$user && $element['id']=='2'){?>
                        <div id="content">
                            <h1><?=$smalltitle?></h1>
                            <p>Уважаемые коллеги, для доступа к содержимому данного раздела, пожалуйста, <a href="/cabinet/login/">авторизуйтесь</a> или <a href="/cabinet/register/">зарегистрируйтесь</a>.</p>
                        </div>
                        <?}elseif (floor($pub)==0){?>
                        <div id="content" class="spisok all">
                            <h1><?=$smalltitle?></h1>
                            <?
                            foreach ($elementlist as $element){
                            ?>
                                <div class="element">
                                    <h2><a href="<?=$element['id']?>/"><?=$element['name']?></a></h2>
                                    <?if ($element['image']){?>
                                        <div class="spisokImg">
                                            <a href="<?=$element['id']?>/">
                                            <img src="<?=$element['image']?>" width="120" height="90" alt="<?=$element['image']?>" />
                                            </a>
                                        </div>
                                    <?}?>
                                    <div class="spisokTxt"><?=$element['short']?></div>
                                    <div class="clear"></div>
                                </div>
                            <?
                            }
                            ?>                  
                        </div>
                        <?}else{?>
                        <div id="content">
                            <?
                            foreach ($elementlist as $element){
                                if (floor($element['id'])==floor($pub)){
                                    ?>
                                    <h1><?=$element['name']?></h1>
                                    <?=$element['text']?>
                                    <div class="clear"></div>
                                    <div class="back">
                                        <p class="b"><a class="back" href="https://www.cyberforum.ru/">Перейти к&nbsp;списку <?=($section=='/service/')?'услуг':'проектов'?></a></p>
                                    </div>
                                    <?
                                }
                            }       
                            ?>                  
                        </div>
                        <?}?>
                    </div>
                </div>
                <div class="clear"></div>
            </div>
            <?
                include $_SERVER['DOCUMENT_ROOT'].'/inc/footer.php';
            ?>
        </div>
    </div>
</div>
<?
    include $_SERVER['DOCUMENT_ROOT'].'/inc/popup.php';
?>
</body>
</html>
А вот строчка в которой проблемы: (id элемента который требуется закрыть - '2')
PHP
1
2
3
4
5
6
<?if (!$user && $element['id']=='2'){?>
                                                <div id="content">
                                                        <h1><?=$smalltitle?></h1>
                                                        <p>Уважаемые коллеги, для доступа к содержимому данного раздела, пожалуйста, <a href="/cabinet/login/">авторизуйтесь</a> или <a href="/cabinet/register/">зарегистрируйтесь</a>.</p>
                                                </div>
                                                <?}elseif (floor($pub)==0){?>
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
17.09.2011, 02:19
Ответы с готовыми решениями:

Скрытие части страницы для неавторизованных пользователей
Есть 2 страницы. Код и шаблон, page.php и page.html page.php $tmp=file_get_contents($_SERVER.&quot;/page.php&quot;);#Указываем на шаблон...

Закрыть доступ к страницам для не авторизованных пользователей
Всем доброго времени суток. Разрабатываю систему для организации, которая будет находится на её внутреннем сайте, то есть доступ к ней...

Закрыть страницу для обычных пользователей
Как сделать, чтобы при нажатии на картинку выпадало меню, но так, чтобы это мог делать только администратор, а обычный пользователей даже...

5
 Аватар для Денис Н.
463 / 463 / 23
Регистрация: 17.08.2011
Сообщений: 1,488
17.09.2011, 02:42
Цитата Сообщение от ingus Посмотреть сообщение
<?
}
?>
Цитата Сообщение от ingus Посмотреть сообщение
<? }
}
?>
Цитата Сообщение от ingus Посмотреть сообщение
<?}?>
и вот такие вещи делают компании... я бы голову оторвал.



По теме:
PHP
1
if (!$user && $element['id']=='2')
не понятно, что за массив element и откуда именно берется elementlist
0
0 / 0 / 0
Регистрация: 24.01.2011
Сообщений: 11
17.09.2011, 05:52  [ТС]
не понятно, что за массив element и откуда именно берется elementlist
В их движке есть несколько типов страниц, а именно: каталог, список, список лист, лист и тд.
И для каждого соответствует элемент под определенным id. Причем, как я стал разбираться у элемента elementlist может быть несколько... ххмм, "подэлементов" так;е каждый со своим id.
То есть в данном случае у элемента elementlist есть два "подэлемента" element, от меня требуется закрыть element по id = '2' . Закрываю этот элемент, а получается так что закрываю весь массив элементов из elementlist.

Причем, в принципе можно закрыть вообще всю страницу заменив $element['id'] на $urlstr и указав url, закрываемой для не авторизованных пользователей страницы. Но мне нужно закрыть страничку, как я уже упоминал ранее, элемента 2.

Если залезете на сайт, можно увидеть что раздел (под управлением elementlist) Типовые проекты открыт, в нем есть два подраздела (AdobeReader и AutoCAD) и при переходе на любой из них потребуется авторизация... А необходимо придумать что то, для того чтобы один подраздел с id - '1' был открыт, а второй с id = '2' (AutoCAD) закрыт для не авторизованных.

Возможно стоит прописать ограничение вручную для каждого? А не на основе if и else...

P.S Прошу прощения за крайний не профессионализм в данной сфере, ибо опыт работы конкретно с этим сайтом всего 3 недели... А опыт html программирования вообще на уровне элементарных азов.
0
0 / 0 / 0
Регистрация: 24.01.2011
Сообщений: 11
18.09.2011, 19:59  [ТС]
До сих пор актуально...
0
 Аватар для __PION__
960 / 801 / 85
Регистрация: 21.07.2010
Сообщений: 3,522
18.09.2011, 20:23
Цитата Сообщение от ingus Посмотреть сообщение
Закрыть элемент для неавторизованных пользователей
код весь не стал изучать.
по теме скажу, чтобы закрыть элемент (какую то часть), от не зарегистрированных пользователей, нужно поставить в начале "секретного" файла условие.
Если сессия с опрделенным именем открыта, то вход свободен (ссылка для перехода в файл видна), иначе ссылка скрыта. а если человек втупую наберет в url название файла, его перекинет на файл ошибки.

В секретном файле в начале пишем
PHP
1
2
3
4
5
6
7
// сессию назовем user
if (!isset($_SESSION['user']))
{
    // здесь перекидывание на главную страницу
        header('Location: /');
    die();
}
а лучше создать страницу (файл) ошибок - 404.html и перекидывать туда
PHP
1
2
3
4
5
if(!isset($_SESSION['user'])) 
{ 
     header("HTTP/1.1 404 Not Found");        
     exit(file_get_contents('404.html')); 
}
0
0 / 0 / 0
Регистрация: 24.01.2011
Сообщений: 11
20.09.2011, 16:38  [ТС]
вы отвечаете очевидные вещи...

В моем коде итак идет проверка на авторизованность пользователя, проблемы в том что мне нужно закрыть элемент, который берется из базы данных. А элементом этим управляет index.php элементасписка.

Всего в элементесписке два элемента (в базе данных) под id 1 и 2 соответственно. Нужно адресовать эту строку конкретно ко второму элементу из базы данных. Так чтобы первый был в свободном доступе, а второй закрыт.

Надеюсь на помощь, тема актуальна.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
20.09.2011, 16:38
Помогаю со студенческими работами здесь

Закрыть страницу от незарегистрированны пользователей
Добрый день, у меня есть php страница (где происходит регистрация) и главная страница сайта (тоже на php), Страница регистрации:...

Как закрыть таблицы и коды для пользователей
Подскажите, как закрыть таблицы и тексты скриптов для пользователей ? Имеется в виду сделать так, чтобы до содержания таблиц (без форм)...

Для группы пользователей закрыть доступ ко всем файлам , кроме их документов на терминальном сервере
Имеется терминальный сервер,требуется для группы пользователей закрыть доступ ко всем файлам , кроме их документов. Есть группа...

Как закрыть сесии пользователей
Иногда нужно что бы в базе никто не работал , юзера не всегда выходят из базы когда просишь - подскажите как сделать принудительное...

Закрыть окно проводника у пользователей
Здраствуйте, подскажите пожалуйста каким образом можно закрыть открытые окна у пользователей на терминальном сервере! Для чего это нужно:...


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
Модульная разработка через 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
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка библиотек: SDL3, Box2D, FreeType, SDL3_ttf, SDL3_mixer и SDL3_image из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru