Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757
Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737 Форумы портала PHP.SU :: Связать файлы админки с помощью include
Покинул форум
Сообщений всего: 24
Дата рег-ции: Июль 2012
Помог: 0 раз(а)
Проблема вот в чем, В папке с админкой есть индексный файл, в котором написано
define("AUTH", TRUE);
что бы другие файлы админки не открывались на прямую, в других написано
defined('AUTH') or die ('Restricted access');.
В индексном файле файлы админки (типа добавить страницу, настройки и т.д.) выводятся с помощью include таким способом
if(isset($_GET['listpage'])) {
include("../admin/page/listpage.php"); //Список страниц
} elseif... и т.д. Тоесть идет перебор по введенному url, в этом куске кода указано что если в адресе введено ?listpage то требуется вывести в индексном файле страницу со списком существующих страниц.
Проблема в том что эта конструкция слишком большая, хоть и работает быстро, можно ли её заменить на что то другое по функционалу (типа перебора из массива и т.д.?)
И как можно ещё организовать связь файлов админки, но обязательно что бы была защита на прямой доступ
KingStar
Отправлено: 05 Августа, 2012 - 13:07:26
Участник
Покинул форум
Сообщений всего: 1889
Дата рег-ции: Авг. 2011 Откуда: Беларусь
Покинул форум
Сообщений всего: 1889
Дата рег-ции: Авг. 2011 Откуда: Беларусь
Помог: 69 раз(а)
если уж так нужно, то создай массив с названиями файлов, в цикле перебирай, и если GET равен названию - инклуд, ну и по умолчанию выбери, если нет совпадений
если инклуды лежат отдельно в папке, можно получить список файлов, и перебирать в цикле
----- То что программа работает, не означает что она написана правильно!
easy63
Отправлено: 05 Августа, 2012 - 14:03:10
Новичок
Покинул форум
Сообщений всего: 24
Дата рег-ции: Июль 2012
Помог: 0 раз(а)
KingStar пишет:
я всего лишь ответил, он сам должен понимать что делает ...
Если мне подскажут как сделать и покажут код, я с начало разберусь с ним что есть что, а потом уже буду ставить.
p.s. тупо что дадут не вставляю
KingStar
Отправлено: 05 Августа, 2012 - 14:03:59
Участник
Покинул форум
Сообщений всего: 1889
Дата рег-ции: Авг. 2011 Откуда: Беларусь
Помог: 69 раз(а)
я лишь показал как в цикле подставить, что с ним делать - ты сам должен понимать, делать все возможные проверки и т.п. а не тупо ждать, когда за тебя напишут
----- То что программа работает, не означает что она написана правильно!
easy63
Отправлено: 05 Августа, 2012 - 14:06:22
Новичок
Покинул форум
Сообщений всего: 24
Дата рег-ции: Июль 2012
Помог: 0 раз(а)
KingStar пишет:
если уж так нужно, то создай массив с названиями файлов, в цикле перебирай, и если GET равен названию - инклуд, ну и по умолчанию выбери, если нет совпадений
В том то и дело что с массивами не работал. Как я понял надо:
$id = $_GET['index'];
$a = array(addpage, listpage);
foreach($id as $a) {
echo "и тут уже инклуд в общем";
}
Правильно ли я создал массив, и вот это не понимаю $id as $a где == или как это работает? Документацию почитал и как обычно не все понял. Проще разобраться при написании самому.
KingStar
Отправлено: 05 Августа, 2012 - 14:08:21
Участник
Покинул форум
Сообщений всего: 1889
Дата рег-ции: Авг. 2011 Откуда: Беларусь
if(in_array($value,$a)){echo"и тут уже инклуд в общем";}
}
(Добавление)
easy63 пишет:
Правильно ли я создал массив, и вот это не понимаю $id as $a где == или как это работает? Документацию почитал и как обычно не все понял. Проще разобраться при написании самому.
перебирает массив GET, и каждое значение присваивает переменной $a
но т.к. у тебя переменная $a - массив файлов, значение нужно другое
----- То что программа работает, не означает что она написана правильно!
easy63
Отправлено: 05 Августа, 2012 - 14:10:55
Новичок
Покинул форум
Сообщений всего: 24
Дата рег-ции: Июль 2012
(in_array($value, $component)) Это проверка существует ли такое значение в массиве по сравнению с введенным урл? но как она работает там же нету оператора сравнения?
И теперь адресе надо писать ?index=listpage (глобальная переменная и её значение)
Можно ли сделать что бы сравнивались сами глобальные переменные? Что бы адрес выглядил так
?listpage
?addpage
и т.д.?
Все гости форума могут просматривать этот раздел. Только зарегистрированные пользователи могут создавать новые темы в этом разделе. Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.