Опущу все комментарии по поводу кода.
Начнем с того, что ошибка не php коде, а в mysql запросе. Соответственно отлаживать надо запрос, после формирования $query выводите его и смотрите, что получилось.
Вконтакту скорее всего реально. Надо посмотреть, с каким user agent он ходит по сайтам и тупо запрещать его (это первое, что приходит в голову). Для общего случая нет. Ну либо это будет сделано с большим ущербом для юзабилити.
Upd. Вариант для общего случая: определияем ip, потом whois ну или nslookup его и решать - пользователь это или парсер
Любая криптографическая хеш-функция является необратимой. Тут существует другой момент - стойкость данной функции. Про sha1 можете почитать тут
И ответ на ваш вопрос легко гуглится.
Win компилятор не подойдет. Какие данные вы собраетесь вводить?
Закидывайте исходник на сервер, а потом php.net/manual/ru/function.exec.php указываете правильные аргументы для компилятора и смотрите вывод.
Aliance прав. Сам писал такое решение. Связка php+js, информация о событиях хранится в базе. При начале события ставится js таймер, который по завершению обновит страницу. При загрузке страницы смотрим в базе текущие события, если что-то завершилось - выводим информацию, если нет - выводим таймеры js на события..
Ну так у Вас все checkbox'ы с одинаковым id = 'prod', в этом и проблема.
Сделайте форму, в нее поместите checkbox'ы с разными именами и потом уже обрабатывайте форму ajax'ом.