Собственно, недавно писал скрипт для массовой проверки PR, в действии его можно посмотреть тут — массовая проверка PR. Но в один прекрасный момент он у меня перестал работать, так что смотреть там собственно и нечего (upd: уже сделал, можно проверить работоспособность скрипта) Ну и, теперь мы напишем простенький, но быстрый скрипт массовой проверки PR страниц.
Скрипт массовой проверки PR на php
Приступим. Для начала определимся как и что у нас будет, а будет у нас 2 файла: lala.php и getpr.php
Скрипт в lala.php будет непосредственно взаимодействовать с пользователем — показывать результат проверки и т.п., то есть там основная начинка. Скрипт getpr.php как можно судить из названия будет обрабатывать данные которые идут с lala.php, то есть его задача это получить значение PR той или иной страницы, которая пришла от lala.php.
Всё это дело мы реализуем с помочью библы jQuery. Теперь перейдём непосредственно к рассмотрению/написаю кода. Для начала определимся с пользовательским интерфейсом, состоять он будет из текстового поля (textarea), кнопки которая будет приводить всё в действие (вызов функции lala, которая будет отправлять урлы в файл getpr.php), ну и таблица где будут отображаться данные.
Файл lala.php:
<textarea id='urls' cols='80' rows='15' wrap='off'> http://wooden-stool.ru http://google.ru </textarea><br/> <input type="button" onclick=lala() value="Проверить"><br><br> <table id="pr" /></table>
Теперь сама функция lala:
<script> function lala() { // производим очистку нашего текстового поля document.getElementById('pr').innerHTML = ""; // помещаем данные из текстареа в переменную urllist urllist=document.getElementById('urls').value; arr=urllist.split('\n'); // counturl = arr.length -1; // простенький цикл, 1 повторение - 1 отработанная страница for(var i=0;i<=counturl;i++){ if (arr[i].length<5) continue; // если кол-во знаков меньше 5 то, переходим к другой странице var url = trim(arr[i]); // удаляем переносы, пробелы (функция trim чуть ниже) // Собственно, отправляем данные скрипту getpr.php $.ajax({ async: "false", data: { url: url }, type: "GET", dataType: "text", url: "getpr.php", success: function(xml) { $(xml).find("prdata").each( function () { // помещаем значение pr в переменную pr var pr = $(this).find('pr').text(); // помещаем url страницы в переменную url var url = $(this).find('urlxml').text(); url = url.slice(0, 60) + '...'; // обрезаем длинные урлы до 60 знаков // добавляем полученные данные (пр страницы и собственно урл страницы) в таблицу 'pr' jQuery('<tr><td>'+pr+'</td><td>'+url+'<td></tr>').appendTo('#pr'); });}});} //функция trim function trim(str) { var newstr=str.replace(/\ \;/g,"\xa0"); newstr=newstr.replace(/^\s+|\s+$/g,""); return newstr; }} </script>
Не забудьте подключить jQuery. Если что не понятно — спрашивайте.
Теперь следующая простыня — файл getpr.php, скрипт будет определять PR страниц сайта:
<?PHP $url = $_GET['url']; // принимаем на url // создаём XML куда пихаем пр и адрес текущей, проверяемой, страницы $dom = new DomDocument('1.0'); $getpr = $dom->appendChild($dom->createElement('getpr')); $prdata = $getpr->appendChild($dom->createElement('prdata')); $pr = $prdata->appendChild($dom->createElement('pr')); $urlxml = $prdata->appendChild($dom->createElement('urlxml')); $pr->appendChild($dom->createTextNode(getpagerank($url))); $urlxml->appendChild($dom->createTextNode($url)); echo $dom->saveXML(); // Функции для определения PR function StrToNum($Str, $Check, $Magic) { $Int32Unit = 4294967296; $length = strlen($Str); for ($i = 0; $i < $length; $i++) { $Check *= $Magic; if ($Check >= $Int32Unit) { $Check = ($Check - $Int32Unit * (int) ($Check / $Int32Unit)); $Check = ($Check < -2147483648) ? ($Check + $Int32Unit) : $Check; } $Check += ord($Str{$i}); } return $Check; } function HashURL($String) { $Check1 = StrToNum($String, 0x1505, 0x21); $Check2 = StrToNum($String, 0, 0x1003F); $Check1 >>= 2; $Check1 = (($Check1 >> 4) & 0x3FFFFC0 ) | ($Check1 & 0x3F); $Check1 = (($Check1 >> 4) & 0x3FFC00 ) | ($Check1 & 0x3FF); $Check1 = (($Check1 >> 4) & 0x3C000 ) | ($Check1 & 0x3FFF); $T1 = (((($Check1 & 0x3C0) << 4) | ($Check1 & 0x3C)) <<2 ) | ($Check2 & 0xF0F ); $T2 = (((($Check1 & 0xFFFFC000) << 4) | ($Check1 & 0x3C00)) << 0xA) | ($Check2 & 0xF0F0000 ); return ($T1 | $T2); } function CheckHash($Hashnum) { $CheckByte = 0; $Flag = 0; $HashStr = sprintf('%u', $Hashnum) ; $length = strlen($HashStr); for ($i = $length - 1; $i >= 0; $i --) { $Re = $HashStr{$i}; if (1 === ($Flag % 2)) { $Re += $Re; $Re = (int)($Re / 10) + ($Re % 10); } $CheckByte += $Re; $Flag ++; } $CheckByte %= 10; if (0 !== $CheckByte) { $CheckByte = 10 - $CheckByte; if (1 === ($Flag % 2) ) { if (1 === ($CheckByte % 2)) { $CheckByte += 9; } $CheckByte >>= 1; } } return '7'.$CheckByte.$HashStr; } function getpagerank($url) { $fp = fsockopen("toolbarqueries.google.com", 80, $errno, $errstr, 30); if (!$fp) { } else { $out = "GET /tbr?client=navclient-auto&ch=".CheckHash(HashURL($url)) ."&features=Rank&q=info:".$url."&num=100&filter=0 HTTP/1.1\r\n"; $out .= "Host: toolbarqueries.google.com\r\n"; $out .= "User-Agent: Mozilla/4.0 (compatible; GoogleToolbar 2.0.114-big; Windows XP 5.1)\r\n"; $out .= "Connection: Close\r\n\r\n"; fwrite($fp, $out); while (!feof($fp)) { $data = fgets($fp, 128); $pos = strpos($data, "Rank_"); if($pos === false) { } else { $pagerank = substr($data, $pos + 9); } } fclose($fp); } $pagerank = (strlen($pagerank) > 0) ? $pagerank : -1; $pagerank = intval($pagerank); if ($pagerank == -1) { $pagerank = 'n/a'; } $dataz = $pagerank; $pagerank = 0; return $dataz; } ?>
Вот в принципе и всё, данный скрипт без проблем работает на моём сервисе и по сей день без проблем, правда сейчас он куда более проопгрейденный, так сказать
К слову говоря, если вас беспокоит здоровье вашего новорождённого малыша и вы не уверены в своих силах, что сможете оказать, например, первую медицинскую помощь или же просто вам нужна помощь то, советую обратится к няне, вы можете узнать какая должна быть Лучшая няня к грудничку в Москве. Ведь с грудниками нужно обращаться осторожно и знать о них очень многое, в этом вам и поможет няня. На этом у меня всё, удачи.