|
|
|
Софт для мониторинга сайтов онлайн, проверки их работоспособности, проверка на наличие нужного текста, вхождения на странице.
Имя файла "checklinks2.php".
Код: |
<?
$access = "testpass"; // password generator: http://www.armadaboard.com/viewtopic.php?t=46747&start=0
error_reporting(0);
set_time_limit(5*60);
srand ((double) microtime() * 1000000);
mt_srand ((double) microtime() * 1000000);
function NoDoubleSpaces ($t) { $t = ereg_replace("([ \r\t\n])+", "\\1", $t); return $t; }
function simplegetpage ($url) {
$ch = curl_init($url);
if (!$ch) { return "ERROR: ".curl_error($ch); }
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_TIMEOUT, 5);
curl_setopt($ch, CURLOPT_USERAGENT, "Pony link checker, v-2");
$r = curl_exec($ch);
curl_close($ch);
return "$r";
}
if (isset($HTTP_POST_VARS["links"]) && strlen($HTTP_POST_VARS["links"]) > 7) { $links = $HTTP_POST_VARS["links"]; }
if (empty($links) && isset($_POST["links"]) && strlen($_POST["links"]) > 7) { $links = $_POST["links"]; }
if (isset($HTTP_POST_VARS["access_form"]) && strlen($HTTP_POST_VARS["access_form"]) > 7) { $access_form = $HTTP_POST_VARS["access_form"]; }
if (empty($access_form) && isset($_POST["access_form"]) && strlen($_POST["access_form"]) > 7) { $access_form = $_POST["access_form"]; }
?>
<h1>CHECK LINKS (!<40) :</h1> <br>
<form method="post">
access: <input type="text" name="access_form" value="<? echo $access_form; ?>">
<br><br>
<b>links to check</b> <br>
<textarea cols="100" rows="10" name="links"><? echo $links; ?></textarea>
<br> <br> example: <br>
http://domain1.com,checkstring1 <br>
http://domain2.com,checkstring2 <br>
http://domain3.com,checkstring3 <br>
<br><br> <input name="submit" value="submit" type="submit">
<br>
</form>
<?
if ($access != $access_form) { echo "password incorrect"; exit(); }
if (empty($links)) { echo "links not set"; exit(); }
$links_a = explode("\n", $links);
foreach ($links_a as $tmp) {
$tmp = NoDoubleSpaces($tmp);
list ($link, $checkstring) = explode(",", $tmp);
$link = trim($link); $checkstring = trim($checkstring);
if (strlen($link) > 7 && ereg("^http://", $link)) {
$link_content = simplegetpage($link);
$sizekb = strlen($link_content) / 1024;
list ($sizekb) = explode(".", $sizekb);
if (eregi($checkstring, $link_content)) { $status = "<font color='#00FF00'>OK</font>"; } else { $status = "<font color='#FF0000'>not OK</font>"; }
echo "$link ($checkstring), $status, KB-size: $sizekb <br>\n";
}
}
?> <br><br><br><br><br>
|
Инструкция использования.
Данный файл разместить на вашем хостинге.
Оффтоп: |
Для исключения ошибок при размещение-копирование содержимого тегов "Код", текст с них забирать с цитирования поста. Напротив поста, нажать "Ответить с цитатой".
|
Он достаточно безопасен, без пароля его использовать не получиться.
Пароль установить в самом файле, переменная
, далее этот пароль нужно будет указывать в поле "access:"
Использовать его, заходя на этот линк браузером.
Вносить в поле (links to check) список ссылок. Одна строка, одна ссылка. Напротив каждой ссылке, через запятую, ставить "ключевое слово", наличие которого будет проверено на наличие на странице.
Не рекомендую использовать за раз более чем 15-30 ссылок. Особенно если используете шаред (shared hosting). На ВПС/ВДС тарифах, можете попробовать использовать и большее количество линков, увеличив значение
Код: |
set_time_limit(5*60);
|
, 5*60 (лимит работы 5 минут). И вроде как, не на всех станциях (операционные системы и версии php) учитываются эти лимиты.
Если после правильного заполнения всех полей, выдает ошибку "links not set". Сообщите в этом посте.
Проверено на станции: Linux / Apache/2.0.64 (Unix) / PHP/5.2.9 |
|
|
|
|
|
Исправления.
Чтобы браузер запоминал введенный пароль, можете исправить строчку
Код: |
access: <input type="text" name="access_form" value="<? echo $access_form; ?>">
|
(примерно 48 строка)
на
Код: |
access: <input type="password" name="access_form" value="<? echo $access_form; ?>">
|
Также, для предотвращения индексации этой странице, и не желательного внимания к этому инструменты со стороны иных, можете добавить в самый верх:
Код: |
<html>
<head>
<meta name="robots" content="noindex, nofollow">
</head>
<body>
|
|
|
|
|
|
|
т.е. тут в скрипте нужно постоянно вводить линки
или раз ввсед и жди проблем? |
|
|
|
|
|
Мне не совсем понятен смысл второй строки "или раз ввсед и жди проблем?", чтобы полностью понять выдвинутое требование или вопрос.
Вводить нужно единожды, зайдя на линк. Эти линки, можно сохранить в блокноте где то локально, и вставлять каждый раз, как делаете проверка ресурсов.
Конечно, я могу сделать сохранение последних проверенных линков в файл там же, удаленно. И в следующий раз при заходе на линк, будут в поле ссылки стоять прежние. Но эти строки будут видны и иному, возможно, случайно, зашедшему, или тому человек, которому вы разрешите использовать свой хост и данный скрипт, что по сути будет только мешать. Поэтому такую функцию лучше выполните простым сохранением тех линков, которые собираетесь постоянно проверять, в локальном файле на том же рабочем столе или в нужной папке.
Если кому то такая функция запоминания последних введенных строк нужна, пишите запрос в этом посте, но только более как то рационально, чтобы я мог точно понять, что нужно реализовать, конечно, по возможности я это сделаю. |
|
|
|
|
|
Tomas-R, по твоему запросу.
Добавлена функция сохранения предыдущих введенных строк в локальный файл удаленно на хостинге.
Оффтоп: |
Вопросы не исправности, просьба публиковать в этом топике.
|
Имя файла "checklinks3.php"
Код: |
<html>
<head>
<meta name="robots" content="noindex, nofollow">
</head>
<body>
<?
$access = "testpass"; // password generator: http://www.armadaboard.com/viewtopic.php?t=46747&start=0
$filesave = "checklinks3.txt"; // Rename this file to a different value. Make the file in the same directory in which the file itself. Set the permissions on it as 666.
error_reporting(0);
set_time_limit(5*60);
srand ((double) microtime() * 1000000);
mt_srand ((double) microtime() * 1000000);
function NoDoubleSpaces ($t) { $t = ereg_replace("([ \r\t\n])+", "\\1", $t); return $t; }
function simplegetpage ($url) {
$ch = curl_init($url);
if (!$ch) { return "ERROR: ".curl_error($ch); }
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_TIMEOUT, 5);
curl_setopt($ch, CURLOPT_USERAGENT, "Pony link checker, v-2");
$r = curl_exec($ch);
curl_close($ch);
return "$r";
}
function lock ($fp, $lock_level=LOCK_EX) {@flock($fp, $lock_level);return 0;}
function unlock ($fp, $lock_level=LOCK_UN) {@flock($fp, $lock_level);return 0;}
function phpfput ($file, $text) {if (strlen($file) > 0) {$fp = fopen( $file, "w"); lock($fp); fputs($fp, $text); unlock($fp); fclose($fp);}return 0;}
function phpfget ($file) {$return = "";if (strlen($file) > 0 && file_exists($file)) {$fp = fopen( $file, "r"); lock($fp); while (!feof ($fp)) {$buffer = fgets($fp, 1024);$return .= $buffer;} unlock($fp); fclose($fp);}return $return;}
function phpfadd ($file, $text) {return phpfput($file, phpfget($file) . $text);}
function phpfsize ($file) {if (!file_exists($file)) return 0;return filesize($file);}
if (isset($HTTP_POST_VARS["links"]) && strlen($HTTP_POST_VARS["links"]) > 7) { $links = $HTTP_POST_VARS["links"]; }
if (empty($links) && isset($_POST["links"]) && strlen($_POST["links"]) > 7) { $links = $_POST["links"]; }
if (isset($HTTP_POST_VARS["access_form"]) && strlen($HTTP_POST_VARS["access_form"]) > 7) { $access_form = $HTTP_POST_VARS["access_form"]; }
if (empty($access_form) && isset($_POST["access_form"]) && strlen($_POST["access_form"]) > 7) { $access_form = $_POST["access_form"]; }
if (empty($links) && file_exists($filesave) && phpfsize($filesave)>7) { $links = phpfget($filesave); }
if (isset($HTTP_POST_VARS["make"])) { $make = $HTTP_POST_VARS["make"]; }
if (empty($make) && isset($_POST["make"])) { $make = $_POST["make"]; }
?>
<h1>CHECK LINKS (!<40) :</h1> <br>
<form method="post">
access: <input type="password" name="access_form" value="<? echo $access_form; ?>">
<? if ($access != $access_form) { echo "password incorrect"; echo '<br><br> <input name="submit" value="submit" type="submit"><br></form>'; exit(); } ?>
<br><br>
<b>links to check</b> <br>
<textarea cols="100" rows="10" name="links"><? echo $links; ?></textarea>
<br> <br> example: <br>
http://domain1.com,checkstring1 <br>
http://domain2.com,checkstring2 <br>
http://domain3.com,checkstring3 <br>
<input type="hidden" name="make" value="1">
<br><br> <input name="submit" value="submit" type="submit">
<br>
</form>
<?
if (empty($links)) { echo "links not set"; exit(); }
if (empty($make)) { exit(); }
if (isset($links) && file_exists($filesave)) { phpfput($filesave, $links); }
$links_a = explode("\n", $links);
foreach ($links_a as $tmp) {
$tmp = NoDoubleSpaces($tmp);
list ($link, $checkstring) = explode(",", $tmp);
$link = trim($link); $checkstring = trim($checkstring);
if (strlen($link) > 7 && ereg("^http://", $link)) {
$link_content = simplegetpage($link);
$sizekb = strlen($link_content) / 1024;
list ($sizekb) = explode(".", $sizekb);
if (eregi($checkstring, $link_content)) { $status = "<font color='#00FF00'>OK</font>"; } else { $status = "<font color='#FF0000'>not OK</font>"; }
echo "$link ($checkstring), $status, KB-size: $sizekb <br>\n";
}
}
// prostitute himself ( http://tinyurl.com/prostitute-himself ) / prostituierte selbst / se prostituer
?> <br><br><br><br><br>
|
Оффтоп: |
Для исключения ошибок при размещение-копирование содержимого тегов "Код", текст с них забирать с цитирования поста. Напротив поста, нажать "Ответить с цитатой".
|
Первичные настройки:
$access = "testpass"; // password generator: http://www.armadaboard.com/viewtopic.php?t=46747&start=0
$filesave = "checklinks3.txt"; // Переименуйте этот файл в иное значение. Составьте данный файл в той же директории, в которой и сам файл "checklinks3.php". Установите права доступа на него как 666.
В этой версии, чтобы скрыть ваши линки от иных посетителей, пароль нужно вводить предварительно для доступа к самой форме. При таком варианте, не стоит давать линк, иным лицам, в порядочности которых не уверены.
Поддержка сотрудников Джоли, осуществляется по контактам, указанным в сообщение: http://www.armadaboard.com/viewtopic.php?p=4863938#4863938 |
|
|
|
|
|
|
|