Глючный скрипт
Есть страница, где код стоит: http://lineweb.ru/moskwa/index.htm, но пишет, что не стоит. Использую preg_match(), но выдаёт ошибку.
вот функция проверки наличия кода:
Код:
function Checkbutton ($url) {
global $code;
$url_0 = substr($url, 7);
$url_1 = explode(".", $url_0);
$v = count($url_1) - 2;
$b = count($url_1) - 1;
$url_2 = explode("/", $url_1[$v]);
$url_3 = explode("/", $url_1[$b]);
$url_con[0] .= "$url_1[0].";
for ($i=1; $i < count($url_1) - 2; $i++) {
$url_con[0] .= "$url_1[$i].";
}
$url_con[0] .= $url_2[0];
$url_con[1] .= "$url_1[0].";
for ($i=1; $i < count($url_1) - 1; $i++) {
$url_con[1] .= "$url_1[$i].";
}
$url_con[1] .= $url_3[0];
if (@fsockopen($url_con[0], 80)) {
$url_connect = $url_con[0];
@fclose($url_con[0]);
} else if (@fsockopen($url_con[1], 80)) {
$url_connect = $url_con[1];
@fclose($url_con[1]);
}
if ($fsock = @fsockopen($url_connect, 80, $errno, $errstr)) {
fputs($fsock, "GET $url HTTP/1.0\r\n\r\n");
while (!feof($fsock)) {
$result .= fgets($fsock,100);
}
fputs($fsock, "Connection: close\r\n\r\n");
fclose($fsock);
if (!preg_match("/$code/i", "$result")) {
$error = "<center><font color=red>На странице нашего баннера нет</font></center>";
return $error;
}
} else {
$error = "<center><font color=red>Невозможно подключиться к серверу</font></center>";
return $error;
}
}
global $code;
$url_0 = substr($url, 7);
$url_1 = explode(".", $url_0);
$v = count($url_1) - 2;
$b = count($url_1) - 1;
$url_2 = explode("/", $url_1[$v]);
$url_3 = explode("/", $url_1[$b]);
$url_con[0] .= "$url_1[0].";
for ($i=1; $i < count($url_1) - 2; $i++) {
$url_con[0] .= "$url_1[$i].";
}
$url_con[0] .= $url_2[0];
$url_con[1] .= "$url_1[0].";
for ($i=1; $i < count($url_1) - 1; $i++) {
$url_con[1] .= "$url_1[$i].";
}
$url_con[1] .= $url_3[0];
if (@fsockopen($url_con[0], 80)) {
$url_connect = $url_con[0];
@fclose($url_con[0]);
} else if (@fsockopen($url_con[1], 80)) {
$url_connect = $url_con[1];
@fclose($url_con[1]);
}
if ($fsock = @fsockopen($url_connect, 80, $errno, $errstr)) {
fputs($fsock, "GET $url HTTP/1.0\r\n\r\n");
while (!feof($fsock)) {
$result .= fgets($fsock,100);
}
fputs($fsock, "Connection: close\r\n\r\n");
fclose($fsock);
if (!preg_match("/$code/i", "$result")) {
$error = "<center><font color=red>На странице нашего баннера нет</font></center>";
return $error;
}
} else {
$error = "<center><font color=red>Невозможно подключиться к серверу</font></center>";
return $error;
}
}
Помогите, плиз. Этот топик не реклама, а реальная просьба.
Если пишет, что не стоит, то наверняка ошибка в РЕГЭКС. а его ты не показал.
fputs($fsock, "GET $url HTTP/1.0\r\n\r\n");
Попробуй написать так.
fputs($fsock, "GET / HTTP/1.1\r\nHost: ".$url."\r\nConnection: Close\r\n\r\n");
И ненадо тогда писать
fputs($fsock, "Connection: close\r\n\r\n");
Пустая строка должно стоять в конце HTTP запроса, а у тебя в самом начале!!!!