Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> насколько правильный и безопасный способ навигации 
:(
    Опции темы
SAnatoliy
Дата 18.10.2007, 14:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 79
Регистрация: 1.10.2007

Репутация: нет
Всего: нет



Цитата


ссылки меню такие: 
ndex.php?con=s
ndex.php?con=y
ndex.php?con=m

if($con==4) { include ($inclu_files['s']); }
if($con==5) { include ($inclu_files['y']); }
if($con==6) { include ($inclu_files['m']); }

имя в массиве $inclu_files['s']

P.S.
Прочитал тут на сайте, про глобальные переменные. понял что способ этот с этой точки зрения не безопасный. 

но придумать как иначе не могу наверно.  Посоветуйте кто как делает и как надо.
PM MAIL   Вверх
Pokoinik
Дата 18.10.2007, 15:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 283
Регистрация: 17.3.2007
Где: /dev/null

Репутация: 2
Всего: 3



SAnatoliy
во первых,
код будет работать только с включенным регистр глобалс, что уже не безопасно,
используй $_GET['con']
во вторых,
быстре работать будет конструкция 
if ... else if...
или switch
в третьих с какого такого перепугу, если у тебя con ровна буквам, она будет ровняться цифрам 4 5 6

Это сообщение отредактировал(а) Pokoinik - 18.10.2007, 15:51


--------------------
ICQ: 490-993
Существует только 10 типов людей: те, которые понимают двоичную систему, и которые ее не понимают!!!
Опасайтесь людей верующих, ибо у них есть боги, которые им все прощают.

Делай или не делай! Никаких попробую!
Йода (Yoda), мастер-джедай
PM MAIL ICQ   Вверх
olegop
Дата 18.10.2007, 15:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 46
Регистрация: 2.10.2007
Где: ПМР, Тирасполь

Репутация: нет
Всего: нет



index.php?con=1
index.php?con=2
index.php?con=3

Код

if(isset($_GET['con'])) { 
    switch ($_GET['con']) {
        case 1: //Набор команд
            break;
        case 2: //Набор команд
            break;
        case 3: //Набор команд
            break;
         }
} else {
        //набор команд
            }

PM MAIL   Вверх
MoLeX
  Дата 19.10.2007, 11:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Местный пингвин
****


Профиль
Группа: Модератор
Сообщений: 4076
Регистрация: 17.5.2007

Репутация: 46
Всего: 140



Для дальнейшего развития темы  smile: как воот такая навигация
Код

$page = htmlspecialchars($_GET['page']);    
$DIR=empty($page)?null:$page; 
$DIR = substr($DIR, 0, 17);

if(empty($DIR)) 
    require("./include/index/index.php"); 
elseif(file_exists("./include/".basename($DIR)."/index.php")) 
    require("./include/".basename($DIR)."/index.php"); 
else 




--------------------
Amazing  smile 
PM MAIL WWW ICQ   Вверх
flashaa
Дата 19.10.2007, 11:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 796
Регистрация: 7.3.2006

Репутация: 19
Всего: 25



Вариант olegop, имхо, наиболее правильный. Ещё можно упростить, если 
Код

switch ($_GET['con'])

заменить на 
Код

switch (@$_GET['con'])

В этом случае, нам не придется проверять внешнее условие isset:


Код

    switch (@$_GET['con']) {
        case 1: //Набор команд
            break;
        case 2: //Набор команд
            break;
        case 3: //Набор команд
            break;
        default: 
            // Тут будут те операторы, которые были после else
            break;
         }



Это сообщение отредактировал(а) flashaa - 19.10.2007, 11:40
PM MAIL   Вверх
MoLeX
Дата 19.10.2007, 12:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Местный пингвин
****


Профиль
Группа: Модератор
Сообщений: 4076
Регистрация: 17.5.2007

Репутация: 46
Всего: 140



flashaa, а если нужен модульный движок? в смысле кинул в папку новый модуль и фсе к нему можно обращаться и он работает, что тогда?


--------------------
Amazing  smile 
PM MAIL WWW ICQ   Вверх
flashaa
Дата 19.10.2007, 12:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 796
Регистрация: 7.3.2006

Репутация: 19
Всего: 25



Цитата(MoLeX @ 19.10.2007,  12:11)
flashaa, а если нужен модульный движок? в смысле кинул в папку новый модуль и фсе к нему можно обращаться и он работает, что тогда?

Мой скрипт чему-то противоречит? Это же общая структура скрипта-контроллера, когда имеется некоторая переменная, идентифицирующая действие пользователя и как её можно обработать. Задача  скрипта разграничить эти самые действия, а дальше после любой метки case помести свои дейтсвия для какого-угодно движка.

Для твоего примера туда надо посестить reqire (нужный файл) 

Это сообщение отредактировал(а) flashaa - 19.10.2007, 12:37
PM MAIL   Вверх
MoLeX
Дата 19.10.2007, 12:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Местный пингвин
****


Профиль
Группа: Модератор
Сообщений: 4076
Регистрация: 17.5.2007

Репутация: 46
Всего: 140



да приваильно нужно поместить файл smile. Лано сформулирую: ты пишешь большой проект который будет развиваться и в дальнейшем (появлеются новые блоки и т.д.), согласись каждый раз открывать файлик (index.php или что там у тебя будет) искать нужное место править\добавлять и т.д. неудобно же. так вот что ты в таком случае делать будешь?


--------------------
Amazing  smile 
PM MAIL WWW ICQ   Вверх
flashaa
Дата 19.10.2007, 13:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 796
Регистрация: 7.3.2006

Репутация: 19
Всего: 25



MoLeX твой вариант действительно хороший в том, что нужно редактировать один файл дял каждого действия. Ты разделяешь скрипт на блоки, это тоже хорошо - облегчает редактирование/замену. 
Но у твоего варианта также есть и минусы. Допустим у тебя есть несколько схожих действий пользователя, получается, что ты должен будешь писать во включаемых файлах одинаковый код. Скприты конечно много весить не будут, но зато в избыточности кода сразу затрудняется редактирование. Допустим написал 2 похожих файла и раскидал их в свою папку. А потом обнаружил, что у тебя была какая-то ошибка или нехорошее решение. Ты будешь редактировать каждый файл поочереди, если файлов много, запутаешься, пропустишь какие-то файлы... Это не говоря уже о глобальной переделке всей системы. Тогда тебе надо будет все файлы удалять и писать заново.

У меня другой подход в скрипте,  он работает как и твой в плане блочности, но лишен избыточности - каждый кусок кода повторяется в нем только 1 раз. Захочу поменять что-то в крупном проекте, поменяю исходный файл и все автоматически модернизируется. 
Я храню общую функциональность в одном месте, но это не значит, что я храню в этом index.php ВЕСЬ код, как раз наоборот.
Я использую ООП на php5. Всю функциональность разбита на классы. А в заголовке скрипта прописан автолоадер.

Код

public function __autoload($c) {
      require_once('classes/class' . $c .'.php');
}


Допустим я хочу работать с базой, тогда включаю класс Database

Код

сase 'add':
    $work = new Database(); // вызывается автолоадер и включается файл class.Database.php
    $work->add($_REQUEST['record']);
    
    break;

case 'delete':
    ...
    break;


Как видишь кода не так уж много, все так же блочно и разделено. К тому же оно сосредоточено в одном файле и видна ВСЯ логика работы (в общих чертах) проекта и не надо для того чтобы разобраться лазить по всем файлам. 

Выше мы рассматривали только гет запросы.
А если у тебя есть также POST и AJAX запросы, которые к тому же могут обрабатываться вместе?

В моем случае это просто ещё одна секция кода в index.php а в твоем случае ты должен будешь писать файлы так, чтобы они получали информацию о действиях и переменных друг друга, что сомневаюсь, что получиться и ты скорее всего запутаешься - перепутаешь какие переменные были в одном файле, какие в другом, какие в глобальном скрипте.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0756 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.