Задачу нормально опишите.
1. Принцип как должно работать. Сколько команд в одной игре, как подбираются команды на игру, как вылетают команды, как осуществляется продвижение по сетке и тд.
2. Как работает, в каком месте проблема.
Ни того, ни другого нет у вас нет. Телепатов здесь тоже нет.
Скрипт пагинатора формирует блок ссылок исходя из общего количества ссылок, точки отсчета и лимита выдачи.
При этом лимит выдачи может не регулироваться и определяться по умолчанию.
Каждая ссылка содержит собственно точку отсчета.
Точка отсчета может быть либо номером нужной страницы, либо номером записи, с которой нужно формировать показ.
При переходе пагинатор получает GET-запрос, формирует блок ссылок на нужную страницу. И все.
Проверьте как отрабатывается старт сессии. В вашем случае, за это отвечает функция sec_session_start(). Посмотрите, что она делает, доходит ли там до старта сессии.
Глобальный массив _SESSION будет доступен только при старте сессии.
при этом их вариант не работает: редирект на нужную страницу делается с помощью header, который не передаёт сессии, а проверка на то, залогинился ли пользователь, делается именно по сессии
Переадресация через header и не должна передавать сессию. Сессия вообще не передается никак. Это сгенерённая кука в браузере. И при старте сессии пхп просто проверяет есть такая запись и соответствует ли она существующим записям на сервере.
А вообще безопасность - это та вещь, где не экономят. Вопрос только в целесообразности накручивания механизмов: насколько "вкусные" вещи лежат за паролем, сколько времени люди захотят потратить на взлом, сколько времени вам понадобится на восстановление сломанного.