форум vBSupport.ru > vBulletin > All versions of vBulletin
  • »
VBsupport перешел с домена .ORG на родной .RU Ура! Пожалуйста, обновите свои закладки - VBsupport.ru
 
 
 
 
Luvilla
Гость
Cool Экзотические воблотраблы.

Все счастливые семьи похожи друг на друга,
каждая несчастливая семья несчастлива по-своему.
Первая фраза (ч. 1, гл. I) романа «Анна Каренина»

Перефразируя классика, смело можно сказать: каждая несчастная вобла несчастлива по-своему.
Большинство проблем, с которыми сталкиваются воблоадмины, тут расписаны и разжёваны стопиццот раз, самые частовстречающиеся проблемы у нас вынесены в "Правила" (конечно, не сами проблемы, а ссылки на темы... ну, вы поняли))

Однако ж бывает и до сих пор - попадается экзотика. Да такая, что даже я, при всей моей любви всё расписывать по-ша-го-во, в таких случаях просто пишу в теме, мол, проблема решена (если пациент обращается лично) и всё. Ибо расписывать обычно некогда...

И каждый раз думаю: нужна тема. Нужна отдельная тема, где будет собрана вот такая нехиломозгивыносящая экзотика. Чтобы любой воблоадмин мог поискать в такой теме, когда перепробованы все решения из других тем.

ОК, вот пусть будет тема.
Если вы знаете, где тут у нас расписано что-то из разряда "полдня искал, в чём трабл, чуть мозги не свихнул" - давайте ссылки, добавлю в первый пост.

И первая ссылка - борьба с ошибкой в блогах, вот: http://vbsupport.ru/forum/showthread.php?p=533171
Bot
Yandex Bot Yandex Bot is online now
 
Join Date: 05.05.2005
Реклама на форуме А что у нас тут интересного? =)
 
 
Luvilla
Гость
Default

Мой пост будет намного многословнее, чем у Керка. Потому что я - графоман

Итак, пишет клиент (техадминю много лет, но (к сожалению) не одна я там техадминила). Мол, юзера жалуются, не работает восстановление пароля. 4ка (это важно, но это я поняла потом).

ОК, как мы всегда шаблонно реагируем на такое? - правильно, "пусть смотрит в папке СПАМ".

- Нет, - говорит, - смотрел.
Чтобы вы понимали: я общаюсь с владельцем форума в ЛС на его форуме, а он в каком-то мессенжере общается с юзером, у которого траблы. Испорченный телефон, классический.

Выкапываю тестовый акк с регистрацией 2013-го забытого года, запрашиваю восстановление пароля на мыло, всё приходит (и даже не в "спам"), всё круто, всё работает.

Ну, думаю, там несколько лет назад была конвертация в УТФ, всякое бывает... Прошу ссылку на профиль.
Нет, всё нормально, ник хоть и кириллицей, условно скажем, Вася, но коллизий нет.

- Нет, - говорит, - не в этом дело. Он не может сменить пароль в кабинете, потому что там реклама, а у него блокировщик рекламы, реклама блокируется вместе с первой строкой: нет поля для ввода действующего пароля.

Вау, - думаю я и иду мучить браузеры. Задействовав три компа, ноут и телефон (убунту + другая убунту + эмулятор винды на убунте + таки честная винда + Андроид) и пачку браузеров в каждом (почти каждом) случае (ФФ, Хром, Хромиум, Опера новая, Опера старая, Стринги (в смысле, яшко-браузер), Вивальди и даже ИЕ (от 7 и выше, и реинкарнация его) - ничего... Ни-че-го, "от слова совсем" (с). У меня всё работает.

Предлагаю сходить в дефолтном стиле, даю прямую ссылку. Нет, всё то же.

Пациент тем временем шлёт скрин. Тут я его не покажу, и не потому, что там мыло видно, а потому, что там как раз ни пса не видно: это фото с планшета, без резкости и под углом.
Но главное я увидела.
Нет не только поля для ввода действующего пароля.
Во фразе Изменение пароля (не обязательно) нет куска "(не обязательно)"
Стоооооооп....... никакая резалка рекламы не может вынести кусок строки.
Для тройки я точно знаю, в каком случае (единственном, насколько мне известно) не выводится эта фраза, "(не обязательно)": когда пароль устарел. А в 4ке?

Регистрирую новый тестовый акк (через фронтенд, нЕ через админку)
Кабинет - Смена email и пароля - вуаля!



Для сравнения, из серии "найдите три отличия":



Видно, да?

И тут у меня включается состояние "Стоять! Бояться! Доберман взял след!!!" Я вижу проблему у себя, это значит, что я могу с ней работать.

Полетели!

Стиль:

template name="modifypassword"
Code:
<h3 class="blocksubhead">{vb:rawphrase edit_password}<vb:if condition="$show['password_optional'] AND $show['oldpasswordinput']"> ({vb:rawphrase optional})</vb:if></h3>
oldpasswordinput в условиях
в каких?
profile.php
Code:
	// only show old password input if user is vb user,
	// and not facebook only user (which means they have no password)
	$show['oldpasswordinput'] = ($vbulletin->userinfo['logintype'] == 'vb');
опа...
платформа Facebook выключена (сейчас, когда я регистрировала тестовый акк) и была выключена, когда регистрировался этот юзер, у которого проблемы. Она вообще никогда там не подключалась, регистрация через Фейсбук.

БД, таблица user, смотрю свой свежезереганный акк, logintype - NULL
смотрю этого юзера - аналогично, NULL

тыкаюсь в сортировки в ПМА, получаю картину:



Итого:
юзер с ИД ***, зарегистрировавшийся 26 ноября 2014 года - последний юзер, у которого нормально работает в кабинете смена пароля
у юзера с ИД ***, регистрация 1 декабря 2014 года, уже есть проблемы: он, как и Вася, как и все, кто регистрировался после, НЕ видит поля для ввода старого пароля, потому что у них в базе записано logintype не vb, а NULL.
NULL, конечно, не fb, но и никак не vb и с vb никогда не сравнится, поэтому никакого поля для действующего пароля не выводится. Всё логично.

Раскопки в админлоге ничего особо не дают, или наоборот, дают слишком много: там был движняк, в этот период, и нехилый движняк. Что-то ставилось, что-то удалялось, форум обновлялся.

В общем, вопрос "кто виноват" прояснить не удалось. Могу сказать с 99% уверенностью: это не какой-то хак и не обновление. Возможно, восстановление из бэкапа, что-то там "пошло не так", что снесло дефолтное значение поля (полей, видно на скрине, их много, кто вдруг стал NULL).

Лечение:
согласно mysql-schema.php
Code:
logintype ENUM('vb', 'fb') NOT NULL DEFAULT 'vb'
проставить значения для поля logintype в таблице user, главное - чтобы никаких NULL

чтобы в структуре было так:



всем, у кого проставилось это NULL, выставить vb

Всё. Спасибо тем, кто дочитал...
 
 
Smalesh
В Черном списке
Default
1

Академический пример здравого подхода к проблеме: локализация проблемы > идем в шаблон, по которому находим кусок кода > работаем с кодом
 
 
kerk
k0t
 
kerk's Avatar
Default
0

Quote:
Originally Posted by Smalesh View Post
Академический пример здравого подхода к проблеме
а есть другие способы?
 
 
Luvilla
Гость
Default

Quote:
Originally Posted by Smalesh View Post
локализация проблемы
в описанном случае заняло около 90% от всего времени, затраченного на проблему

Про подход... ну да, а как иначе?
А что тут весь детектив расписала - дык если бы я просто сказала, мол, "у кого юзера не могут сменить пароль, потому что не выводится поле для ввода действующего пароля, пойдите в базу и посмотрите..." - это было бы скушно...

и - мы же знаем: зачастую вытрясти из юзера, в каком конкретно месте у него проблема - это самое сложное...
 


Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off




All times are GMT +4. The time now is 11:18 AM.


Powered by vBulletin® Version Ъ Edition
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Loading...