[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Безусловный переход
Владимир55
В коде показа страницы используется некий алгоритм, определяющий робота. И этому роботу показывается капча. Реализовано это так:

			// Показываем капчу
if ($control == "kap")
{
// echo "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
безусловный переход лучше делать так:
headrer('location http://....');
exit;


_____________
[продано копирайтерам]
Zzepish
AllesKlar
Цитата
headrer('location http://....');

header*
Derack
я на javascript эту подобную штуку делаю...
пока никто не жаловался...
Владимир55
Цитата (AllesKlar @ 31.03.2016 - 17:56)
безусловный переход лучше делать так:
headrer('location http://....');
exit;

А почему так лучше?

Чем лучше?
Владимир55
Цитата (Derack @ 1.04.2016 - 08:03)
я на javascript эту подобную штуку делаю...
пока никто не жаловался...

А как вы это делаете?

Это сложно?
Игорь_Vasinsky
хернёй не страдайте. 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
Цитата (Игорь_Vasinsky @ 1.04.2016 - 10:38)
хернёй не страдайте. Html,js

написали же вам header()

Дык я, вроде бы, и не страдаю. На header замену сделал и теперь надо ждать, когда роботы устроят экзамен.

Но это не мешает спросить, почему header лучше.

Ведь всегда лучше понимать существо дела, чем просто использовать совет.
kristall
Цитата (Владимир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
Цитата (kristall @ 1.04.2016 - 12:00)
Потому что есть HTTP-протокол. А приходящие к тебе роботы, в отличие от твоего браузера, вовсе не обязаны парсить HTML

То есть, если парсить РНР-скриптом, то этого безусловного перехода не будет?
AllesKlar
Цитата (Владимир55 @ 1.04.2016 - 12:47)
Но это не мешает спросить, почему header лучше.

Все очень просто.
если ты делаешь редирект средствами htm/js, то ты заставляешь сервер генерировать абсолютно ненужный контент.
Помимо прочего, страница с редиректом отдаст в заголовке статус 200 - что не является правильным.

Отправляя же header, все происходи в кулуарах сервера.

_____________
[продано копирайтерам]
Владимир55
Цитата (AllesKlar @ 1.04.2016 - 13:27)
Помимо прочего, страница с редиректом отдаст в заголовке статус 200 - что не является правильным.

Отправляя же header, все происходи в кулуарах сервера.

Большое спасибо!

Но, если так, то не лучше ли будет
// Показываем капчу
if ($control == "kap")
{
// echo "kap";
header("HTTP/1.0 403 Forbidden");
headrer('location http://....');
exit;
}


Будет ли передаваться два заголовка?

РНР версии 5.6
AllesKlar
Цитата (Владимир55 @ 1.04.2016 - 17:16)
header("HTTP/1.0 403 Forbidden");

Ты определись, что тебе нужно?
Переадресация - это переход на страницу, которая по идее должна ответить статусом 200

403 - это запрет на просмотр контента.

ты запрещаешь к просмотру контент и тут же перенаправляешь дальше. Это не логично.

Либо 403 и остановил скрипт, либо отправил дальше переадресацией.



_____________
[продано копирайтерам]
Владимир55
Мне нужно показать капчу - это основная задача.

Я понимаю её так: выдать 403 и переключить на страницу показа капчи (которая вправе выдать 200, но это уже не важно).

Верно или нет?
AllesKlar
Цитата (Владимир55 @ 1.04.2016 - 18:14)
Мне нужно показать капчу - это основная задача.

Я понимаю её так: выдать 403 и переключить на страницу показа капчи (которая вправе выдать 200, но это уже не важно).

Верно или нет?

Нет.
Капча - это обычный контент, почему он должен быть 403?

Я думаю, тебе подойдет следующее:

- вывод капчи
- капча верна? -> редирект на контент
- капча не верна? -> отдать 403 и остановить скрипт.

_____________
[продано копирайтерам]
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.