Расширение Mongo для PHP версии 5.99.99 или старше было заменено:
https://pecl.php.net/package/mongo
Используйте новый для PHP версии 7.99.99 или старше:
https://pecl.php.net/package/mongodb
Вы можете установить расширение PECL / PEAR автоматически :
pecl install mongodb
или вручную .
Классы также были изменены :
new \MongoClient(); // legacy class!
см. http://php.net/manual/en/book.mongo.php
new \MongoDB\Driver\Manager(); // new classes!
см. http://php.net/manual/en/set.mongodb.php
Дополнительную информацию о совместимости можно найти здесь:
https: / /docs.mongodb.org/ecosystem/drivers/php/#compatibility
Я обычно использую $this-> _ запрос-> getParams (); получать или сообщение или параметры URL. Тогда я использую Zend_Filter_Input, чтобы сделать проверку и фильтрацию. getParams () не делает проверки.
Используя Zend_Filter_Input можно сделать проверку прикладного уровня, с помощью Блоков проверки допустимости Зенда (или можно записать собственное также). Например, можно удостовериться, что поле 'месяцев' является числом:
$data = $this->_request->getParams();
$validators = array(
'month' => 'Digits',
);
$input = new Zend_Filter_Input($filters, $validators, $data);
Вы не можете записать, что единая функция проверки для получает/отправляет данные. Поскольку в некоторых случаях Вы требуете, чтобы поле было целым числом и в других дата, например. Вот почему в платформе зенда нет никакого контроля ввода.
необходимо будет записать код доступа в месте, где Вам нужен он. Можно, конечно, записать некоторые вспомогательные методы, но Вы не можете ожидать, что getPost () проверит что-то для Вас совершенно отдельно...
И это даже не место getPost/getQuery для проверки чего-либо, это - задание, должен получить Вас данные Вы wan't, что происходит с ним оттуда на, не должен быть, это - беспокойство.
я всегда использовал больше phpish
$this->_request->getPost('this')
и$this->_request->getQuery('that')
(этот являющийся не так логичный с getquery insteado getGet)., Что является лучшим из этого два? (или если существует другой лучший путь)
Просто быстрое объяснение на выборе getQuery()
. Выбор формулировки прибывает из того, какие данные это, не, как это добралось там. ДОБЕРИТЕСЬ и POST просто методы запроса, неся все виды информации, включая, в случае запроса POST, раздел, известный как "данные сообщения". ПОЛУЧИТЬ запрос не имеет такого блока, никакие переменные данные это, переносы являются частью строки запроса URL (часть после?).
Так, в то время как getPost()
получает данные из раздела данных сообщения запроса POST, getQuery()
, получает данные из строки запроса или ТОГО, ЧТОБЫ ПОЛУЧАТЬ или запроса POST (а также другие методы Запроса HTTP).
(Отмечают, что ПОЛУЧАЮТ Запросы, не должен использоваться ни для чего, что могло бы произвести побочный эффект, как изменение строки DB)
Так, в ответе на Ваш первый вопрос, используйте getPost()
и getQuery()
методы, этот путь, можно быть уверены в том, где источник данных (если Вы не заботитесь, getParams()
также работы, но может включать дополнительные данные).
, Какова лучшая практика для проверки php вход с этим методы?
лучшее место для проверки входа то, где Вы первое использование это. То есть, когда Вы вытягиваете его от getParams()
, getPost()
, или getQuery()
. Таким образом, Ваши данные всегда корректны для того, где Вам нужны они, и если Вы выдаете их, Вы знаете, что это безопасно. Следует иметь в виду при передаче его другому Контроллеру (или Действие Контроллера), необходимо, вероятно, проверить его снова там, только для сейфа. Как Вы делаете это зависит от Вашего приложения, но оно все еще должно быть проверено.
Расширение ответа Brian.
Как Вы отметили, можно также проверить $this->_request->getPost()
и $this->_request->getQuery()
. Если Вы делаете вывод на getParams()
, это - вид подобного использования $_REQUEST
суперглобальный и я не думаю, что это приемлемо с точки зрения безопасности.
Дополнительный к Zend_Filter, можно также использовать простой PHP для кастинга необходимого.
Например:
$id = (int) $this->_request->getQuery('id');
Для других значений это становится более сложным, поэтому удостоверьтесь, что, например, кавычка в Ваших запросах DB (Zend_Db, посмотрите идентификаторы заключения в кавычки, $db->quoteIdentifier()
) и в использовании представлений $this->escape($var);
выйти из содержания.
не имеет прямого отношения к теме, но чтобы гарантировать, что вы получите число во вводе, можно также использовать $ var + 0 (однако, если $ var является плавающим, он остается плавающим) вы можете использовать в большинстве случаев $ id = $ this -> _ request-> getQuery ('id') +0 ;