Нужно поправить скрипт

RM
На сайте с 21.06.2011
Offline
77
968

Вот сам скрипт:

<?php
$url = str_replace(" ", "%20", $_GET['link']);
$q = str_replace(" ", "%20", $_GET['query']);
$drugoi_site = "http://vsevideo.filesfindhouse.ru/?wkey=645174&q=$q";

$f = file_get_contents($url);
if(preg_match("/не доступен/i", $f))
header("Location: $drugoi_site");

header("Location: $url?aid=6390&t=3");
?>

Он должен работать так: когда пользователь переходит по ссылке то скрипт скачивает страницу по адресу определенному в запросе(?link=http://тут сайт.ру/) и там по средствам preg_match ищет вхождение по фразе "не доступен" и если находит то перемещает пользователя на страницу $drugoi_site, а если не находит то переходит по заданной ссылке(?link=http://тут сайт.ру/).

Но проблема есть одна:

Во-первых в лог ошибок сервера постоянно(после каждого перехода по скрипту) добавляется строка типа:

[Fri Jul 01 15:55:54 2011] [error] [client мой ip] PHP Warning:  file_get_contents(http://kinodivan.com/search/title/Bad Teacher): failed to open stream: HTTP request failed! <html>\r\n in /путь до скрипта/download.php on line 6, referer: реферер

Во-вторых, если в запросе(http://kinodivan.com/search/title/Bad Teacher) есть более одного слова, то он просто не может загрузить страницу(file_get_contents) и соответственно проверить наличие нужной фразы, пробовал уже и urlencode - ошибка не добавляется в лог, но все-равно не хочет качать страницу! :madd:

В чем может быть проблема? И как исправить? Если не трудно поправьте скрипт. :)

PS. Если в запросе одно слово, то все ОК и работает как часы!

siv1987
На сайте с 02.04.2009
Offline
427
#1

Не надо удалять кодированный пробел %20.

И в ссылке тоже.

RM
На сайте с 21.06.2011
Offline
77
#2
siv1987:
Не надо удалять кодированный пробел %20.
И в ссылке тоже.

Подробнее поясни. Там наоборот стоит замена пробела на %20, хотя браузер итак заменят и кодирует...

siv1987
На сайте с 02.04.2009
Offline
427
#3

Прошу прошения, перепутал.

дебажте тогда $q и $url - die( 'url: '.$url .'<br />q: '.$q );

не качается именно потому

RM
На сайте с 21.06.2011
Offline
77
#4

Выдает:

url: http://kinodivan.com/search/title/Bad%20Teacher
q: Очень%20плохая%20училка

Ну как бы тут все верно! В чем трабла не пойму!

RoMaN444Ik добавил 01.07.2011 в 17:02

PS. выдает без знака подчеркивания в начале, это я добавил чтоб ссылка не кликабельной была! :)

Mik Foxi
На сайте с 02.03.2011
Offline
1076
#5

параметр q передавать в urlencode

Антибот, антиспам, веб файрвол, защита от накрутки поведенческих: https://antibot.cloud/ + партнерка, до 40$ с продажи.
RM
На сайте с 21.06.2011
Offline
77
#6
foxi:
параметр q передавать в urlencode

Сейчас попробую!

RoMaN444Ik добавил 01.07.2011 в 17:32

foxi:
параметр q передавать в urlencode

Блин, параметр q используется для передачи запроса сайту который должен открываться в случае отсутствия вхождений для "не доступен", с ним все норм. Ну че еще то копать, весб день с этим гребаным скриптом провозился и не нашел причину проблемы! 😡😡😡

LovelAss
На сайте с 05.06.2009
Offline
96
#7

Такой способ попробуй:


$url = str_replace("/?link=", "", $_SERVER['REQUEST_URI']);
adrin02
На сайте с 12.04.2006
Offline
85
#8

Кодируй перед отправкой $_GET в base64, отправляй это ссылке. А потом расскодируй. Я так решал подобные проблеммы.

Хостинг изображений (http://likepic.net) SpeedTest (http://speed-tester.info)
TF-Studio
На сайте с 17.08.2010
Offline
334
#9

curl вместо file_get_contents

Всё ещё лучший способ заработка для белых сайтов: GoGetLinks (https://www.gogetlinks.net/?inv=fahbn8).
RM
На сайте с 21.06.2011
Offline
77
#10

Уже решил траблу! Всем спасибо за советы!

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий