Я получаю сообщение об ошибке. Я знаю, что в этом примере я должен переключить #
на ##
. Но что мне делать с другими специальными символами в моей базе данных?
Ничего. Вы можете хранить все нужные символы. Вы не получите эту ошибку при вызове decrypt() с вашими значениями запроса.
«Неверная конструкция CFML найдена». - ошибка компиляции. Это происходит до того, как любой CF-код даже выполняется. Единственная причина, по которой это происходит в вашем примере, состоит в том, что #
встроен в сам CF-код. Поэтому, когда сервер CF анализирует и компилирует этот код, он видит неэкранированный знак # как начало какой-либо переменной и ищет закрывающий знак #
. Когда он не находит тот, где он ожидает, он вызывает ошибку, и компиляция не выполняется. Таким образом, незарегистрированные знаки #
являются только проблемой, когда они содержатся в в пределах, что фактический CF-код (или строка, оцененная как CF-код).
Когда вы извлекаете зашифрованный текст из таблицы db, CF не оценивает значения запроса как код. Он просто вытягивает строки из db и передает их в функцию дешифрования. Так что ошибка не может произойти.
Сказав все это, вы действительно не должны использовать CFMX_COMPAT - для чего-либо. Это вовсе не шифрование, а скорее устаревший алгоритм обфускации, поддерживаемый только для обратной совместимости. Вместо этого используйте настоящий алгоритм шифрования, такой как AES, Blowfish и т. Д. Вы также можете использовать «base64» или «hex» вместо «UU», поскольку они бывают более портативными.Список поддерживаемых алгоритмов приведен в encrypt()
docs.
Вы протестировали его, он не даст ошибку. я просто протестировал его и отлично работал. просто определите ключ правильно. –
Какая ошибка дает вам? –
Invalid CFML конструкция находится на линии 26 в колонке 26. ColdFusion смотрел на следующий текст: /» –