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 :: Как бы движок, но дико втыкает
Все работает, но примитив напрягает. Это как землю вскапывать голыми руками.
Искал долго, читал много. Ничего не нарыл. В итоге написал это.
Помогите пожалуйста! Лаконизм кода приветствуется.
ЗЫ. Готов до первого поста с решением внести объявленный призовой фонд (10$) в залог авторитету форума и прогеру в законе, он и рассудит, и присудит, и переведет приз победителю.
OrmaJever
Отправлено: 13 Августа, 2011 - 23:03:31
Активный участник
Покинул форум
Сообщений всего: 7540
Дата рег-ции: Янв. 2010 Откуда: Чернигов
Покинул форум
Сообщений всего: 16
Дата рег-ции: Авг. 2011
Помог: 0 раз(а)
White
Спасибо, круче. И работает как будто быстрее. Еще варианты пожалуйста! (Добавление)
А почему сервер ругается? :
[Sun Aug 14 01:15:41 2011] [error] [client 46.61.1.7] ALERT - tried to register forbidden variable '_REQUEST' through GET variables (attacker '46.61.1.7', file '/usr/home/...../site.ru/html/index.php'), referer: http://site.ru/contacts.html
А вообще все эти выкрутасы можно сделать в одном .htaccess
для вас было бы пожалуй наиболее правильным решением
----- if(time()>1356048000) die();
ok
Отправлено: 14 Августа, 2011 - 09:39:33
Новичок
Покинул форум
Сообщений всего: 16
Дата рег-ции: Авг. 2011
Помог: 0 раз(а)
tsoi85
Замечательно! Это настоящий движок! Нет двойной проверки: 1) наличия урла (проверяет движок в массиве, а если на сайте не 8, а 8000 страниц?); 2) наличия файла в каталоге /data/.... (проверяет апач и делает это неизбежно). Следовательно, первую проверку (движком) надо убрать, что блестяще проделал tsoi85. Движок работает почти также быстро, как и реально лежащие файлы с инклудящимся шаблоном. В случае с массивом урлов все работало заметно медленнее.
Но появились новые траблы:
1) не выводится 404. Понятно, что это должен делать апач через ErrorDocument. Я пробовал добавлять в .htaccess эту директиву в двух вариантах: ErrorDocument 404 /errors/404.php и ErrorDocument 404 /data/errors/404.php . Не работает, браузер Firefoks показывает пустую страницу с пустым source. Пробовал в движке комментить последние строки, тоже не помогает:
;
2) выводятся урлы: /index.html ; /index.php ; /articles/index.html ; что недопустимо (дублирование контента). Очень желательно по ним получать 404, на худой конец - 301.
Как сделать не знаю. (Добавление)
White пишет:
DeepVarvar пишет:
А вообще все эти выкрутасы можно сделать в одном .htaccess
для вас было бы пожалуй наиболее правильным решением
Уважаемые White и DeepVarvar! Оромное спасибо за участие и желание помочь. Решение сделать все через .htaccess лежит на поверхности и не является оптимальным. Озвучиваю МОТИВЫ написания движка:
1. Возможность один раз в одном месте инклудить шаблон. В варианте реально лежащих по запрашиваемому пути файлов .php с рерайтом на .html нужно было в каждом файле прописывать путь к шаблону (include "templates/template.php"; или "../templates/template.php" и т.д.);
2. Возможность получать 200 только по тем урлам, которые есть в Sitemap.xml. По всем остальным мой первоначальный вариант движка и все здесь предложенные варианты с массивом урлов отдают 404, например по /index.php, /index.html, и это ЗДОРОВО. В случае реальных урлов (.*)/index.html приходилость редиректить 301 на (.*)/, а вот при запросе урлов с .php на конце, он их выводил как зайчик с ответом 200 и с этим, наверное, ничего сделать нельзя. Яндекс ест их регулярно, не смотря на запрет в роботсе, и держит не в индексе, но в загашнике, что неприятно, чувствуешь какую-то беспомощность перед этим монстром;
3. Возможность в дальнейшем легче перейти на php + mysql.
4. Наличие движка как такового повышает социальный статус: был безлошадный, голь перекатная, а теперь - верхом на движке о четырех копытах, зажиточный !
В папку /errors/ я тупо положу .htaccess (deny from all)
Не выход, т.к. можно и ещё на папку выше вылезти.
White
Отправлено: 14 Августа, 2011 - 11:05:24
Частый посетитель
Покинул форум
Сообщений всего: 830
Дата рег-ции: Июнь 2011 Откуда: Днепропетровск
Помог: 28 раз(а)
ok положите. только вы забыли одно но. запрашивать этот файл будет не клиент через браузер, а ваш index.php через include.
P.S. я же сказал, не заморачивайтесь. вероятность того что кто-либо не знакомый с исходниками вашего скрипта и структурой сайта попробует сделать что-либо подобное стремится к почти абсолютному нолю (Добавление) tsoi85 да, так должно сработать.
----- if(time()>1356048000) die();
ok
Отправлено: 14 Августа, 2011 - 11:13:08
Новичок
Покинул форум
Сообщений всего: 16
Дата рег-ции: Авг. 2011
Помог: 0 раз(а)
tsoi85
Исправил, 404 все равно не отдается.
Случайно, забыв переключить раскладку, ввел /contacts.зрз и получил на экран главную страницу. Попробовал: http://site[dot]ru/любаякириллица , выводится содержимое главной страницы.
Все гости форума могут просматривать этот раздел. Только зарегистрированные пользователи могут создавать новые темы в этом разделе. Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.