Intereting Posts
Шифровать данные с помощью открытого ключа в c # и расшифровать данные с помощью закрытого ключа в php Специальная функция «Открыть сейчас» в часовом поясе Загрузка mp3 на мой (php) веб-сервер из приложения iPhone Linkedin создает проблемы с сообщениями Приращение оператора в петле forach для разбивки на страницы будет ли скрипт в теге скрипта html с расширением php кэшироваться? Получение запроса на перекрестный запрос исходного кода при использовании .getJSON для получения сведений о приложении Play Store Учетная запись Paypal Express Checkout отсутствует. Ошибка 10400 Как удалить index.php в коде codeigniter? PHP и MySQL: показать SUM о чем-то, классифицированном по отдельным категориям Не удается получить json из mysql varchar, но int Как защитить файлы от несанкционированной загрузки Разбор Javascript (не JSON) в PHP Предоставление простого текста через PHP jQuery DataTables Мастер / Подробности (дочерние строки) в виде частичного просмотра laravel

нечувствительный к регистру поиск в mongodb для имен пользователей в php

Я пытаюсь найти способ запросить mongodb в нечувствительном к регистру способе использования PHP, поскольку в настоящее время при проверке пользователя «Username» и «username» могут быть разными именами пользователей …

$cursor = $collection->findOne(array('username' => /{$_POST['value']}/i)); $lowerInput = strtolower($_POST['value']); $username = strtolower($cursor['username']); if($lowerInput == $username){ echo "That username appears to be in our database!"; } 

Я попробовал это, но курсор ищет только совпадение, чувствительное к регистру, поэтому он будет содержать только строковое значение курсора, если оно есть.

Драйвер PHP Mongo имеет внутренний объект Regex:

 $cursor = $collection->findOne( array('username' => new MongoRegex("/$_POST['value']/i") ); 

И btw я настоятельно рекомендую проверить значение $ _POST и, возможно, преобразовать ваше регулярное выражение, чтобы получить только имя пользователя (не более before / after => new MongoRegex('/^' . $securevalue . '$/i')

Изменить: мой ответ не был точным: запуск привязки позволяет mongo использовать индекс по этому запросу, если он доступен.

Поскольку MongoRegex устарел, используйте MongoDB \ BSON \ Regex . Обновленный пример из предыдущего ответа:

 $cursor = $collection->findOne( [ 'username' => new \MongoDB\BSON\Regex(preg_quote($_POST['value']), 'i') ] ); 

Я завернул переменную POST в preg_quote () для дезинфекции возможных вредоносных символов.