|
|
|
| Здравствуйте. Пожалуйста, помогите составить блок кода, который должен работать по следующему алгоритму: если на страницу где он находится переданы данные методом POST мы проверяем, если они были переданы с нашего сайта то пишем "Данные успешно получены", а если они были переданы с другого сайта или вобще не с сайта, то пишем "Произошла ошибка".
Это нужно для того, чтобы умные люди не копировали формы получения бонуса на свои сайты и их посетители не получали бонусы с их сайта.
Заранее спасибо!!! | |
|
|
|
|
|
|
|
для: pavluxa09
(11.04.2010 в 11:20)
| | данные методом POST передаются не с сайта, а с клиентской машины. Браузером.
Соответственно и бонусы у Вас люди получают запросом клиента. | |
|
|
|
|
|
|
|
для: Trianon
(11.04.2010 в 11:44)
| | Я понял. Я прошу код типа: если пришли данные методом POST и в слове реферер нет нашего домена то пишем ошибку!!! | |
|
|
|
|
|
|
|
для: pavluxa09
(11.04.2010 в 11:49)
| | так Вы ж всё и написали сами! :)
Осталось переписать на php.
REQUEST_METHOD
HTTP_REFERER | |
|
|
|
|
|
|
|
для: Trianon
(11.04.2010 в 11:51)
| | Да. Я это и прошу. | |
|
|
|
|
|
|
|
для: pavluxa09
(11.04.2010 в 11:53)
| | Ваш вариант кода?
В чем затруднения?
Будут ошибки в варианте - будем исправлять.
Запрос "напишите за меня просто потому что мне некогда" сразу предполагает, что Вы не договорились о цене.
Другие люди тоже свое время ценят. | |
|
|
|
|
|
|
|
для: Trianon
(11.04.2010 в 11:54)
| | Затрудняюсь в том, что незнаю как мне узнать есть ли в HTTP_REFERER мой домен. Какой функцией? | |
|
|
|
|
|
|
|
для: pavluxa09
(11.04.2010 в 11:56)
| | strpos()
parse_url() | |
|
|
|
|
|
|
|
для: Trianon
(11.04.2010 в 11:56)
| | У меня получилось такое:
if( $_SERVER['REQUEST_METHOD']=="POST" && strpos( $_SERVER['HTTP_REFERER'],$_SERVER['HTTP_HOST'] )==0 )
{
die("<h1 align=\"center\">Произошла ошибка</h1><h2 align=\"center\">Вами была произведена попытка взлома системы.</h2>");
}
|
это правильно? | |
|
|
|
|
|
|
|
для: pavluxa09
(11.04.2010 в 11:59)
| | == 0 - неправильно.
Хотя работать может и будет.
До первого хитрого деятеля, который на своем сайте создаст папку с именем Вашего сайта. | |
|
|
|
|
|
|
|
для: Trianon
(11.04.2010 в 12:04)
| | ==-1 ? | |
|
|
|
|
|
|
|
для: pavluxa09
(11.04.2010 в 12:05)
| | Вы гадать будете, или всё же в мануал заглянете? | |
|
|
|
|
|
|
|
для: Trianon
(11.04.2010 в 12:06)
| | ладно false | |
|
|
|
|
|
|
|
для: pavluxa09
(11.04.2010 в 12:07)
| | промах | |
|
|
|
|
|
|
|
для: Trianon
(11.04.2010 в 12:04)
| | поэтому всё же parse_url
Хотя ... referer же можно любой выплюнуть. Хоть с сайтом kremlin.ru :)
Так что защиту придется строить по-другому. | |
|
|
|
|
|
|
|
для: Trianon
(11.04.2010 в 12:07)
| | То что реферер можно подменить я знаю. Просто так уже будет тяжелее накрутить :)
if( $_SERVER['REQUEST_METHOD']=="POST" )
{
$referer = parse_url( $_SERVER['HTTP_REFERER'] );
$domain = parse_url( "http://".$_SERVER['HTTP_HOST'] );
if( $referer['host']!=$domain['host'] )
{
die( "<h1 align=\"center\">Произошла ошибка</h1><h2 align=\"center\">Вами была произведена попытка взлома системы.</h2>" );
}
else
{
unset($referer);
unset($domain);
}
}
|
| |
|
|
|
|
|
|
|
для: pavluxa09
(11.04.2010 в 12:20)
| | HTTP_HOST это уже сам host . Его не нужно парсить :)
Да. И я бы не стал так пафосно утверждать, что "произошла попытка взлома системы"
Не надо сгущать краски.
REFERER может быть срезан даже не самим клиентом. | |
|
|
|
|
|
|
|
для: Trianon
(11.04.2010 в 12:21)
| | Всё понял. Спасибо. Вы самый умный программист на свете! | |
|
|
|
|
|
|
|
для: pavluxa09
(11.04.2010 в 12:24)
| | Пожалуйста. Не надо сгущать краски. | |
|
|
|
|
|
|
|
для: Trianon
(11.04.2010 в 12:28)
| | Ок. Я написал типа ваш браузер не поддерживает этой технологии | |
|
|
|
|
|
|
|
для: pavluxa09
(11.04.2010 в 12:28)
| | Я бы написал правду. Наш сайт несовместим с настройками Вашего браузера.
Не надо обвинять браузер :) | |
|
|
|