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

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (2): [1] 2 »   

> Без описания
easy63
Отправлено: 05 Августа, 2012 - 11:27:50
Post Id


Новичок


Покинул форум
Сообщений всего: 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 то требуется вывести в индексном файле страницу со списком существующих страниц.

Проблема в том что эта конструкция слишком большая, хоть и работает быстро, можно ли её заменить на что то другое по функционалу (типа перебора из массива и т.д.?)

И как можно ещё организовать связь файлов админки, но обязательно что бы была защита на прямой доступ Улыбка
 
 Top
KingStar
Отправлено: 05 Августа, 2012 - 13:07:26
Post Id



Участник


Покинул форум
Сообщений всего: 1889
Дата рег-ции: Авг. 2011  
Откуда: Беларусь


Помог: 69 раз(а)




что-то подобное

PHP:
скопировать код в буфер обмена
  1. foreach($_GET as $value)
  2. {
  3.      include("../admin/page/$value.php");
  4. }


-----
То что программа работает, не означает что она написана правильно!
 
 Top
easy63
Отправлено: 05 Августа, 2012 - 13:34:56
Post Id


Новичок


Покинул форум
Сообщений всего: 24
Дата рег-ции: Июль 2012  


Помог: 0 раз(а)




А подробней можно?
 
 Top
LIME
Отправлено: 05 Августа, 2012 - 13:49:11
Post Id


Активный участник


Покинул форум
Сообщений всего: 10732
Дата рег-ции: Нояб. 2010  


Помог: 322 раз(а)




KingStar прямое включение файла? любого?
KingStar пишет:
То что программа работает, не означает что она написана правильно!
Ха-ха
 
 Top
easy63
Отправлено: 05 Августа, 2012 - 13:52:53
Post Id


Новичок


Покинул форум
Сообщений всего: 24
Дата рег-ции: Июль 2012  


Помог: 0 раз(а)




Кто нибудь может все таки подсказать или никто не знает?
 
 Top
KingStar
Отправлено: 05 Августа, 2012 - 13:56:45
Post Id



Участник


Покинул форум
Сообщений всего: 1889
Дата рег-ции: Авг. 2011  
Откуда: Беларусь


Помог: 69 раз(а)




LIME пишет:
KingStar прямое включение файла? любого?


я всего лишь ответил, он сам должен понимать что делает ...

(Отредактировано автором: 05 Августа, 2012 - 13:59:49)



-----
То что программа работает, не означает что она написана правильно!
 
 Top
easy63
Отправлено: 05 Августа, 2012 - 14:01:10
Post Id


Новичок


Покинул форум
Сообщений всего: 24
Дата рег-ции: Июль 2012  


Помог: 0 раз(а)




Так может кто нибудь подсказать?

(Отредактировано автором: 05 Августа, 2012 - 14:02:05)

 
 Top
KingStar
Отправлено: 05 Августа, 2012 - 14:02:14
Post Id



Участник


Покинул форум
Сообщений всего: 1889
Дата рег-ции: Авг. 2011  
Откуда: Беларусь


Помог: 69 раз(а)




если уж так нужно, то создай массив с названиями файлов, в цикле перебирай, и если GET равен названию - инклуд, ну и по умолчанию выбери, если нет совпадений

если инклуды лежат отдельно в папке, можно получить список файлов, и перебирать в цикле

(Отредактировано автором: 05 Августа, 2012 - 14:04:43)



-----
То что программа работает, не означает что она написана правильно!
 
 Top
easy63
Отправлено: 05 Августа, 2012 - 14:03:10
Post Id


Новичок


Покинул форум
Сообщений всего: 24
Дата рег-ции: Июль 2012  


Помог: 0 раз(а)




KingStar пишет:
я всего лишь ответил, он сам должен понимать что делает ...

Если мне подскажут как сделать и покажут код, я с начало разберусь с ним что есть что, а потом уже буду ставить.
p.s. тупо что дадут не вставляю
 
 Top
KingStar
Отправлено: 05 Августа, 2012 - 14:03:59
Post Id



Участник


Покинул форум
Сообщений всего: 1889
Дата рег-ции: Авг. 2011  
Откуда: Беларусь


Помог: 69 раз(а)




я лишь показал как в цикле подставить, что с ним делать - ты сам должен понимать, делать все возможные проверки и т.п. а не тупо ждать, когда за тебя напишут

(Отредактировано автором: 05 Августа, 2012 - 14:05:57)



-----
То что программа работает, не означает что она написана правильно!
 
 Top
easy63
Отправлено: 05 Августа, 2012 - 14:06:22
Post Id


Новичок


Покинул форум
Сообщений всего: 24
Дата рег-ции: Июль 2012  


Помог: 0 раз(а)




KingStar пишет:
если уж так нужно, то создай массив с названиями файлов, в цикле перебирай, и если GET равен названию - инклуд, ну и по умолчанию выбери, если нет совпадений

В том то и дело что с массивами не работал. Как я понял надо:

$id = $_GET['index'];

$a = array(addpage, listpage);

foreach($id as $a) {
echo "и тут уже инклуд в общем";
}

Правильно ли я создал массив, и вот это не понимаю $id as $a где == или как это работает? Документацию почитал и как обычно не все понял. Проще разобраться при написании самому.
 
 Top
KingStar
Отправлено: 05 Августа, 2012 - 14:08:21
Post Id



Участник


Покинул форум
Сообщений всего: 1889
Дата рег-ции: Авг. 2011  
Откуда: Беларусь


Помог: 69 раз(а)




PHP:
скопировать код в буфер обмена
  1. foreach($id as $value) {
  2.    if(in_array($value, $a)) { echo "и тут уже инклуд в общем"; }
  3. }

(Добавление)
easy63 пишет:
Правильно ли я создал массив, и вот это не понимаю $id as $a где == или как это работает? Документацию почитал и как обычно не все понял. Проще разобраться при написании самому.


перебирает массив GET, и каждое значение присваивает переменной $a
но т.к. у тебя переменная $a - массив файлов, значение нужно другое


-----
То что программа работает, не означает что она написана правильно!
 
 Top
easy63
Отправлено: 05 Августа, 2012 - 14:10:55
Post Id


Новичок


Покинул форум
Сообщений всего: 24
Дата рег-ции: Июль 2012  


Помог: 0 раз(а)




$id = $_GET['index'];
$a = array(addpage, listpage);

foreach($id as $value) {
if(in_array($value, $a)) { echo "и тут уже инклуд в общем"; }
}

Пишет Warning: Invalid argument supplied for foreach()

Откуда берется переменная $value?

(Отредактировано автором: 05 Августа, 2012 - 14:11:20)

 
 Top
KingStar
Отправлено: 05 Августа, 2012 - 14:13:44
Post Id



Участник


Покинул форум
Сообщений всего: 1889
Дата рег-ции: Авг. 2011  
Откуда: Беларусь


Помог: 69 раз(а)




PHP:
скопировать код в буфер обмена
  1. $a = array(addpage, listpage);
  2. foreach($_GET as $value) {
  3.    if(in_array($value, $a)) { echo "и тут уже инклуд в общем"; }
  4. }


easy63 пишет:
Откуда берется переменная $value?

она не берется, она определяется в цикле

(Отредактировано автором: 05 Августа, 2012 - 14:15:34)



-----
То что программа работает, не означает что она написана правильно!
 
 Top
easy63
Отправлено: 05 Августа, 2012 - 14:23:38
Post Id


Новичок


Покинул форум
Сообщений всего: 24
Дата рег-ции: Июль 2012  


Помог: 0 раз(а)




PHP:
скопировать код в буфер обмена
  1. //Компоненты
  2. $component = array(addpage, listpage);
  3.  
  4. //Перебираем значения и выводим нужную страницу
  5. foreach($_GET as $value) {
  6.    if(in_array($value, $component)) {
  7.    echo "и тут уже инклуд в общем";
  8.    }
  9. }


Все заработало, я вроде начал понимать,

$value это значение из массива?

(in_array($value, $component)) Это проверка существует ли такое значение в массиве по сравнению с введенным урл? но как она работает там же нету оператора сравнения?

И теперь адресе надо писать ?index=listpage (глобальная переменная и её значение)
Можно ли сделать что бы сравнивались сами глобальные переменные? Что бы адрес выглядил так
?listpage
?addpage
и т.д.?
 
 Top
Страниц (2): [1] 2 »
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB