Вопрос по session_id($newid)

Phristen

Новичок
Вопрос по session_id($newid)

Хочу уточнить.

Я что-то не так делаю, или при ручной замене ID сессии с помощью session_id(), файл сессии надо переименовывать тоже вручную?
Т.е. вот так:
PHP:
	$S_PATH = ini_get("session.save_path");
	$oldid = $_COOKIE[$sname];
	$newid = gen_sess_id();
	rename("$S_PATH/sess_$oldid", "$S_PATH/sess_$newid");
	session_name ($sname);
	session_id ($newid);
	session_start ();
??

Потому что если не переименовывать файл, то у меня PHP создает новый, нулевого размера. Так и должно быть? В мануале ничего не сказано на сей счёт.

Ну и вообще, стоит ли игра свеч? Насколько, в плане безопасности, полезна замена ID сессии? Если вообще полезна.
И не слишком ли много ресурсов будет жрать скрипт наверху?
 

Phristen

Новичок
Смысл в самостоятельном выборе ID - исключить возможность получения одинакового ID разными юзерами.
Смысл замены - а чёрт его... :) В принципе, если кто-то прослушивает траффик, то это не особо поможет.

Но всё же. Как на счёт технической стороны?
 

Rammstein

PHPClub::News
Сами себе проблемы придумываем. Ню-ню.
С чего ты взял, что твой $newid = gen_sess_id(); уникальней того, что делает PHP автоматом?
 

Phristen

Новичок
Да мало-ли? В функцию можно положить что угодно. Самый простой вариант - удлиннить id. Чем длиннее ID, тем меньше шанс его дупликации, разве нет?
Или добавить к началу строки значение time(). Шанс, что в одну секунду PHP сгенерирует два идентичных ключа - минимален. Точнее, что в одну секунду вообще придётся их генерировать.

Хотя я готов довериться твоему опыту :) Если смысла нет, то так и запишем.

Однако, хотелось бы всё же узнать на счёт session_id() и переименования файла сессии. Интересно же! Может какие настройки подкрутить в php.ini, чтобы файлы сами переименовывались?
 

Фанат

oncle terrible
Команда форума
Rammstein
есть статья на деталях. в которой рекомендуется так делать.
у этого способа есть офигенный минус - линейность перемещения по сайту. открываем одну страничку в новом окне - и всё, в старом сесия протухла. Хотя, возможно, если сид передаётся куками, то этого не произойдёт.
В любом случае, такой подход имеет место быть, во всяком случае - в литературе, но вот вопрос, поднятый топикстартером, как-то лично мне не приходил в голову.

Phristen
session_regenerate_id()?
 

Phristen

Новичок
Нет, с куками сессия не тухнет.
Хорошо, конечно, что с rename'ом не надо извращаться, но и нет возможности присвоить совственноручно сгенерированный ID.

В-общем, буду думать. :)
Спасибо за ответы.

P.S. но вообще странно, что дав возможность менять ID через session_id, задачу переименования файлов решили оставить разработчику :rolleyes:
 

Phristen

Новичок
ба! а это ещё зачем?
Хотел сделать ID сессии длиннее, чтобы уменьшить шанс дупликации. Я же говорил.
не м е н я т ь, а
з а д а в а т ь
На мой взгляд, это понятия синонимичные (в данном контексте). Был один ID, стал другой. Какая разница - задали его, или изменили? Главное, что он стал другим.
 

Фанат

oncle terrible
Команда форума
в данном контексте эти понятия разные.
не было никакого, а задали конкретный.
это ты хочешь м е н я т ь. И при этом пеняешь разработчикам - почему, мол, не предусмотрели.
П р е д у с м о т р е л и. Специальную функцию. Которая м е н я е т.
А в той, которая задаёт, озвученный тобой функционал не нужен.
чтобы уменьшить шанс дупликации
скажи, что ты шутишь.
 

Phristen

Новичок
Что-то я не пойму. Когда новый ID сессии фабрикуется функцией session_regenerate_id, то это, стало быть, называется изменением, а когда тот же ID фабрикуется юзерской функцией, то это уже не изменение, а нечто совершенно иное?

Чем "g4kd3f6g9l63dgd43lgldsfg", которое, допустим сгенерировала моя функция, более "конкретно", чем "dsfds64hsdf43k9jxc1", которое сгенерировала session_regenerate_id?

В конечном итоге session_regenerate_id тоже присваивает ID сессии конкретное знчение. И чует сердце, оно берётся далеко не из магического эфира, а возвращается функцией, аналогичной той, что использую для "задавания конкретного значения" я.
не было никакого, а задали конкретный.
Это только при первой загрузки страницы. Ну и потом.
Переход из состояния "нет значения" в состояние "есть значение" - это не изменение?
П р е д у с м о т р е л и. Специальную функцию. Которая м е н я е т.
Ну и чёрт с ней, с терминологией. Ты когда меняешь место жительства, твой адрес "меняется", или "задаётся"? Так почему, когда ты получаешь новые права, там в графе "адрес" стоит не случайный набор букв и цифр, над которым у тебя нет никакого контроля (твоё определение слова "менять"), а твой новый, конкретный адрес? Это всё демагогия.
скажи, что ты шутишь.
Хорошо, я шучу.
 

Фанат

oncle terrible
Команда форума
В конечном итоге session_regenerate_id тоже присваивает ID
в конечном итоге session_regenerate_id делает то, что ты хочешь от session_id. вот и все. это две разные функции.
Ты когда меняешь место жительства
когда меняю - меняется.
а когда я только родился - задаётся. теперь понятно?
 
Сверху