
Если ваш код не работает, то проблема скорее всего не связана с сессиями, а кроется в самом алгоритме. Проверьте правильность переменных, возможно вы где-то утеряли переменную, отладьте свой скрипт.
Еще одной проблемой может стать использование перенаправления через навигацию или header при помощи Java-скриптов.
Проблема в том, что PHP сам дописывает автоматический идентификатор сессии только для ссылок вида <a href=>, но не работает для ява-скриптов, мета-тегов и header-ов.
В этом случае необходимо добавить идентификатор руками: header("Location: /script.php?".session_name().'='.session_id());
Иногда также встречается проблема с настройкой session.save_handler. Она имеет свое значение, которое отличается от files. Если это не так – нужно исправить.
Дополнительная информация:
• Кроме куков, сессии посылают и заголовки, которые запрещают кэшировать страницы (cache limiter). В html это будет правильно и нужно. Но если вы попытаетесь при помощи скрипта, проверяющего авторизацию, отдать файл, то браузер откажется скачивать его. Чтобы решить данную проблему вы можете воспользоваться строкой: session_cache_limiter("private"); до старта сессии, скорее всего это решит вашу проблему.
• Как не странно, но использование числовых индексов $_SESSION[1], $_SESSION['10'] в массиве $_SESSION не рекомендуется, т.к. сессии не будут работать.
• В версиях 4.2 - 5.0 была запрещена установка session.use_trans_sid при помощи ini_set(), но начиная с 5-й версии это стало возможным.
• До PHP 4.3.3, скрипт отправлял cookies только когда старт сессии происходил без идентификатора в запросе. Сейчас cookies отправляется каждый раз, когда вызывается session_start().