webair 178 Опубликовано: 28 января 2023 Рассказать Опубликовано: 28 января 2023 (изменено) Представим, что есть поле testfield, содержащее значение "AnyText#123" {include file="engine/modules/test.php?myxfield=[xfvalue_testfield]&myxfield2=blabla"} Как думаете, что передастся в test.php в переменной $myxfield ? AnyText А # и то что после него удаляются. Возможно такое не только с #, не знаю. Версия 15.0, может в новых версиях пофикшено, не знаю. Изменено 28 января 2023 пользователем webair Цитата Ссылка на сообщение Поделиться на других сайтах
celsoft 6 088 Опубликовано: 28 января 2023 Рассказать Опубликовано: 28 января 2023 И в чем баг? Что означает символ # в URL адресах? Правильно это начало якоря а не просто символ. Якоря доступны только клиентской части, т.е. браузеру, и недоступны никогда серверной части, т.е. скриптам PHP. Таковы стандарты URL. Строка которую вы передаете в include проходит разбор строго по стандартам URL, соответственно клиентская часть не будет присутствовать в скриптах. И для того чтобы передавать # как символ в серверную часть, параметры URL нужно корректно кодировать, а не просто передавать в чистом виде. Здесь нет никакого бага со стороны DLE, просто вы некорректно передаете параметры, не соответствующие стандартам URL. А требование следовать стандартам URL обязательно. Цитата Ссылка на сообщение Поделиться на других сайтах
webair 178 Опубликовано: 28 января 2023 Рассказать Опубликовано: 28 января 2023 Автор 1 час назад, celsoft сказал: И в чем баг? Что означает символ # в URL адресах? Правильно это начало якоря а не просто символ. Якоря доступны только клиентской части, т.е. браузеру, и недоступны никогда серверной части, т.е. скриптам PHP. Таковы стандарты URL. Строка которую вы передаете в include проходит разбор строго по стандартам URL, соответственно клиентская часть не будет присутствовать в скриптах. И для того чтобы передавать # как символ в серверную часть, параметры URL нужно корректно кодировать, а не просто передавать в чистом виде. Здесь нет никакого бага со стороны DLE, просто вы некорректно передаете параметры, не соответствующие стандартам URL. А требование следовать стандартам URL обязательно. А передача параметров в {include} разве сделана через http запрос? Я думал, это подключение файла аналогичное php include. Ну допустим http, почему тогда не urlencode? param=urlencode([xfvalue_X]) Хорошо, я сделал по другому что надо было. Моё дело сообщить :) Цитата Ссылка на сообщение Поделиться на других сайтах
celsoft 6 088 Опубликовано: 28 января 2023 Рассказать Опубликовано: 28 января 2023 5 минут назад, webair сказал: А передача параметров в {include} разве сделана через http запрос? Передача параметров обрабатывается также как если бы это был HTTP запрос через браузер. По тем же правилам и принципам и стандартам. Об этом указано в документации https://dle-news.ru/extras/online/index.html?modules_include.html 5 минут назад, webair сказал: Я думал, это подключение файла аналогичное php include. Нет. Более того php include вообще не принимает и обрабатывает никаких параметров. php include подключает только файл без каких либо параметров и не поддерживает и не обрабатывает вообще никаких параметров 5 минут назад, webair сказал: Ну допустим http, почему тогда не urlencode? param=urlencode([xfvalue_X]) Потому что {include file="engine/modules/test.php?myxfield=[xfvalue_testfield]&myxfield2=blabla"} это не PHP код. Какой там должен быть urlencode? urlencode это PHP функция. И для выполнения своего PHP кода вам нужно писать именно свой PHP код. Цитата Ссылка на сообщение Поделиться на других сайтах
Рекомендованные сообщения
Присоединяйтесь к обсуждению
Вы можете опубликовать сообщение сейчас, а зарегистрироваться позже. Если у вас есть аккаунт, войдите в него для написания от своего имени.