Хапсолютна мистерия
10 отговора
565 прегледа
Хапсолютна мистерия
Здр.
Правя си една маалка библиотечка за сешън хендлинг... измежду фийчърите и се включват и възможностите да бъдеш логин-нат/логаут-нат, както и автоматично логаут-нат след Х минути (задава се като сетинг)...
принципа е следния: скрипта проверява:
1. ако е получил усернаме/пассуърд/логин бутон -> изпълнява функция, която аутентикира -> ако всичко е ОК - си логнат -> редирект на същата страница (или реферер, ако има)
2. ако е получил логаут бутон -> логаутва -> редирект на същата страница (или реферер, ако има)
3. ако му е дошло времето -> логаутва -> редирект на същата страница (или реферер, ако има)
както се вижда от диаграма 2, случаите 2 и 3 са абсолютно еднакви (единствената разлика е един булеан параметър, който се подава, и ако е труе сетва в сесията и съобщение за грешка (таймаут), която се показва на следващия логин джам)
само че... случая 2 работи без проблем, а случая 3 - не... при първия рефреш, ИЕ-то вади:
Internet Explorer cannot open the internet site ([линк] - абсолютно верен)
A redirection problem occured.
Opera-та не вади нищо (празен екран и никаква грешка)
а Файърфокса работи без проблем както трябва.
за ИЕ и Опера, при релоад на страницата всичко вече е нормално - презарежда си се, изписва си грешката и показва логин джама...
някакви идеи къде какво бъркам?
п.с. код не пускам, щото първо че цялата работа е доста опетена с други модули, второ, наистина правя само сетване на няколко сешън-променливи и редирект (от сорта):
sesLogin($login_result);
header("Location: $__session_redirect__");
exit;
респективно
sesLogout();
header("Location: $__session_redirect__");
exit;
Just a genius
Правя си една маалка библиотечка за сешън хендлинг... измежду фийчърите и се включват и възможностите да бъдеш логин-нат/логаут-нат, както и автоматично логаут-нат след Х минути (задава се като сетинг)...
принципа е следния: скрипта проверява:
1. ако е получил усернаме/пассуърд/логин бутон -> изпълнява функция, която аутентикира -> ако всичко е ОК - си логнат -> редирект на същата страница (или реферер, ако има)
2. ако е получил логаут бутон -> логаутва -> редирект на същата страница (или реферер, ако има)
3. ако му е дошло времето -> логаутва -> редирект на същата страница (или реферер, ако има)
както се вижда от диаграма 2, случаите 2 и 3 са абсолютно еднакви (единствената разлика е един булеан параметър, който се подава, и ако е труе сетва в сесията и съобщение за грешка (таймаут), която се показва на следващия логин джам)
само че... случая 2 работи без проблем, а случая 3 - не... при първия рефреш, ИЕ-то вади:
Internet Explorer cannot open the internet site ([линк] - абсолютно верен)
A redirection problem occured.
Opera-та не вади нищо (празен екран и никаква грешка)
а Файърфокса работи без проблем както трябва.
за ИЕ и Опера, при релоад на страницата всичко вече е нормално - презарежда си се, изписва си грешката и показва логин джама...
някакви идеи къде какво бъркам?
п.с. код не пускам, щото първо че цялата работа е доста опетена с други модули, второ, наистина правя само сетване на няколко сешън-променливи и редирект (от сорта):
sesLogin($login_result);
header("Location: $__session_redirect__");
exit;
респективно
sesLogout();
header("Location: $__session_redirect__");
exit;
Re: Хапсолютна мистерия
Просто предположение - да нямаш някои кофти символ в УРЛ-то, който да чупи ИЕ като по-тъп и неспазващ стандартите, а в Лисицата да си го разчита нормално?
Или пък да редиректваш към директория/, а не към файл?
А това че след рефреш работи само влошава нещата

Или пък да редиректваш към директория/, а не към файл?
А това че след рефреш работи само влошава нещата
Re: Хапсолютна мистерия
1. имам неприятното чувство че кукито има пръст в тая работа, ма не знам що така си мисля... май бях чел нейде.
2. пробва ли да поогледаш кво си приказват ието и сървъра?
3. Location понякога не работи ако не е каноничен адреса, ма кат гледам при тебе май си е.
4. echo на тва header("Location: $__session_redirect__"); също е интересно кво точно дава в тоя момент.
5. не вервам толкоз време да не си го опраил, та земи кажи кво беше, аре
2. пробва ли да поогледаш кво си приказват ието и сървъра?
3. Location понякога не работи ако не е каноничен адреса, ма кат гледам при тебе май си е.
4. echo на тва header("Location: $__session_redirect__"); също е интересно кво точно дава в тоя момент.
5. не вервам толкоз време да не си го опраил, та земи кажи кво беше, аре
Re: Хапсолютна мистерия
Я ме светни точно как обработваш третия случай ....
Он клик (демек на следващото действие на усера след експире на сесията) или с ШаваСкрипт ?
Да не е некоя глупост от сорта на
---- script.php
header(location:script1.php);
----end script.php
---- script1.php
session_mahni_promenlivite i infoto
header(location:script.php);
----end script1.php
т.е. да се редиректваш с 2 скрипта 1-ия към втория а втория обратно към първия? при това положение експлодера се размазва .....
root@ro6avia#echo rm -rf * > /bin/seek_and_destroy
root@ro6avia#/bin/seek_and_destroy
Он клик (демек на следващото действие на усера след експире на сесията) или с ШаваСкрипт ?
Да не е некоя глупост от сорта на
---- script.php
header(location:script1.php);
----end script.php
---- script1.php
session_mahni_promenlivite i infoto
header(location:script.php);
----end script1.php
т.е. да се редиректваш с 2 скрипта 1-ия към втория а втория обратно към първия? при това положение експлодера се размазва .....
root@ro6avia#echo rm -rf * > /bin/seek_and_destroy
root@ro6avia#/bin/seek_and_destroy
Re: Хапсолютна мистерия
не ебаш от кукито или грешен адрес... бях го отебал засега, ама Рошавия.цом помогна в разкриването на мистерията... просто ИЕ-то решава че става безкраен цикъл и прави [заеб]...
Just a genius
Re: Хапсолютна мистерия
мдам, направих междинен релокейшън към същия файл, ама със супер-измислени ГЕТ параметри, и после обратно където си требе (предваритлено записано в сесията) и работата заспа...
header("Location: http://".$_SERVER['SERVER_NAME'].$_SERVER['PHP_SELF']."?".md5(uniqid(rand(), true))."=".md5(uniqid(rand(), true)));
Just a genius
header("Location: http://".$_SERVER['SERVER_NAME'].$_SERVER['PHP_SELF']."?".md5(uniqid(rand(), true))."=".md5(uniqid(rand(), true)));
Re: Хапсолютна мистерия
бахти...
може и да не съм разбрал де, малко ми пуши тиквата днес, ама що тряа да редиректваш? аз си го представям така:
- усера цъка и отваря нов пейдж (П).
- новия П вика access control-а и гледа че усера е логнат, ма му е изтекло времето
- трие сесията и куките и вместо съдържанието показва логин форма с action=П
- усера пише усернаме и парола и натиска копчето
- логин формата събмитва към себе си, т.е. продължаваме да сме в П
- П пак пали access control-a, вижда че има събмитнати усернаме и пасс, проверява квот ше проверява, сетва си сесия и кука ако са ок и си продължава със съдържанието на страницата без да редиректва или квото и да е друго, параметрите дето са записани в сесията вече си ги знае, нали така?
access controla при мене обикновено е функция която ако върне ок, начи сме добре и продължаваме, ако върне тц, начи логин форма и exit. едно require в началото на страниците за които е нужно да има контрол на достъпа и съм готов.
Е, има малък проблем със SID, щото обикновено гледам дали има куки и ако има (или ако има усер агент бот примерно), не пиша SID в линковете. та усера при успешен логин по горната процедура ще е логнат, ще има пусната сесия и сетнато куки, ама за скрипта тва куки не съществува до зареждане на следваща страница и буха сидове навсякъде. е решава се кат се добави на проверката за SID да внимава за това състояние, ма се омотват нещата малко.
сеа ше го пусна тва и после ше седна да помисля голяма глупост ли съм написал :)
може и да не съм разбрал де, малко ми пуши тиквата днес, ама що тряа да редиректваш? аз си го представям така:
- усера цъка и отваря нов пейдж (П).
- новия П вика access control-а и гледа че усера е логнат, ма му е изтекло времето
- трие сесията и куките и вместо съдържанието показва логин форма с action=П
- усера пише усернаме и парола и натиска копчето
- логин формата събмитва към себе си, т.е. продължаваме да сме в П
- П пак пали access control-a, вижда че има събмитнати усернаме и пасс, проверява квот ше проверява, сетва си сесия и кука ако са ок и си продължава със съдържанието на страницата без да редиректва или квото и да е друго, параметрите дето са записани в сесията вече си ги знае, нали така?
access controla при мене обикновено е функция която ако върне ок, начи сме добре и продължаваме, ако върне тц, начи логин форма и exit. едно require в началото на страниците за които е нужно да има контрол на достъпа и съм готов.
Е, има малък проблем със SID, щото обикновено гледам дали има куки и ако има (или ако има усер агент бот примерно), не пиша SID в линковете. та усера при успешен логин по горната процедура ще е логнат, ще има пусната сесия и сетнато куки, ама за скрипта тва куки не съществува до зареждане на следваща страница и буха сидове навсякъде. е решава се кат се добави на проверката за SID да внимава за това състояние, ма се омотват нещата малко.
сеа ше го пусна тва и после ше седна да помисля голяма глупост ли съм написал :)
Re: Хапсолютна мистерия
ето ти малко причини:
1. за СИД-а си прав... още не съм го имплементирал това, ама и на него ще му дойде времето...
2. като се редиректне, вече съм 100% сигурен, че всичко е записано в сесията
3. като въведеш усер/пасс и събмитнеш - всичко е ОК, ама като дадеш рефреш, и браузъра те пита да събмитнеш ли пак данните... при бацк - също стават глупости, а като е редиректнато - просто онази страница с формата престава да съществува :)
Just a genius
1. за СИД-а си прав... още не съм го имплементирал това, ама и на него ще му дойде времето...
2. като се редиректне, вече съм 100% сигурен, че всичко е записано в сесията
3. като въведеш усер/пасс и събмитнеш - всичко е ОК, ама като дадеш рефреш, и браузъра те пита да събмитнеш ли пак данните... при бацк - също стават глупости, а като е редиректнато - просто онази страница с формата престава да съществува :)
Re: Хапсолютна мистерия
точка 3 абсолютно, писах писах и що не се сетих за това като и при мен го има и то точно по тая причина... бахти тряа зема да смена часовите зони вече, съвсем изкуфях :(
Re: Хапсолютна мистерия
ти да не си у щатско бе, се посред нощ ми пишеш тука?
Just a genius