<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title></title>
</head>
<body>
<?php
define('URL', 'http://shop.megafonnw.ru/spb/?pageid=5&subpageid=5&rnd=18');
$fp = fopen('URL', 'r');
$fpt = fopen('script.txt', 'r+');
$fpn = fopen('new.txt', 'r+');
$cont = file_get_contents(URL);
$man = substr($cont, 14900, 7636);
$script = file_get_contents('script.txt');
$new = file_get_contents('new.txt');
if($script == "") {
fwrite($fpt, $man);
print "script zapisan!";
}else {
if($script == $new) {
$ret = fwrite($fpn, $man);
print $ret."<br/>";
$sost = "No changed!";
ftruncate($fpn, 0);
}else {
$ret = fwrite($fpn, $man);
print $ret."<br/>";
$sost = "Text has been changed!";
ftruncate($fpt, 0);
$ret2 = fwrite($fpt, $new);
print $ret2."<br/>";
print strlen($new);
ftruncate($fpn, 0);
}
print "script ne zapisan";
}
print "\n\t<br/>".$sost;
fclose($fpn);
fclose($fpt);
fclose($fp);
?>
</body>
</html>
Заранее благодарю!
Спустя 1 час, 19 минут, 57 секунд (20.05.2010 - 20:00) vagrand написал(а):
Советую тебе использовать регулярные выражения а не substr($cont, 14900, 7636)
Спустя 1 час, 35 секунд (20.05.2010 - 21:00) Kuzya написал(а):
Странный какой-то код, сложный очень. Мне кажется что проще сделать так:
1. На нужном сайте код, который проверяется, обрамить какими-нибудь комментариями, чтоб сделать сделать простым извлечение его регулярными выражениями(как сказал vagrand).
2. При обращении к сайту извлекать этот код, помещать в файл если он ранее не был записан
3. Если код уже записан то просто получать старое содержимое как сейчас, file_get_contents`ом, и сравнивать с тем что есть.
Код очень запутан благодаря лишним нагромождениями типа странных fopen`ов (вместо которых подойдёт file_put_contents), ftruncate`ов и прочего. Чем проще код, тем проще в нём искать ошибки.
1. На нужном сайте код, который проверяется, обрамить какими-нибудь комментариями, чтоб сделать сделать простым извлечение его регулярными выражениями(как сказал vagrand).
2. При обращении к сайту извлекать этот код, помещать в файл если он ранее не был записан
3. Если код уже записан то просто получать старое содержимое как сейчас, file_get_contents`ом, и сравнивать с тем что есть.
Код очень запутан благодаря лишним нагромождениями типа странных fopen`ов (вместо которых подойдёт file_put_contents), ftruncate`ов и прочего. Чем проще код, тем проще в нём искать ошибки.
Спустя 5 минут, 6 секунд (20.05.2010 - 21:05) Илларион написал(а):
СпасиБо. Мне подсказали. Но возникла другая проблема - при загрузке на хостинг и выполнении там скрипта - 500-ая ошибка. Из-за чего это может быть? Вот обновлённый скрипт.
<?php
$url = 'http://shop.megafonnw.ru/spb/?pageid=5&subpageid=5&rnd=18';
$insite=file_get_contents($url);
$script=file_get_contents('script.txt');
$man=substr($insite,14900, 7636);
if ($man==$script){
$sost = 'neizmenon';
}else{
file_put_contents('script.txt',$man);
$sost = 'izmenen';
}
if($sost == 'izmenen'){
$otpr = mail("megafonnw921@mail.ru", "Изменения на megafonnw.ru", "Здравствуйте, Евгений! Произошли изменения на сайте megafonnw.ru . Зайдите, посмотрите результат изменений. Ваш покорный слуга - Робот-Парсер");
}
if($otpr){
print "Отправлено!";
}else{
print "Неудача!";
}
?>
Спустя 19 минут, 55 секунд (20.05.2010 - 21:25) Kuzya написал(а):
Причин ошибки 500 может быть море. Хотя там снизу всегда подписывается что-то типа "смотрите в логи" Так что здесь путь ясен. Скорее всего запрещено открытие удалённых файлов. Вообщем, главное заглянуть в лог ошибок и сразу всё станет понятно.
Спустя 1 час, 23 минуты, 10 секунд (20.05.2010 - 22:49) Илларион написал(а):
Странно, я вроде бы выставил 777. Ну ладно, СпасиБо всё равно, буду думать в этом направлении!
Спустя 8 часов, 49 минут, 41 секунда (21.05.2010 - 07:38) Kuzya написал(а):
Кстати на многих хостингах запрещено ради безопасности запускать скрипты с правами 777
В прошлом посте я говорил о том, что иногда PHP запрещают работать с удалёнными файлами. На всякий случай поищи в phpinfo() значение опции allow_url_fopen. Если оно установлено в "1" или "on" то всё в порядке.
В прошлом посте я говорил о том, что иногда PHP запрещают работать с удалёнными файлами. На всякий случай поищи в phpinfo() значение опции allow_url_fopen. Если оно установлено в "1" или "on" то всё в порядке.
Спустя 1 минута, 25 секунд (21.05.2010 - 07:40) Илларион написал(а):
Kuzya, ты оказался прав!)) Я поменял права на 644 и всё ок. Теперь разб ираюсь почему глючит функция mail()
Спустя 5 минут, 12 секунд (21.05.2010 - 07:45) Илларион написал(а):
Вот ещё смотрите, какая хрень! Раньше такого никогда не было!
Warning: mail() [function.mail]: "sendmail_from" not set in php.ini or custom "From:" header missing in
Почему пишет, что не установлена? Из-за чего это? Или нужно писать "от кого", пока нету почты? Заранее благодарю!
Warning: mail() [function.mail]: "sendmail_from" not set in php.ini or custom "From:" header missing in
Почему пишет, что не установлена? Из-за чего это? Или нужно писать "от кого", пока нету почты? Заранее благодарю!
Спустя 7 минут, 28 секунд (21.05.2010 - 07:52) Kuzya написал(а):
Ошибка говорит о том что в php.ini не установлен заголовок "From" по умолчанию. Почитай документацию о mail(). Там в одном из массивов передаются дополнительные заголовки письма. Вот в них и надо передать своё значение заголовка "From"
Спустя 2 минуты, 6 секунд (21.05.2010 - 07:54) Илларион написал(а):
С этой проблемой справился. Настала другая - функция mail возвращает ложь! Это и на localhost и на хостинге. В чём же проблема? Первый раз с таким сталкиваюсь!
Заранее благодарю!
if($sost == 'izmenen'){
$otpr = mail("megafonnw921@mail.ru", "Изменения на megafonnw.ru", "Здравствуйте, Евгений! Произошли изменения на сайте megafonnw.ru . Зайдите, посмотрите результат изменений. Ваш покорный слуга - Робот-Парсер", "From: BIV332@yandex.ru");
}
if($otpr){
print "Отправлено!";
}else{
print "Неудача!";
}
Заранее благодарю!
Спустя 13 минут, 16 секунд (21.05.2010 - 08:08) Kuzya написал(а):
Даже не знаю. Может быть не хватает \r\n в конце текста заголовков?
А вообще можно воспользоваться Pear::Mail и не мучиться Там хоть не false возвращается, а адекватный текст ошибки
А вообще можно воспользоваться Pear::Mail и не мучиться Там хоть не false возвращается, а адекватный текст ошибки
Спустя 1 минута, 26 секунд (21.05.2010 - 08:09) Илларион написал(а):
Нашёл ошибку в логике) Когда sost не равно изменён, тогда mail не выполняется. Следовательно, $otpr не определена. Поэтому, false)))
Спустя 8 часов, 55 минут, 12 секунд (21.05.2010 - 17:04) DedMorozzz написал(а):
http://www.govnokod.ru/3281 - хехехе. Увидел знакомый код)))
Спустя 3 часа, 37 минут, 5 секунд (21.05.2010 - 20:41) Raito-kun написал(а):
Цитата (DedMorozzz @ 21.05.2010 - 14:04) |
http://www.govnokod.ru/3281 - хехехе. Увидел знакомый код))) |