Jump to content
Русская поддержка Invision Community

Экранирование спец. символов


HooLIGUN
 Share

Recommended Posts

Добрый день. Подскажите, как экранировать всякие символы в модуле Pages ?

Например есть $str = "{{qwert{{}}";

и при выводе в блоке <? echo $str; ?> 

страница выдает ошибку 

[[Block blockkey is throwing an error]]

Пробовал quotemeta и htmlspecialchars - не помогает

Раньше пользовался mysql_real_escape_string, но этот метод не актуален 

Link to comment
Share on other sites

Кирилл Не работает, и это немного не то

Мне нужно, чтобы строка выводилась с любыми символами.

Может в IPS есть функция, которая обрабатывает, например, кривые ники юзеров?

 

Link to comment
Share on other sites

  • 2 months later...

К сожалению, решения так и не нашел.

Прилагаю полностью проблемный код, который можно протестировать.

Есть отдельная база, в ней таблица users со столбцами id и nick

2.png.f05f8c863af0e12248a637d3d6c08bf8.png

Создал блок с кодом и вставил в новую страницу (Приложение Pages)

$connection = \IPS\Db::i( 'external', array(
    'sql_host'        => 'localhost',
    'sql_user'        => 'user',
    'sql_pass'        => 'pass',
    'sql_database'    => 'db',
    'sql_port'        => 3306,
   # 'sql_socket'    => '/var/lib/mysql.sock',
    'sql_utf8mb4'    => true,
) );

try
{
	$data = $connection->select( '*', 'users','id = 2' )->first();
}
catch( \UnderflowException $e )
{
	\IPS\Output::i()->error( ' ID не найден', '404', 404, '' );
}

echo $data['nick'];

Так вот, если выбирать из базы id = 1 и id = 2 , то будет ошибка

1.png.a9a74089d71e74bd813aa8a6b2ba1c31.png

Если выбрать id = 3 (нормальный ник, без $ и {{}}) то всё ок, выводит ник.

Edited by HooLIGUN
Link to comment
Share on other sites

7 минут назад, Кирилл сказал:

HooLIGUN данная ошибка должна быть записана в лог ошибок.

Ругается на символы {{}} {$} , воспринимаются как код в шаблоне

Link to comment
Share on other sites

30 минут назад, Кирилл сказал:

HooLIGUN данная ошибка должна быть записана в лог ошибок.

При выводе `id` = 1 такая ошибка

Screenshot_1.thumb.png.ff6e7ede8d25bd7a918b0389ef86ad78.png

При выводе `id` = 2 такая

Screenshot_2.thumb.png.c5646e8445ebe6299dca8e3045de7cc6.png

Link to comment
Share on other sites

19 минут назад, Павел сказал:

Запрос должен выглядеть так:

$data = $connection->select( '*', 'users', array( 'id=?', 2 ) )->first();

 

Спасибо за дополнение. Набросал это на скорую руку, но так и так запрос выполняется.

Не работает сам результат, в котором есть символы вывода\обработки php в шаблонах {{$}}

Link to comment
Share on other sites

24 минуты назад, Кирилл сказал:
{{  try{  }}
{{$select = \IPS\Db::i()->select( 'nick', 'users', array( 'id=?', 2 )  )->first();}}
{{ } catch( \Exception $ex ){  }}
{{ } }}

{$select}

 

Я использую "чистый" php в блоке приложения страницы. А этот пример ведь для использования в шаблонах.

Link to comment
Share on other sites

HooLIGUN Я такой режим не использую совсем, но что-то мне подсказывает, что это особенность такого типа блоков в IPS. 

Link to comment
Share on other sites

Пришлось использовать костыли..

function ips_fixname ($name)
{
	$name =  str_replace('{', '', $name);
	$name =  str_replace('}', '', $name);
	$name =  str_replace('$', '', $name);
	return $name;
}

Если вдруг у кого будут идеи лучше, прошу поделиться, буду рад услышать

  • Like 1
Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
 Share

×
×
  • Create New...

Important Information

By using our site you agree to our Privacy Policy