Session (sess_deleted)

1. negative (06.05.2010 / 08:07)
На сайте используются сессии, включены куки, не отключены без разницы- есть 2 пользователя, которые прописываются в sess_deleted в то время, как другие, как и положено в файлы сессий с именами типа sess_6c7dvc7chd787f8f8d7
Почему так происходит понять не могу и как с этим бороться, так как эти пользователи "меняются" профилями постоянно, один заходит по закладке и попадает в профиль другого, из-за того, что его сессионные данные прописываются не куда положено, а в sess_deleted , в котором данные второго пользователя, с такой же проблемой. И этот заходя, попадает соответственно в чужой профиль. в этой sess_deleted склеилось так сказать две разных сессии, 2-х разных людей. Как их можно расклеить? Подскажите кто в курсе
В поисковиках искал вся инфа на английском, через переводчик замучился что понимать, так как слишком тонкое дело что бы по смыслу слов догонять значение слова "печенька" что бы оно значило в пояснении к программированию без понятия.
Кто может хотя бы просто объяснить от чего появляется sess_deleted?

2. Azzido (06.05.2010 / 08:45)
кукис в переводе печенька

3. negative (06.05.2010 / 08:48)
Знаю это. Уже написали на одном из сервисов. Это мне ни о чем не говорит, Я же не спрашивал как переводится печенька. Это я пример привел, что бессмысленно переводчиком переводить инфу по этому вопросу

4. Azzido (06.05.2010 / 08:48)
session_start();
if(session_id()=='deleted'){
session_regenerate_id(true);
}

5. negative (06.05.2010 / 08:50)
Спасиб за инфо, ща попробую

6. Azzido (06.05.2010 / 08:55)
возможно не deleted а sess_deleted я просто сам не видел такое

7. Azzido (06.05.2010 / 09:28)
Это насколько я помню, браузер посылает значение deleted в случае если php дал команду очистить кукисы, (в старых браузерах)

8. negative (06.05.2010 / 09:59)
Спасибо огромное! Проблема решена, тебе мега респект вообще. Столько дней и ночей над этим голову ломал.
Сессия действительно sess_deleted называлась, как ты и предположил, она была как общая сессиия и в нее перезаписывались 3 пользователя и все эти 3 пользователя менялись профилями при входе постоянно. В чужой попадая. То в своем то в чужом. Добавил это условие, все три их сессии расклеились, а сесс_делетед больше не появляется)

9. Azzido (06.05.2010 / 10:31)
Судя по инфо что я по этому поводу накопал, это условие нужно делать всем и в любом скрипте, это может стать уязвимостью, если сессия администратора будет записана в sess_deleted, хотя вероятность этого мала

10. negative (06.05.2010 / 10:51)
А эту сесс_делетед вызывают старые телефоны получается? Просто не похоже на это, так как все кто прописывался в сесс_делетед имеют трубки такие же, как и у других людей, которые прописываются в нормальные сессии
Может причина ее вызова все таки в другом?

11. Azzido (06.05.2010 / 10:53)
по этому поводу мало информации чтото

12. negative (06.05.2010 / 10:59)
Да, это правда. Я все облазил в поисках, нигде никаких пояснений.
Тут вот еще такой момент есть. Сессии разлепиться разлепились. в чужой профиль не попадают больше, но и в свой теперь раза с 15 только заходят. Проверил сессии по поиску логина в них, вышло так, что на этих людей создается каждый раз новый файл сесс, не продляется по времени старый, а каждый раз новый. И их count соответственно 0, то есть на этого пользователя завелась сессиия, только он обновляется, старая становится закрытой что ли, и ему создается новая. Менял время простоя сессии с 0 до 40 минут и обратно. Все равно такой результат.

13. negative (06.05.2010 / 11:02)
Такое впечатление складывается, что на каждом обновлении эти пользователи идентифицируются каждый раз как новые люди. Может какие доп параметры по мимо времени, браузера и айпишника добавить, хотя думаю вряд ли поможет тоже

14. Azzido (06.05.2010 / 11:08)
значит что из этого можно понять, генерируется новый id но он не передается, то есть session.use_trans_sid возможно отключено и в кукисы как то криво записывается, значит надо включить ее, или же попробовать перед session_start(); добавить еще session_id(SID); чтобы явно указать идентификатор сессии

15. negative (06.05.2010 / 11:11)
Вот что сейчас.
@ini_set('error_reporting', 'E_ALL & ~E_NOTICE & ~E_WARNING');
@ini_set('url_rewriter.tags', '');
session_name("SID");
session_start();
if(session_id()=='deleted'){
session_regenerate_id(true);
}

16. Azzido (06.05.2010 / 11:13)
@ini_set('error_reporting', 'E_ALL & ~E_NOTICE & ~E_WARNING');
@ini_set('url_rewriter.tags', '');
session_name("SID");
if(defined('SID')){session_id(SID);}
session_start();
if(session_id()=='deleted'){
session_regenerate_id(true);
}

17. negative (06.05.2010 / 11:17)
Слабо понял значение изменения но это строка для уточнения имени сессии получается что ли в этом случае. Если что то кривое в ответ приходит то все равно СИД
Ай все понял, что в этом случае происходит.

18. Azzido (06.05.2010 / 12:37)
ну как результаты

19. negative (06.05.2010 / 12:40)
короче результат таков.
Заходит теперь спервача, все кто раньше прописывался в делетед. Но теперь кто нить один заходит, других "проблемных" выкидывает на авторизацию. Но она проходит нормально, и того из-за кого был вылет не выкидывает. То есть происходит одно вышвыривание на авторизацию, а затем нормально сидят и не входят в чужие профиля. Заметил еще, что их переходы не считаются. Counts у всех 3-х проблемных 0 постоянно.
хотя стоит $_SESSION['counton']++;

20. negative (06.05.2010 / 12:47)
Так то в принципе все норм, по профилям самое главное не скачет и авторизация проходит с первого раза а не с 15-го)
Единственно это вот, что только по горе сессий создается на таких людей, чьи трубки одинаково идентифицируются.
if(defined('SID')){session_id(SID);} помогла в общем для того, что бы с первого раза авторизоваться удалось.

21. Вантуз-мен (06.05.2010 / 13:12)
попробуйте сделать так, может поможет
<?
session_name('SID');
session_start();
if (session_id(SID)=='' || session_id(SID)=='deleted'){ 
session_regenerate_id(); // без true 
}


22. Azzido (06.05.2010 / 13:17)
значит сессия каждый раз заново создается на каждой странице

23. Azzido (06.05.2010 / 13:20)
хотя даа... возможно если старый файл сессии не удалять...

24. negative (06.05.2010 / 13:45)
Записал так
@ini_set('error_reporting', 'E_ALL & ~E_NOTICE & ~E_WARNING');
@ini_set('url_rewriter.tags', '');
session_name('SID');
session_start();
if (session_id(SID)=='' || session_id(SID)=='deleted'){
session_regenerate_id(); // без true
}
Посмотрю до вечера как будет.

25. Вантуз-мен (06.05.2010 / 13:49)
session_id(SID)=='' || вообще-то и убрать можно, думаю лишняя проверка

26. negative (06.05.2010 / 14:12)
Не, этот вариант не подходит, авторизация вообще не проходит. Заходишь хоть по закладке, хоть по вводу данных, на авторизацию выкидывает и все. Перепробывал всевозможные вариации
session_name('SID'); и session_name("SID");
session_regenerate_id(); и session_regenerate_id(true);
прошлый вариант только поставил, сразу же авторизоваться смог.

27. negative (06.05.2010 / 14:15)
Сейчас думаю может ли быть глюк из-за того, что в абзаце:
session_name("SID");
if(defined('SID')){session_id(SID);}
session_start();
if(session_id()=='deleted'){
session_regenerate_id(true);
}
ошибка в первых строках по кавычкам.
если исправить на
session_name('SID');
if(defined('SID')){session_id('SID');}
session_start();
if(session_id()=='deleted'){
session_regenerate_id(true);
}
хотя по идее session_id($name) прописывается без ' '

28. Azzido (06.05.2010 / 15:01)
нет, там не нужны кавычки там константа интерполируется а не задается название

29. Мансур (06.05.2010 / 16:52)
Какраз у меня на сайте тож такой проблема помогите и мне. Когда узерЫ приходят на сайт с трубками старый модел серия 40: нокиа 6131, нокиа6230, 6233, 2600, 6300, 6500 . Часто выход бывает. И каждый раз авторизачия. Смотрю на Кто где там уних переход 0 или 1 бывает. Ету тоже можно решать? Мой сессия так:
@ini_set('error_reporting', 'E_ALL & ~E_NOTICE & ~E_WARNING');
@ini_set('url_rewriter.tags', '');
@ini_set('session.save_path', dirname($_SERVER['DOCUMENT_ROOT']).'/tmp');
session_name("SID");
session_start();
как зменить?

30. negative (06.05.2010 / 17:09)
Azzido, ок. понял. привел в общем к результату
session_name('SID');
if(defined('SID')){session_id(SID);}
session_start();
if(session_id()=='deleted'){
session_regenerate_id(true);
}
Этот вариант приводит к проблеме Палестинеч)
С левых труб авторизация проходит, часто сессия обрывается, коунтс не считаются, так как каждое обновление, это новая сессия.

31. Мансур (06.05.2010 / 17:20)
30. negative, вопшем и мне так?
@ini_set('error_reporting', 'E_ALL & ~E_NOTICE & ~E_WARNING');
@ini_set('url_rewriter.tags', '');
@ini_set('session.save_path', dirname($_SERVER['DOCUMENT_ROOT']).'/tmp');
session_name('SID');
if(defined('SID')){session_id(SID);}
session_start();
if(session_id()=='deleted'){
session_regenerate_id(true);
}


32. negative (06.05.2010 / 17:26)
Палестинеч у тебя сейчас тоже самое что и у меня) Одинаковые синдромы на сайте.
Ну так напиши, все же надежней чем твоя версия.
Кстати в строчке session_name('SID'); одинарные ковычки замени на двойные опечатка " "

33. Azzido (06.05.2010 / 18:18)
да там без разницы какие кавычки.
кстати на php.net насчет такой же проблемы кто то писал что ему помогло два способа это регенерация id и второй это вручную устанавливать куки, попробуйте вот этот код

34. Azzido (06.05.2010 / 18:20)
@ini_set('error_reporting', 'E_ALL & ~E_NOTICE & ~E_WARNING');
@ini_set('url_rewriter.tags', '');
session_name("SID");
session_start();
setcookie(session_name(),session_id(),1,'/');

35. negative (06.05.2010 / 18:22)
а как же
if(session_id()=='deleted'){
session_regenerate_id(true);
}
не лишним будет, или функции в паре не сработаются?

36. negative (06.05.2010 / 18:24)
хм, теперь в строке виден SID) не безопасно)
вышвыривает на авторизацию пуще прежнего. Даже меня. у которого никогда не было проблем с авторизацией и входом)
Представляю каково тем кто с 2600.

37. Мансур (06.05.2010 / 18:33)
На 31 посте код не помогла мне. Не зашол на сайт. А может из за сохранения на папку tmp? На последных мотор 18.6 и 19 сохраняет сессию на папку tmp

38. negative (06.05.2010 / 18:33)
Да если бы можно былоб как ни будь на перед ставить условие, что если peremen[0]==$log то есть что бы проверил все имеющиеся сессии и если в какой то из них присутствует логин=тому который хотим назначить, то перезаписываем эту сессиию, а не создаем новую. Но такое наверное физически не возможно

39. negative (06.05.2010 / 18:35)
Палестинеч закоментируй ['DOCUMENT_ROOT']).'/tmp');
//['DOCUMENT_ROOT']).'/tmp');
пускай лучше на пару уровней выше хранит эти сессии, надежней и глюка не будет.

40. Azzido (06.05.2010 / 18:36)
мда в 34 посту так то шляпа, впринципе ничем не поможет

41. negative (06.05.2010 / 19:46)
нифига себе глюк. только сейчас написали, человек 5 часов не может уже в игру зайти оказывается. Один из тех кто кто раньше в делетед прописывался(

42. negative (06.05.2010 / 20:32)
Некоторые сессии 0 байт, открываешь не содержат вообще какой либо информации, пустые файлы. И это все при:
@ini_set('error_reporting', 'E_ALL & ~E_NOTICE & ~E_WARNING');
@ini_set('url_rewriter.tags', '');
session_name("SID");
if(defined('SID')){session_id(SID);}
session_start();
if(session_id()=='deleted'){
session_regenerate_id(true);
}
Эти пустые я полагаю и принадлежат тому кто 5-й час уже пытается авторизоваться, но у него не получается.

43. Azzido (06.05.2010 / 22:28)
Не исключен вариант что у хостера проблемы.

44. negative (07.05.2010 / 06:37)
Я хостерам звонил еще позовчера. Объяснил всю ситуацию сказали они ни при делах и ничего не знают, а если хочу подать жалобу, писать письминное заявление. Компания петрхост.

45. negative (07.05.2010 / 06:38)
Мне вот интересно. Мотор 18.1 работпет же на глобал ОН, а в ктасессе по умолчанию стоит Глобал 0, то есть офф. Может ли это из-за этого быть

46. negative (07.05.2010 / 07:41)
В общем так получилось при:
@ini_set('error_reporting', 'E_ALL & ~E_NOTICE & ~E_WARNING');
@ini_set('url_rewriter.tags', '');
session_name('SID');
if(defined('SID')){session_id(SID);}
session_start();
if(session_id()=='deleted'){
session_regenerate_id(true);
}
Проблемные авторизоваться могут только если на сайте включен вход по кукам, у них не считаются каунтсы, каждое обновление, это новая сессия.
Но и авторизоваться можно только после нескольких попыток
А стоит кукисы отключить, вообще нельзя авторизоваться. Сколько не пробуй

47. Azzido (07.05.2010 / 08:00)
session.use trans sid on
session use cookies off
попробуй

48. negative (07.05.2010 / 08:03)
В ктасес имеешь ввиду прописать?
php_flag session.use_trans_sid On
php_flag session.use_cookies_sid Off
Или в код прописать, так как ты написал?

49. negative (07.05.2010 / 08:07)
session.use trans sid on это для отображения сессии в адресной строке
а вот session use cookies off это что? Впервые слышу просто что-то

50. Azzido (07.05.2010 / 08:08)
в .htaccess
php_flag session.use_cookies off
php_flag session.use_trans_sid on

51. Azzido (07.05.2010 / 08:08)
для хранения идентификатора сессии в кукисах

52. negative (07.05.2010 / 08:10)
О, это да. полезная вещь. может даже и поможет. Сейчас попробую

53. Azzido (07.05.2010 / 09:03)
попробовать хранить только в строке адреса а не в куках, может браузеры с куками криво так работают

54. negative (07.05.2010 / 09:06)
Результат:
htaccess:
php_flag register_globals off
php_flag session.use_cookies on
php_flag session.use_trans_sid off
---------------------
Coockies включены
Время простоя сессии 0
---------------------
Нстройка сессии:
@ini_set('error_reporting', 'E_ALL & ~E_NOTICE & ~E_WARNING');
@ini_set('url_rewriter.tags', '');
session_name("SID");
if(defined('SID')){session_id(SID);}
session_start();
if(session_id()=='deleted'){
session_regenerate_id(true);
}
----------------
Проблемный пользователь авторизовался с первого раза, sess_deleted не создается, его переходы считаются, прописывается в одну единственную сессию)

55. negative (07.05.2010 / 09:17)
Получилось наоборот, хранить только в сессиях, из строки убрал. Вот такой результат вроде бы законченный. Пока что никаких проблем вроде бы не наблюдается)

56. Azzido (07.05.2010 / 09:18)
что то вообще не понятное E

57. negative (07.05.2010 / 09:20)
Если честно, то я тоже нифига не понял. Так как такой результат фактически и был)) просто без конкретного указания на хранение в кукисах. а просто по умолчанию. Стоило добавить строку что вот надо хранить в куках данные о сессии как все заработало E

58. negative (07.05.2010 / 09:22)
Готовый результат настроек зато теперь хоть есть) Мало ли у кого подобная проблема возникнет. Думаю для каждого прокатит этот вариант)

59. Azzido (07.05.2010 / 09:25)
покажи свой phpinfo(); если не затруднит

60. negative (07.05.2010 / 09:28)
Какие строчки от туда скопировать?)

61. Azzido (07.05.2010 / 09:30)
какое значение у session.use_cookies и
session.use_trans_sid

62. negative (07.05.2010 / 09:33)
session.use_cookies On | On
session.use_trans_sid 0 | 0

63. negative (07.05.2010 / 09:55)
Сейчас попробовал переменил
php_flag session.use_cookies off
php_flag session.use_trans_sid on
Результат тоже положительный. Странно очень конечно это

64. Azzido (07.05.2010 / 09:59)
видимо все таки что то у хостера

URL: https://visavi.net/topics/9087