Владимир55
31.03.2016 - 20:59
В коде показа страницы используется некий алгоритм, определяющий робота. И этому роботу показывается капча. Реализовано это так:
if ($control == "kap")
{
echo "<HTML><HEAD><META HTTP-EQUIV='Refresh' CONTENT='0; URL=/control/captcha.php?url=" . $url . "'></HEAD></HTML>";
exit;
}
Когда я моделирую ситуацию, то все работает как следует. Но когда приходит реальный робот и делает 50 запросов в секунду, то для него этого безусловного перехода словно вообще нет!
Может быть, безусловный переход лучше сделать так:
echo "<HTML><HEAD><META HTTP-EQUIV='Refresh' CONTENT='0; URL=/control/captcha.php?url=" . $url . "'></HEAD></HTML>";
die();
AllesKlar
31.03.2016 - 21:56
безусловный переход лучше делать так:
headrer('location http://....');
exit;
_____________
[продано копирайтерам]
Zzepish
1.04.2016 - 00:11
AllesKlar
Цитата |
headrer('location http://....'); |
header*
я на javascript эту подобную штуку делаю...
пока никто не жаловался...
Владимир55
1.04.2016 - 12:55
Цитата (AllesKlar @ 31.03.2016 - 17:56) |
безусловный переход лучше делать так:
headrer('location http://....'); exit; |
А почему так лучше?
Чем лучше?
Владимир55
1.04.2016 - 12:56
Цитата (Derack @ 1.04.2016 - 08:03) |
я на javascript эту подобную штуку делаю... пока никто не жаловался... |
А как вы это делаете?
Это сложно?
Игорь_Vasinsky
1.04.2016 - 14:38
хернёй не страдайте. Html,js
написали же вам header()
_____________
HTML, CSS (Bootstrap), JS(JQuery, ExtJS), PHP, MySQL, MSSql, Posgres, (TSql, BI OLAP, MDX), Mongo, Git, SVN, CodeIgnater, Symfony, Yii 2, JiRA, Redmine, Bitbucket, Composer, Rabbit MQ, Amazon (SQS, S3, Transcribe), Docker
Владимир55
1.04.2016 - 14:47
Цитата (Игорь_Vasinsky @ 1.04.2016 - 10:38) |
хернёй не страдайте. Html,js
написали же вам header() |
Дык я, вроде бы, и не страдаю. На header замену сделал и теперь надо ждать, когда роботы устроят экзамен.
Но это не мешает спросить, почему header лучше.
Ведь всегда лучше понимать существо дела, чем просто использовать совет.
kristall
1.04.2016 - 16:00
Цитата (Владимир55 @ 1.04.2016 - 14:47) |
Цитата (Игорь_Vasinsky @ 1.04.2016 - 10:38) | хернёй не страдайте. Html,js
написали же вам header() |
Дык я, вроде бы, и не страдаю. На header замену сделал и теперь надо ждать, когда роботы устроят экзамен.
Но это не мешает спросить, почему header лучше.
Ведь всегда лучше понимать существо дела, чем просто использовать совет.
|
Потому что есть HTTP-протокол. А приходящие к тебе роботы, в отличие от твоего браузера, вовсе не обязаны парсить HTML и тем более исполнять JS.
_____________
echo '<pre>',print_r($var, 1);die;
root@server# make love && war
Владимир55
1.04.2016 - 16:22
Цитата (kristall @ 1.04.2016 - 12:00) |
Потому что есть HTTP-протокол. А приходящие к тебе роботы, в отличие от твоего браузера, вовсе не обязаны парсить HTML |
То есть, если парсить РНР-скриптом, то этого безусловного перехода не будет?
AllesKlar
1.04.2016 - 17:27
Цитата (Владимир55 @ 1.04.2016 - 12:47) |
Но это не мешает спросить, почему header лучше. |
Все очень просто.
если ты делаешь редирект средствами htm/js, то ты заставляешь сервер генерировать абсолютно ненужный контент.
Помимо прочего, страница с редиректом отдаст в заголовке статус 200 - что не является правильным.
Отправляя же header, все происходи в кулуарах сервера.
_____________
[продано копирайтерам]
Владимир55
1.04.2016 - 19:16
Цитата (AllesKlar @ 1.04.2016 - 13:27) |
Помимо прочего, страница с редиректом отдаст в заголовке статус 200 - что не является правильным.
Отправляя же header, все происходи в кулуарах сервера. |
Большое спасибо!
Но, если так, то не лучше ли будет
if ($control == "kap")
{
header("HTTP/1.0 403 Forbidden");
headrer('location http://....');
exit;
}
Будет ли передаваться два заголовка?
РНР версии 5.6
AllesKlar
1.04.2016 - 19:39
Цитата (Владимир55 @ 1.04.2016 - 17:16) |
header("HTTP/1.0 403 Forbidden"); |
Ты определись, что тебе нужно?
Переадресация - это переход на страницу, которая по идее должна ответить статусом 200
403 - это запрет на просмотр контента.
ты запрещаешь к просмотру контент и тут же перенаправляешь дальше. Это не логично.
Либо 403 и остановил скрипт, либо отправил дальше переадресацией.
_____________
[продано копирайтерам]
Владимир55
1.04.2016 - 20:14
Мне нужно показать капчу - это основная задача.
Я понимаю её так: выдать 403 и переключить на страницу показа капчи (которая вправе выдать 200, но это уже не важно).
Верно или нет?
AllesKlar
1.04.2016 - 22:16
Цитата (Владимир55 @ 1.04.2016 - 18:14) |
Мне нужно показать капчу - это основная задача.
Я понимаю её так: выдать 403 и переключить на страницу показа капчи (которая вправе выдать 200, но это уже не важно).
Верно или нет? |
Нет.
Капча - это обычный контент, почему он должен быть 403?
Я думаю, тебе подойдет следующее:
- вывод капчи
- капча верна? -> редирект на контент
- капча не верна? -> отдать 403 и остановить скрипт.
_____________
[продано копирайтерам]
Быстрый ответ:
Powered by dgreen
Здесь расположена полная версия этой страницы.