PHP.SU

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

Страниц (594): В начало « ... 12 13 14 15 [16] 17 18 19 20 ... » В конец

> Найдено сообщений: 8901
EuGen Отправлено: 11 Ноября, 2013 - 15:23:45 • Тема: SESSION and COOCKIE • Форум: Вопросы новичков

Ответов: 7
Просмотров: 279
Пока что воздержусь от комментариев, но - уточнение:
- Если это статья, то исправьте, пожалуйста, ошибки - поскольку из-за них я не смог уловить смысл многих фраз, либо же он двояк (не говоря уже о том, что такой стиль/грамматика для статьи недопустим)
- Если это вопрос, то выделите чётко, что Вы спрашиваете, так как сейчас это понять не представляется возможным.
EuGen Отправлено: 11 Ноября, 2013 - 14:17:25 • Тема: Не подскажите как вам?? • Форум: Вопросы новичков

Ответов: 7
Просмотров: 214
Leaderss пишет:
хороший ли это код??

Плохой. Отсутствующий cookie-header в соответствующем HTTP-Request разрушит всю подобную защиту. И - да, роботы шлют через cURL, им не нужно стирать куки в браузере.
EuGen Отправлено: 11 Ноября, 2013 - 09:54:57 • Тема: Авторизация и отправка смс • Форум: HTTP и PHP

Ответов: 2
Просмотров: 1025
Почему же неразумно. Если это спам - то цель вполне оправдывает средства. Вот только - не на данной конференции.
EuGen Отправлено: 10 Ноября, 2013 - 17:54:40 • Тема: Приватные методы __construct () и __clone () • Форум: Объектно-ориентированное программирование

Ответов: 12
Просмотров: 3492
Ch_chov пишет:
А разве приватный конструктор не приводит к Fatal Error при попытке создать объект стандартным способом?

Приводит. О том и речь. А раз так, я предполагаю, что предложенный вариант с exit относится к публичному конструктору - и потому считаю это плохой идеей (и, если уж есть такая необходимость, корректнее использовать исключения, хотя и с ними такой подход выглядит в лучшем случае странным).
EuGen Отправлено: 10 Ноября, 2013 - 17:49:02 • Тема: Приватные методы __construct () и __clone () • Форум: Объектно-ориентированное программирование

Ответов: 12
Просмотров: 3492
DelphinPRO
Нет, вероятно, посыл не был понят. Если это случай, когда класс разрабатывается для самого себя - то вполне достаточно сделать конструктор приватным (для самого себя нет нужды использовать exit - ведь про свои действия каждый в курсе).

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

Разумеется, я имею ввиду связку обычного (публичного) конструктора + exit, так как в случае с приватным конструктором возникнет Fatal error ещё до вызова exit
EuGen Отправлено: 10 Ноября, 2013 - 16:51:00 • Тема: Приватные методы __construct () и __clone () • Форум: Объектно-ориентированное программирование

Ответов: 12
Просмотров: 3492
OrmaJever
В корне плохая идея. exit не предоставляет никакой возможности или свободы при выборе действий. Таким образом, прерывая исполнение скрипта, исключается любая возможность определить реакцию на возникшую ситуацию. Корректный способ - использовать исключения (Exception), но даже и так - в ряде случаев приватный конструктор может принимать параметры и использоваться в других статических методах, инстанцирующих объект.

Насчёт синглтона - его польза в PHP стремится к нулю, по сути это почти всегда антипаттерн. Разумное правило - если объект не должен существовать более, чем в одном экземпляре - не инстанцировать его более одного раза. Хорошее пояснение почему это так для PHP есть здесь

Насчёт статических методов - их лучше избегать. Есть немного случаев, когда их использование оправдано (например, уже упомянутые выше инстанцирующие методы, которые по определению не могут быть иначе как статичными ввиду отсутствия контекста объекта при их вызове). Общее пояснение - статические методы трудно тестировать, они являются, по сути, неявным побочным эффектом (side-effect), так как переносят общий контекст между разными объектами - а это затрудняет читаемость, переносимость и поддержку кода в большинстве случаев.
EuGen Отправлено: 09 Ноября, 2013 - 17:56:14 • Тема: вопрос по preg_replace • Форум: Вопросы новичков

Ответов: 1
Просмотров: 100
Если обе строки - константы, то достаточно

Если же нужно именно preg_replace, то выражение для поиска должно иметь разделители, например,
EuGen Отправлено: 09 Ноября, 2013 - 15:59:13 • Тема: Групировка данных • Форум: Хранение данных, их вывод и обработка

Ответов: 4
Просмотров: 1282
Тогда запрос будет таким:

CODE (SQL):
скопировать код в буфер обмена
  1. SELECT
  2.   parent.id AS parent_id,
  3.   parent.name AS parent_name,
  4.   child.id AS child_id,
  5.   child.name AS child_name
  6. FROM
  7.   t AS parent
  8.     LEFT JOIN t AS child
  9.       ON parent.id=child.parent_id

- а в коде сбор данных нужно делать:
PHP:
скопировать код в буфер обмена
  1. //$select derived from DB driver
  2. $result = [];
  3. while($row=mysqli_fetch_array($select))
  4. {
  5.    $result[$row['parent_id']] = [
  6.       'id'   => $row['parent_id'],
  7.       'name' => $row['parent_name']
  8.    ];
  9.    $result[$row['parent_id']]['childs'][] = [
  10.       'id'   => $row['child_id'],
  11.       'name' => $row['child_name']
  12.    ];
  13. }
EuGen Отправлено: 09 Ноября, 2013 - 15:18:06 • Тема: Групировка данных • Форум: Хранение данных, их вывод и обработка

Ответов: 4
Просмотров: 1282
Зависит от того, сколько уровней вложенности существует. Если фиксированное число - то можно одним запросом. Либо же - изменить структуру таблицы (см. nested sets)
EuGen Отправлено: 08 Ноября, 2013 - 17:28:11 • Тема: Знать ДРЕВО рода своего это важно • Форум: Хранение данных, их вывод и обработка

Ответов: 6
Просмотров: 1827
Спойлер (Отобразить)


По теме: nested sets ; mysql version
EuGen Отправлено: 01 Ноября, 2013 - 18:10:51 • Тема: Парсер конфиг файла • Форум: Регулярные выражения

Ответов: 11
Просмотров: 630
PHP:
скопировать код в буфер обмена
  1. preg_match_all('/param\=([^\r\n]*)[\r\n]+data\=([^\r\n]*)/i', $text, $matches);
  2. $matches = array_combine($matches[1], $matches[2]);
  3. //var_dump($matches);

?
EuGen Отправлено: 01 Ноября, 2013 - 08:42:29 • Тема: Рандомная парная выборка в методе • Форум: Объектно-ориентированное программирование

Ответов: 4
Просмотров: 1363
Вы говорите не о ключах, а о значениях. Кроме того, зачем нужны пустые значения? (они есть в каждом элементе 2-го уровня). Если они не нужны, то зачем нужна вложенность 3-го уровня, не будет ли достаточно 2-й? Если всё же пустые значения по какой-то причине нужны, как они должны быть обработаны?
EuGen Отправлено: 31 Октября, 2013 - 08:12:04 • Тема: Работа с классами • Форум: Вопросы новичков

Ответов: 4
Просмотров: 197
ВэйДлин
Смысл в том, что PHP уже имеет штатный класс, реализующий все стандартные интерфейсы работы с массивами. Называется ArrayObject и при наследовании от него, разумеется, класс получит все его свойства, после чего с ним можно будет работать, как с массивом.
EuGen Отправлено: 30 Октября, 2013 - 10:54:55 • Тема: Создание полей в базе mySQL • Форум: Напишите за меня, пожалуйста

Ответов: 12
Просмотров: 86
Указывайте id явно. Либо используйте перенумерацию после создания записей. Корректный путь - не привязываться к id, так как они - всего лишь номера и ничего более.
EuGen Отправлено: 29 Октября, 2013 - 16:14:40 • Тема: Вопрос по безопасности php • Форум: Программирование на PHP

Ответов: 99
Просмотров: 4972
Stokmam
Это зависит от того, что значит "не допустить уязвимость". Использование стольких функций подсказывает мне, что Вы делаете это "просто на всякий случай", то есть не имеете чёткого представления - где, как и для чего будут использоваться сохранённые данные. Это плохо. Значит, я тем более не могу ответить, что для Вас безопасно, а что - нет. Я могу лишь сказать, что приведённый код запишет верную SQL-строку, у которой удалены концевые пробельные символы и html-теги заменены на их экранирующие представления. Достаточно ли этого? Неизвестно. Может быть, у Вас планируется система проверки прав пользователей и Вам нельзя записывать, например, значение '0'. С точки зрения приведённой функции оно вполне верно, но с точки зрения логики - уже нет. Поэтому прежде, чем задавать себе вопросы о безопасности, стоит задать вопрос из разряда "как же вообще всё это должно работать?" - Какой должна быть логика приложения, какие сценарии (user-story) допустимы и т.п.

Нельзя заниматься вопросами безопасности в приложении, логика которого неопределена и архитектура которого неизвестна. И нельзя написать "универсальную" функцию, которая предусмотрит все возможные исходы - так как эти исходы связаны с логикой приложения.

Страниц (594): В начало « ... 12 13 14 15 [16] 17 18 19 20 ... » В конец
Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB