$_SESSION['token'] = rand();
Самое первое, что вы делаете, когда используете сеанс здесь, задаете $_SESSION['token']
случайное значение. Таким образом, каждый раз, когда код используется, значение будет отличаться. (Или, по крайней мере, очень может быть другим.)
Возможно, вы захотите проверить значение перед тем, как присвоить ему случайное значение, или назначить случайное значение, когда сеанс начинается в другом месте кода, а не при загрузке каждой страницы.