Вам понадобится хранить IP-адрес и временную метку на стороне сервера. Маловероятно, что бот отправит файлы cookie, и даже сеанс на основе URL-адресов не является надежным.
Накладные расходы на файл не должны быть слишком большими, если только вы просто не выполняете запись в плоском файле, которая убьет вас. Вы можете использовать SQLite или аналогичный, возможно, хранящийся в файловой системе на основе памяти для небольшого повышения скорости. Или вы можете пойти с чем-то вроде memcached. Если вам нужно сохранить данные, используйте MySQL. Накладные расходы на полномасштабную базу данных практически ничто по сравнению с тем временем, когда PHP делает практически что угодно.
Если вы действительно хотите сделать что-то подобное с сеансами, отобразите страницу пользовательских соглашений, если в сеансе нет определенной переменной «Я согласен». Таким образом, если бот не отправляет действительный сеанс назад, все, что он получает, является пользовательским соглашением. Если да, то вы можете отслеживать его с помощью переменных сеанса.
Имейте в виду, что решение на основе сеанса не является необходимым, так как вам не нужно запоминать состояние клиента между запросами, и эти сеансы будут нести накладные расходы, если не больше, чем большинство пользовательских альтернатив.
Что касается утверждения о том, что переменные сеанса могут обрабатываться с помощью файлов cookie, это не совсем так. Однако, если вы достаточно глупы, чтобы оставить register_globals
, и вы запрашиваете глобальную переменную, мне не хотелось бы опасаться, что это произойдет из сеанса, файла cookie, строки запроса, среды или ранее не определено. Это все спорно, если вы явно получить доступ через $ _SESSION конечно.
Возможно, мне что-то не хватает, но смысл вашего названия ускользает от меня. –