sublimity
Теория неплохая.
Однако, challenge тебе надо формировать на сервере, а response - на клиенте. Причем (из задачи) завязывать генерацию response на экземпляр окна.
Можно заюзать AJAX, и с клиента просто тупо пересылать некий ключ на сервер при загрузке страницы. А при повторной загрузке того же ключа обрабатывать ситуацию на клиенте.
Но коряво.
Можно просто на сервере каждый раз менять значение определенной куки. И не отдавать страницу, если значение куки повторилось. Но тоже коряво.