При обработке входа с Платформой Зенда (Сообщение, доберитесь, и т.д.),

Расширение 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

23
задан Till 27 April 2009 в 23:58
поделиться

5 ответов

Я обычно использую $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);
34
ответ дан Brian Fisher 29 November 2019 в 01:25
поделиться

Вы не можете записать, что единая функция проверки для получает/отправляет данные. Поскольку в некоторых случаях Вы требуете, чтобы поле было целым числом и в других дата, например. Вот почему в платформе зенда нет никакого контроля ввода.

необходимо будет записать код доступа в месте, где Вам нужен он. Можно, конечно, записать некоторые вспомогательные методы, но Вы не можете ожидать, что getPost () проверит что-то для Вас совершенно отдельно...

И это даже не место getPost/getQuery для проверки чего-либо, это - задание, должен получить Вас данные Вы wan't, что происходит с ним оттуда на, не должен быть, это - беспокойство.

6
ответ дан Jan Hančič 29 November 2019 в 01:25
поделиться

я всегда использовал больше 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(). Таким образом, Ваши данные всегда корректны для того, где Вам нужны они, и если Вы выдаете их, Вы знаете, что это безопасно. Следует иметь в виду при передаче его другому Контроллеру (или Действие Контроллера), необходимо, вероятно, проверить его снова там, только для сейфа. Как Вы делаете это зависит от Вашего приложения, но оно все еще должно быть проверено.

1
ответ дан Kenzal Hunter 29 November 2019 в 01:25
поделиться

Расширение ответа 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); выйти из содержания.

10
ответ дан 29 November 2019 в 01:25
поделиться

не имеет прямого отношения к теме, но чтобы гарантировать, что вы получите число во вводе, можно также использовать $ var + 0 (однако, если $ var является плавающим, он остается плавающим) вы можете использовать в большинстве случаев $ id = $ this -> _ request-> getQuery ('id') +0 ;

1
ответ дан 29 November 2019 в 01:25
поделиться
Другие вопросы по тегам:

Похожие вопросы: