пхп-обработчик перегружает сервер?=/

IP:

PHP:
<?
function getip()
{
	if(isset($HTTP_SERVER_VARS)) 
	{
		if(isset($HTTP_SERVER_VARS["HTTP_X_FORWARDED_FOR"])) 
		{
			$realip = $HTTP_SERVER_VARS["HTTP_X_FORWARDED_FOR"];
		}
		elseif(isset($HTTP_SERVER_VARS["HTTP_CLIENT_IP"])) 
		{
			$realip = $HTTP_SERVER_VARS["HTTP_CLIENT_IP"];
		}
		else
		{
			$realip = $HTTP_SERVER_VARS["REMOTE_ADDR"];
		}
	}
	else
	{
		if(getenv('HTTP_X_FORWARDED_FOR')) 
		{
			$realip = getenv('HTTP_X_FORWARDED_FOR');
		}
		elseif(getenv('HTTP_CLIENT_IP')) 
		{
			$realip = getenv('HTTP_CLIENT_IP');
		}
		else 
		{
			$realip = getenv('REMOTE_ADDR');
		}
	}
	return htmlspecialchars($realip);
}
?>

Вообще, полный код цитатника у нас тут на форуме выложен, делали совместно. Вот тут: Для просмотра ссылки Войди или Зарегистрируйся если понадобится посмотреть файлы. Все основные функции прописаны в func.php, там же и проверки на корректность запросов.
 
Очень странно. Я не вижу тут ничего страшного, кроме неиспользования PDO :p
Это либо DoS, либо траффик конкурентов. Не может быть нагрузка от людей. Либо пол планеты решили к Вам поголосовать зайти, случайно так :)
 
А можно как-то вписать небольшую задержку в голосовании? Ну хотя бы в минуту? Куку вставить куда-нибудь, например?
Тогда ведь спамить голосовалкой не удастся, в теории?
 
sublimity, ага, достаточно проголосовать в другом потоке - и защиты как и не было :)
zavu, у тебя и так с 1 IP можно 1 раз проголосовать. Можно конечно конечно еще в куки записывать метку, что этот пользователь проголосовал, но после очищения кук это не поможет.
Как вариант - создать в БД timestamp последнего голосования любого пользователя (т.е. пользователь а проголосовал - timestamp обновился, пользователь b проголосовал - timestamp обновился) и сделать какой-то лимит - не чаще раз в минуту.
 
chibit, смысл в том, чтобы не нагружать непрерывно БД. Защита по айпи требует проверки этих самых айпи из базы, а кука не требует. Да, куку можно почистить, но пока ее чистишь пройдет какое-то небольшое время в лююбом случае. т.е. непрерывно спамить каким-нибудь злым скриптом и грузить таким образом БД не получится. Ну-у в теории. Так?

Сегодня подключила голосовалку.. сайт продержался полчаса и умер =/ Прям зла не хватает =/
 
zavu, ну на самом-то деле select занимает доли миллисекунды, да и в логах на БД вроде никаких жалоб нету.
А насчет кук - если спамить серверным скриптом, то там ничего очищать не нужно - один запрос - одни куки :).
М.б. проблема в хостере?

Попробуй добавить
PHP:
// Присваиваем переменные 
$id = intval($_POST['id']); 
$action = $_POST['action']; 
$ip = getip(); 

//Записываем в лог
$filename = 'logfile.txt';
$fp = fopen($filename, 'a');
fwrite($fp, date('H:s:i d-m-Y') . PHP_EOL));
fclose($fp);
После того, как сайт умрет - скидывай лог сюда.
 
э... глупый вопрос, а в куда это прописать?=) в какой файл?
 
Назад
Сверху