| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > PHP: Общие вопросы > насколько правильный и безопасный способ навигации |
| Автор: SAnatoliy 18.10.2007, 14:56 | ||
P.S. Прочитал тут на сайте, про глобальные переменные. понял что способ этот с этой точки зрения не безопасный. но придумать как иначе не могу наверно. Посоветуйте кто как делает и как надо. |
| Автор: Pokoinik 18.10.2007, 15:22 |
| SAnatoliy, во первых, код будет работать только с включенным регистр глобалс, что уже не безопасно, используй $_GET['con'] во вторых, быстре работать будет конструкция if ... else if... или switch в третьих с какого такого перепугу, если у тебя con ровна буквам, она будет ровняться цифрам 4 5 6 |
| Автор: olegop 18.10.2007, 15:47 | ||
| index.php?con=1 index.php?con=2 index.php?con=3
|
| Автор: MoLeX 19.10.2007, 11:25 | ||
Для дальнейшего развития темы
|
| Автор: flashaa 19.10.2007, 11:37 | ||||||
Вариант olegop, имхо, наиболее правильный. Ещё можно упростить, если
заменить на
В этом случае, нам не придется проверять внешнее условие isset:
|
| Автор: MoLeX 19.10.2007, 12:11 |
| flashaa, а если нужен модульный движок? в смысле кинул в папку новый модуль и фсе к нему можно обращаться и он работает, что тогда? |
| Автор: flashaa 19.10.2007, 12:31 | ||
Мой скрипт чему-то противоречит? Это же общая структура скрипта-контроллера, когда имеется некоторая переменная, идентифицирующая действие пользователя и как её можно обработать. Задача скрипта разграничить эти самые действия, а дальше после любой метки case помести свои дейтсвия для какого-угодно движка. Для твоего примера туда надо посестить reqire (нужный файл) |
| Автор: MoLeX 19.10.2007, 12:49 |
| да приваильно нужно поместить файл |
| Автор: flashaa 19.10.2007, 13:28 | ||||
| MoLeX твой вариант действительно хороший в том, что нужно редактировать один файл дял каждого действия. Ты разделяешь скрипт на блоки, это тоже хорошо - облегчает редактирование/замену. Но у твоего варианта также есть и минусы. Допустим у тебя есть несколько схожих действий пользователя, получается, что ты должен будешь писать во включаемых файлах одинаковый код. Скприты конечно много весить не будут, но зато в избыточности кода сразу затрудняется редактирование. Допустим написал 2 похожих файла и раскидал их в свою папку. А потом обнаружил, что у тебя была какая-то ошибка или нехорошее решение. Ты будешь редактировать каждый файл поочереди, если файлов много, запутаешься, пропустишь какие-то файлы... Это не говоря уже о глобальной переделке всей системы. Тогда тебе надо будет все файлы удалять и писать заново. У меня другой подход в скрипте, он работает как и твой в плане блочности, но лишен избыточности - каждый кусок кода повторяется в нем только 1 раз. Захочу поменять что-то в крупном проекте, поменяю исходный файл и все автоматически модернизируется. Я храню общую функциональность в одном месте, но это не значит, что я храню в этом index.php ВЕСЬ код, как раз наоборот. Я использую ООП на php5. Всю функциональность разбита на классы. А в заголовке скрипта прописан автолоадер.
Допустим я хочу работать с базой, тогда включаю класс Database
Как видишь кода не так уж много, все так же блочно и разделено. К тому же оно сосредоточено в одном файле и видна ВСЯ логика работы (в общих чертах) проекта и не надо для того чтобы разобраться лазить по всем файлам. Выше мы рассматривали только гет запросы. А если у тебя есть также POST и AJAX запросы, которые к тому же могут обрабатываться вместе? В моем случае это просто ещё одна секция кода в index.php а в твоем случае ты должен будешь писать файлы так, чтобы они получали информацию о действиях и переменных друг друга, что сомневаюсь, что получиться и ты скорее всего запутаешься - перепутаешь какие переменные были в одном файле, какие в другом, какие в глобальном скрипте. |