Новичок
Профиль
Группа: Участник
Сообщений: 9
Регистрация: 8.7.2008
Репутация: нет Всего: нет
|
Здравствуйте, господа программисты. Я написал новостной граббер. Суть его работы такова, он авторизуется на сайте, считывает заголовки новостей, затем считывает сами новости, затем все новые новости отправляет на указанный адрес. Но вот в чём собственно проблема, под Denwer-ом нормально новости отправляются, под FreeBSD приходят пустые новости. Ссылки получаются нормальные. Вот исходный код: | Код | <? $EMail = "[email protected]"; $MaxReload = 100;
//********************************* rosan.su *********************************** $rLogin = "qwerty"; $rPassword = "12345"; $rHost = "http://www.rosan.su/dealers/"; $rAuthString = "login=$rLogin&password=$rPassword"; $rAuthPage = "http://www.rosan.su/dealers/auth.php"; $rParseString = "#<a href='(.+?)' class=\"linkb\">(.+?)</a>.*?<span class=\"text\">(.+?)</span>#is"; $rLinkIndex = 1; $rFileName = "rosan.dat"; //******************************************************************************
//******************************* awm-trade.ru ********************************* $aLogin = "qwerty"; $aPassword = "12345"; $aHost = "http://www.awm-trade.ru"; $aAuthString = "login=$aLogin&password=$aPassword&auth=войти"; $aAuthPage = "http://awm-trade.ru/index.php5?module=users&class=auth"; $aParseString = "#<a.*?class=\"newsDealersDate\">(.+?)</a>.*?<a href=\"(.+?)\" class=\"headerDealersNews\">(.+?)</a>#is"; $aLinkIndex = 2; $aFileName = "awm-trade.dat"; //******************************************************************************
function EmptyMass($Mass) { for($i=1;$i<=3;$i++) foreach($Mass[$i] as $key=> $value) if($Mass[$i][$key]!="") return 1; return 0; }
function LoadHeadingsNews($AuthPage,$AuthString) { $SessID = str_replace('\\', '/', dirname(__FILE__)) . 'sessid.txt'; $ch = curl_init(); curl_setopt($ch, CURLOPT_URL,$AuthPage); curl_setopt($ch, CURLOPT_FAILONERROR, 1); curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1); curl_setopt($ch, CURLOPT_RETURNTRANSFER,1); curl_setopt($ch, CURLOPT_TIMEOUT, 3); curl_setopt($ch, CURLOPT_POST, 1); if($AuthString) { curl_setopt($ch, CURLOPT_POSTFIELDS, $AuthString); echo "> Загружаю старницу загаловков новостей;<br>"; } else echo "> Загружаю старницу новостей;<br>"; curl_setopt($ch, CURLOPT_COOKIEFILE, $SessID); curl_setopt($ch, CURLOPT_COOKIEJAR, $SessID); curl_setopt($ch, CURLOPT_NOBODY, 0); curl_setopt($ch, CURLOPT_HEADER, 0); $NewsPage = curl_exec($ch); curl_close($ch);
return $NewsPage; }
function LoadNews($Host,$AuthPage,$AuthString,$ParseString,$LinkIndex,$FileName) { global $MaxReload, $Headers, $EMail; preg_match_all($ParseString,LoadHeadingsNews($AuthPage,$AuthString),$OuterMass); unset($OuterMass[0]); echo "<b>> Выбираю данные со станицы заголовков новостей в массив;<br></b>";
if(!EmptyMass($OuterMass)) { echo "<b>> Данные не обнаружены, перезагружаю страницу заголовков новостей;<br><br></b>"; if($MaxReload) { sleep(1); $MaxReload--; LoadNews($Host,$AuthPage,$AuthString,$ParseString,$LinkIndex,$FileName); } return; }
$FileDisc = fopen($FileName, "r") or die("<b>> Не могу найти файл $FileName;<br></b>"); if(filesize($FileName)) { $OldNews = fread($FileDisc, filesize($FileName)); echo "<b>> Считал данные из временного файла;<br></b>"; } fclose($FileDisc);
echo "<b>> Ищу последнюю отправленную новость;<br></b>";
for($key=0;$key<count($OuterMass[$LinkIndex]);$key++) if(substr_count($OldNews, $OuterMass[$LinkIndex][$key])) break; if($key) { echo "<b>> Записываю текущую последнюю новость;<br></b>"; $FileDisc = fopen($FileName, "w") or die("<b>> Не могу найти файл $FileName;<br></b>"); fputs($FileDisc,$OuterMass[$LinkIndex][0]); fclose($FileDisc);
} else echo "<b>> Новых новостей не найдено;<br></b>";
$Headers = "Content-type: text/html; charset=windows-1251 \r\nFrom: News from $Host \r\nBcc: $email \r\n";
if($key) { echo "<b>> Отправляю письма с новостями;<br></b>"; while($key--) { $Mail = LoadHeadingsNews($Host."".$OuterMass[$LinkIndex][$key],0); $Mail = str_replace("a href=\"", "a href=\"$Host", $Mail); $Mail = str_replace("a href='", "a href='$Host", $Mail); mail($EMail,"Новости с $Host",$Mail,$Headers); } } echo "<b>> Загрузка новостей с $Host, завершена;</b><br><br>"; }
LoadNews($rHost,$rAuthPage,$rAuthString,$rParseString,$rLinkIndex,$rFileName); LoadNews($aHost,$aAuthPage,$aAuthString,$aParseString,$aLinkIndex,$aFileName); ?>
|
Буду очень благодарен за Ваши советы и предложения! Борюсь с этим уже два дня, пока без результатно
|