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
Форумы портала PHP.SU :: Версия для печати :: Защита кода
Форумы портала PHP.SU » » CMS и фреймворки » Защита кода

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

1. Prizma - 24 Июля, 2012 - 16:45:04 - перейти к сообщению
Я думал что т.к. php не компилируется нельзя защитить код, а потом задумался, как тогда работают платные CMS? ну да допустим дадут они часть кода, человек проплатил вторую часть кода, а что мешает ему потом распространить этот код или выложить в интернет? почему он не будет работать? или будет?

потом прочитал про существование в PHP5+ "protected", "private" или "public" - это то что используется в классах что бы ограничить использование функции... так а даже если и защитить такой лабудой, если скрипт выполняется на сервере то можно открыть файл с этим классом изменить там что нужно или скопировать файл и выложить в интернет... или я чего то не понимаю?

наверно здесь есть люди которые работали с платными движками, как они защищают себя от распространения?

и ещё, есть сайт каталог работающий на старой joomla 1.5 + virtuemart но т.к. движок сильно устарел, форумы поддержки не активны практически, функций мало и т.п. посоветуйте движок для сайта-каталога (желательно что бы была перспектива для интернет-магазина в будущем)
(Добавление)
не обязательно бесплатная CMS но желательно не сильно дорогая
2. Мелкий - 24 Июля, 2012 - 17:08:52 - перейти к сообщению
Prizma пишет:
или я чего то не понимаю?

Не понимаете. Эти модификаторы нужны только разработчику, позволяют скрыть детали реализации в методах, оставив доступным другому коду лишь интерфейс взаимодействия.
Куда сложнее помнить, что вот эти 8 из 10 методов - для внутреннего использования сделаны. Когда вам надо изменить метод и он - private - вы знаете, что весь проект можете не смотреть, потому что весь код, использующий этот метод - в этом же классе. И прочее из арсенала инкапсуляции.


Хорошей CMS защита не нужна, наоборот, распространение её - реклама оригинальной компании. Корпоративным клиентам нужна поддержка (например, подпиливание под свои нужды) и обратятся они к разработчикам.
Те, кто не уважает своих пользователей и ставят превыше эфемерную защиту своего... продукта - используют обфускацию. Защита обычно никакая, а поддерживать это невозможно.
Если это что-то достаточно уникальное и хотят защиты - ionCube и Zend Optimizer, что накладывает свои ограничения на хостинг и полный крест на самостоятельной поддержке. Vendor Lock. Ну и денег стоят.
3. Prizma - 24 Июля, 2012 - 20:15:09 - перейти к сообщению
понятненько, то есть скрытие заключается всего навсего в сложности кода.

А по поводу классов я с ними не много работал класс обязательно должен быть подключен выше по файлу что бы его использовать в данном скрипте так? так же как и функции

и не совсем понял по поводу "protected", "private" или "public" вот этих параметров... допусти я создал класс class.php:
PHP:
скопировать код в буфер обмена
  1. class mycalss
  2. {
  3. var $login;
  4.  
  5. function login($login)
  6. { echo $this->login;}
  7.  
  8. }

PHP:
скопировать код в буфер обмена
  1. файл index.php:
  2. include 'class.php';
  3.  
  4. $class = new myclass()
  5. $class->login();

в чем будет различие доступа класса myclass в файле index.php в зависимости от выбранного одного из параметров "protected", "private" или "public"?
4. DelphinPRO - 24 Июля, 2012 - 20:42:52 - перейти к сообщению
Prizma пишет:
не совсем понял по поводу "protected", "private" или "public"

public метод (свойство) доступно внутри класса, вне класса, из унаследованного класса.
private метод (свойство) доступно только внутри класса.
protected метод (свойство) доступно внутри класса, из унаследованного класса.


Ответы на такие вопросы надо в учебниках искать, а не на форуме
5. Prizma - 25 Июля, 2012 - 23:39:15 - перейти к сообщению
не совсем понял что значит "внутри класса" и "в не класса" внутри класса это когда мы пишем new ИМЯ_КЛАССА; и через $this->Функция(переменная)? а в не класса это надо что бы класс просто был подключен так? не обязательно писать new ИМЯ_КЛАССА; и вызывать через $this составляющие класса так? или не правильно понял?
6. Toxa - 25 Июля, 2012 - 23:50:48 - перейти к сообщению
Нет, не правильно
PHP:
скопировать код в буфер обмена
  1. <?PHP
  2. Class User
  3. {
  4.     private $_name; // переменная доступна только внутри класса
  5.  
  6.     public function setName($name)
  7.     {
  8.         $this->_name = $name; // присваиваем значение внутренней переменной
  9.     }
  10.  
  11.     public function getName()
  12.     {
  13.         return $this->_name; // возвращаем внутреннюю переменную
  14.     }
  15. }
  16. ?>

Потом в другом внешнем скрипте

PHP:
скопировать код в буфер обмена
  1. <?PHP
  2. include 'User.php';
  3.  
  4. $user = new User;
  5.  
  6. // Устанавливаем имя ВНУТРЕННЕЙ переменной через ПУБЛИЧНУЮ функцию
  7. $user->setName('Anton');
  8.  
  9. // Получаем внутреннюю переменную через публичную функцию
  10. echo $user->getName();
  11. ?>

В это примере переменная $_user доступна только внутри класса.
7. Prizma - 26 Июля, 2012 - 16:30:37 - перейти к сообщению
спасибо вроде ясно)

 

Powered by ExBB FM 1.0 RC1