логин: 
<< предыдущая заметкаследующая заметка >>
29 мая 2012
починил немного авторизацию

После долгого перерыва :) взялся за клавиатуру и покопал код блога — все, что касается авторизации.

Собственно, у меня появился Samsung Galaxy NOTE. О том, какое это говно, как он не умеет правильно импортировать контакты Nokia и не подключается к компу ни одним из трех способов usb, sftp, ftp — это я вам как-нибудь потом пожалуюсь. Но смысл в том, что я столкнулся с ситуацией, когда типа логинишься (через Facebook, например), а потом браузер тебе хлоп — и пишет «воссстановлен: Anonimous#5324325», и ты снова никто, и всякий раз вводи имя, когда набираешь коммент. То есть то, о чем вы мне так долго писали, а я, дурак, не верил.

Короче, я размонтировал всю цветомузыку с «восстановлением» через флэшкуки и файловые хранилища, да еще и добавил в карточке кнопку «разлогиниться» («карточка» — это то, что откроется, если нажать на клавиатуре 'U' или кликнуть на коробочку «логин: ...» в левой колонке). В смысле, раньше-то была идея адски залогинить посетителя так, чтобы уже не дать ему, мерзавцу, разлогиниться никогда. Но и сама идея-то дурацкая, и реализация стала со временем глючить. Потом-то, когда мы доделаем Binoniq и поработим Вселенную, мы конечно evercookie привинтим, и там уж никто, единожды забаненный за хамство и слабоумие, не отмоется от авторизационных меток ничем, кроме форматирования винта с переустановкой винды ;) Но сейчас это нам с вами нафиг не нужно, и я всю эту мандулу отключил, испытав большое облегчение. Надеюсь, его теперь испытаете и вы. Так что логиньтесь на здоровье и разлогинивайтесь на здоровье. Желательно конечно логниться ЖЖ или Фейсбуками — вдруг вы мой друг и я давно вас жду, чтобы в подзамок записать? ;)

Ну и по мелочам поправил отображение комментов — число анонимусов в последующих (и предыдущих) комментах должно теперь резко поубавится.


Если чо не работает — больно ногами не бейте, c декабря в код не заглядывал, забыл уже, как PHP выглядит :)


PS: Слушайте, а вот скажите мне, умные люди. Допустим, мне в JavaScript надо выполнить по таймауту функцию с некоторой переменной local_x — весьма локальной. Если переменную можно произнести вслух, тут все просто: setTimeout('myfunction("'+local_x+'")',5000);
А вот если эта переменная — некий сложный object? Есть какой-то способ, кроме как создать глобальную переменную, ей ея присвоить, и по таймауту вызвать глобальную var tmp=local_x; setTimeout('myfunction(tmp)',5000); Мне кажется, такого способа нет. Но вдруг вы знаете? (Если интересно, это я столкнулся с задачей, когда надо удалить со страницы все элементы с class='del_me', но удалять каждый объект кроссбраузерно полагается через setTimeout(«e.parentNode.removeChild(e)",40), иначе глючит. Но если у элемента нету своего уникального id, то это e внутрь таймаута никак не передать. Я пока вышел из положения, раздавая им паспорта перед расстрелом e.id для этого случая принудительно :)

<< предыдущая заметка следующая заметка >>
пожаловаться на эту публикацию администрации портала
архив понравившихся мне ссылок
Оставить комментарий
Windows Opera
0
0
anonymouse (#1283912)
Вполне передать, почему. Замыкания же работают, или как оно там называется правильно.
Т.е. должно работать нечто вроде
function delme(e) {
var elem = e,
deltimeout = setTimeout(function() {clearTimeout(deltimeout);elem.parentNode.removeChild(elem)},40);
}
Ну, и ок, в этот раз я про жыкверю даже заикаться не буду.
Linux Safari
 Москва
0
0
Леонид Каганов
Не очень понимаю пока принцип. А если функция вызываетри несколько раз до того, как эти таймауты начнут отрабатывать? Переменные не перезатрутся?

А про джкверю не надо, правда. Я твт волею судеб много времени провожу на неком медийном сайте, написанном под джкверью проыессионалами. Но много часов. Он дико насинает тормозить и во многих браузерах глючит, например в мобильном. Ничего подобного у меня в днеанике не было при всем энтерактиве.
Windows Opera
0
0
anonymouse (#1283912)
Не должны, переменные создаются новые, в контексте этой самой функции. Я не настоящий сварщик, но глюков каких-либо не припомню.
Windows Safari Chrome
0
0
bukov_net (tonsky)
Принцип такой: во время вызова функции создается лексический скоуп (lexical scope), и если внутри функции создается замыкание (анонимная функция, использующая значения снаружи), оно замыкается на этом скоупе (сохраняет на него ссылку), и позже может использовать значения из этого скоупа. Разные вызовы функций создают разные скоупы.
Windows Firefox
0
0
Странно, у меня телефон на андроиде при подключении по усб спрашивает что делать: притвориться флэшкой или синхронизироваться через приблуду производителя.
Windows Opera
0
0
Кирилл
Если у него стоит Android 4.0, то для передачи файлов по USB используется протокол MTP, с поддержкой которого в маргинальных дистрибутивах линукса дела обстоят плохо.
Linux Safari
 Москва
0
0
Леонид Каганов
Да. И где отключается, не смог найти.
Linux Firefox
 Пенза
0
0
А Вы пробовали монтировать через mtpfs?
// Тьфу, промахнулся. Это я к Леониду обращался.
Linux Firefox
 Пенза
0
1
Да, кстати. Простите, что так критикую Ваш выбор, но купили бы Вы лучше не Galaxy Note, а SonyEricsson Xperia Pro. У него и габариты сопоставимые, и QWERTY-клавиатура хорошая. http://market.yandex.ru/model.xml?modelid=7012979&hid=91[...]
Linux Firefox
 Москва
2
1
Leonid Kaganov
Простите, что критикую ваш комментарий, но вы бы его лучше не мне написали, а тому, кто еще ничего себе не купил.

А я уж сам как-нибудь соображу, чем мощный флагман 5.3" с подключенной внешней клавиатурой мне будет лучше, чем очередная какашка в 3" с крохотными кнопочками, каких в мире миллион.
Windows Opera
0
0
Кирилл Ярин (#1687316)
JavaScript — функциональный язык программирования, и передавать поэтому строки в setTimeout — дурной тон. Надо пойти и почитать про замыкания в JavaScript, и вопрос исчезнет.

setTimeot(function(){myfunction(tmp);},5000);
Windows Opera
0
0
Кирилл
«Если интересно, это я столкнулся с задачей, когда надо удалить со страницы все элементы с class='del_me', но удалять каждый объект кроссбраузерно полагается через setTimeout(«e.parentNode.removeChild(e)",40), иначе глючит.»

Само по себе такое глючить не должно. Вероятно, у вас перебор удаляемых элементов так неправильно устроен, что не учитывает изменение их списка после удаления.
Linux Safari
 Москва
0
0
Леонид Каганов
Нет, это известная фича - большинство браузеров просто не могут удалить элемент прямо по ходу.
Linux Firefox
0
0
Victor Beresnev
хмм... а что-то мешает использовать замыкание?

function a(...){
var v = ...;
function b(){
v.bla...
}

setTimeout(b, 200);
}
черт, не прочитал и опередили =)
Windows Firefox
 Санкт-Петербург
1
0
lleo.me/[email protected]'s shadow
Сейчас обновлюсь, проверим ;)
Mac Safari Chrome
0
0
bukov_net (tonsky)
У меня вроде все работает (логин через ЖЖ tonsky.livejournal.com), но «имя или ник» упорно подставляются bukov_net. Глюк?
Windows Firefox
0
0
Странно - пока не залогинен, не дает смотреть вторую страницу комментариев. Выдется:

----------------------------------
Ошибка авторизации: unic=0

Вы впервые на этом сайте? Пожалуйста, просто обновите страницу, и тогда сможете оставлять комментарии
.....
--------------
Обновиться - не помогает
Linux Firefox
 Москва
0
0
Leonid Kaganov
Значит надо обновить страницу. И включить куки.
Windows Firefox
 Киев
0
0
lesha5 (#1938878)
Разобрался - это все происки AdBlock
Windows IE
0
0
D.iK.iJ
ИЕ теперь совсем спятил. :)
Linux Firefox
0
0
cramur
А вот этот "дружище profile.php" при залогинивании через фейсбук это так и задумано?
Windows Firefox
 Санкт-Петербург
0
0
[email protected]Кошак (cats-shadow)
Леонид, подскажите, пожалуйста, как можно посмотреть, на чем "валится" взаимодействие с MTA? Очень хочется "научить" движок отправлять уведомления по почте о новых комментариях и ответах на них. А он виснет уже при попытке отправки проверочного письма из "личной карточки". Ну и уведомления о зарегистрированных неанонимных пользователях и пожписка на свежие посты не помешали бы :) (не все же пользуются RSS).

всего комментариев: 22

<< предыдущая заметка следующая заметка >>