Skip to content

Важное с Sysman.Ru: Поиск юзера с главной страницы Admin CP

Song:

Симтомы: когда мы пытаемся найти участника форума, ник которого состоит из русских букв из Админ-центра, то при поиске через основной поиск (Admin CP -> Users and Groups -> Find/Edit/Suspend User), участник находится без сложностей.

Однако, если мы будем искать того же участника с главной страницы Админ-центра

 

то поиск не принесёт результатов.

 

Причины: поиск с главной страницы Админ-центра сделан через ява-скрипт, в котором при нажатии на кнопку "Find member" ник участника посылается в форму для поиска через функцию ява-скрипта escape.

 

В последних версиях современных браузеров данная функция кодирует не в hex кодирование %hex, а в двойное юникодовое кодирование (%uxxx), которое не воспринимается на стороне сервера за валидную информацию. Применённая для этого на стороне сервера функция urldecode() совершенно безполезна в данном случае.

Соответственно ник, введённый по-русски, в итоге запрашивается СУБД совсем в другом искажённом виде и естественно ничего не находится.

 

Исправление:

1.x:

Самым простым решением в данном случае будет убрать использование escape.

Удалите выделенные участки кода:

Цитата (ad_index.php)
                      [b]function[/b] edit_member() {                                                [b]if[/b] (document.forms[0].username.value == \"\") {                            alert(\"You must enter a username!\");                        } [b]else[/b] {                            window.parent.body.location = '{$SKIN->base_url}' + '&act=mem&code=stepone&USER_NAME=' + escape(document.forms[0].username.value);                        }                      }

 

В версии 2.1 исправление живёт в файле skin_acp/IPB2_Standard/acp_skin_html/cp_skin_index.php

 

Song_Bot: К посту прикреплены вложения, но посмотреть Вы их можете, только открыв статью в Форуме.

Featured Replies

Song: То же самое правило можно применить и к двум оставшимся ниже на картинке функциям, если вы их используете.

Guest
This topic is now closed to further replies.

Account

Navigation

Search

Search

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.