PDA

Просмотр полной версии : http referer


dddtt
13.11.2009, 22:56
Здрасти, я нуб в пхп но на страничке хочу поставить надпись типа "Вы нашли нас по запросу "таряляля" ", вот траляляля должно браться из referer. Если подскажите буду благодарен, если не хотите так подсказывать дам на пиво)

shellz[21h]
13.11.2009, 23:01
<? echo "Вы нашли нас по запросу: ".$_SERVER['HTTP_REFERER']; ?>

dddtt
13.11.2009, 23:09
Ой, а вот как оттуда выкинуть http://yandex.ru/ И всякие %20%352 переделать в русские буковки?)
ТОесть если я ввел запрос в поисковике "шлак", то у меня на сайте появляется

Вы нашли нас по запросу "шлак"

Deathdreams
13.11.2009, 23:10
urldecode() ?

dddtt
13.11.2009, 23:13
Ну я же говорю я нуб) я не знаю как этим пользоваться... (

Fepsis
13.11.2009, 23:22
ТС, ты уверен, то на твой сайт будут заходить только лишь после какого-либо запроса на яндексе..?!

dddtt
13.11.2009, 23:26
ТС, ты уверен, то на твой сайт будут заходить только лишь после какого-либо запроса на яндексе..?!


нет, ну я это в сторонке сделаю...
я прошу помочь, думаю это не очень сложно и есть куча готового, за хороший ответ я даже заплачу

shellz[21h]
13.11.2009, 23:27
<? echo "Вы нашли нас по запросу: ".urldecode($_SERVER['HTTP_REFERER']); ?>

dddtt
13.11.2009, 23:47
']<? echo "Вы нашли нас по запросу: ".urldecode($_SERVER['HTTP_REFERER']); ?>
неа, тоже вставляет http://www.google.ru/url?sa=t&source=web&ct=res&cd=1&ved=0CAcQFjAA&url=http: и т.д.

Fepsis
13.11.2009, 23:47
Ну если чисто под яндекс, то как-то так:
<?php
$url = $_SERVER['HTTP_REFERER'];
preg_match("/(?<=text\=)(.*?)(?=\&)/", $url, $txt);
$text = iconv('UTF-8', 'Windows-1251', urldecode($txt[0]));
echo 'Вы пришли на сайт по запросу <b>'.$text.'</b>';
?>

shellz[21h]
13.11.2009, 23:55
Еще вариант, будет выводить только хост

<?php
preg_match("#http://(.*)/#i", $_SERVER['HTTP_REFERER'], $url);
echo 'Вы пришли на сайт по запросу '.$url[0];
?>

m0Hze
13.11.2009, 23:58
$url = parse_url($_SERVER['HTTP_REFERER']);
echo 'Вы пришли на сайт по запросу '.$url['host'];

Не нужно везде сувать регулярки.

shellz[21h]
14.11.2009, 00:02
ну если без регулярок, то можно и кароче)

<?php
echo 'Вы пришли на сайт по запросу '.parse_url($_SERVER['HTTP_REFERER'], PHP_URL_HOST);
?>

m0Hze
14.11.2009, 00:06
']ну если без регулярок, то можно и кароче)

<?php
echo 'Вы пришли на сайт по запросу '.parse_url($_SERVER['HTTP_REFERER'], PHP_URL_HOST);
?>

Конфету на полке возьмеш. :/

dddtt
14.11.2009, 00:13
Ну если чисто под яндекс, то как-то так:
<?php
$url = $_SERVER['HTTP_REFERER'];
preg_match("/(?<=text\=)(.*?)(?=\&)/", $url, $txt);
$text = iconv('UTF-8', 'Windows-1251', urldecode($txt[0]));
echo 'Вы пришли на сайт по запросу <b>'.$text.'</b>';
?>
спасибо)

(Dm)
14.11.2009, 01:39
парни совсем забыли про xss)

m0Hze
14.11.2009, 01:46
парни совсем забыли про xss)
Не хочу врать,но помоему, parse_url не сработает,если в хосте будут спец-символы.+ выводиться только он - значит хсс нет.Но Если ф-ция считает валидным все подряд... :)
strip_tags в руки

(Dm)
14.11.2009, 02:04
Не хочу врать,но помоему, parse_url не сработает,если в хосте будут спец-символы.+ выводиться только он - значит хсс нет.Но Если ф-ция считает валидным все подряд... :)
strip_tags в руки
Через parse_url, реально провести xss.
http://<HTML><BODY ONLOAD=alert(document.cookie)>/

P.S. будь по проще.
Обращайте внимание пожалуйста на безопасность.

m0Hze
14.11.2009, 02:11
Через parse_url, реально провести xss.


P.S. будь по проще.
Ну вот про это я и говорил.Тогда,все можно,согласен.Думал парсе_урл,кагбе еще и проверяет валидность.
+.
PS.Проще не хочу.