ProfiPHPProfiPHP
Категория: Поддержка OUR-CMS

Поиск битых файловых ссылок на сайте OUR-CMS

С помощью поиска битых файловых ссылок на сайте можно проверить наличие архивов в OUR-CMS.

Допустим, если Вы удалите с корня сайта картинку, тогда сразу визуально увидите изменения на странице. Но если вы удалите файл архива, на который ссылается информация, то очень сложно обнаружить ошибку. Пользователь не сможет скачать нужный ему файл, и, возможно, просто уйдет со страницы.

Данный скрипт являет собой контроль на правильностью ссылок на архивы. Осуществляет поиск всех файловых ссылок на статических страницах и записях блогов, далее проверяет существования файла, и если файла физически не существует, выдает информацию об этом.

Для установки достаточно скопировать содержимое архива Error_link.php в корень сайта и запустить скрипт:
http://yousite/error_link.php
Содержимое файла:
<?php
$result = '';
$dir = glob( $_SERVER['DOCUMENT_ROOT'].'/content/infopagedb/*.dat' );
foreach ( $dir as $thisName )
{
@chmod( $thisName, 0644 );
$array_filedb = file( $thisName );
$row = unserialize( $array_filedb[0] );
$count = count( $array_filedb );
for ( $i = 1; $i < $count; $i++ )
{
if ( trim( $array_filedb[$i] ) != '' )
{
$messold = unserialize( $array_filedb[$i] );
preg_match_all( '#<a [^>]*href="(.*)"[^>]*>#Ui', str_replace( array( "|slash|", "|quotes|" ), array( "\\", "\"" ), $messold['extra'] ), $matches );
foreach ( $matches[1] as $src )
{
if ( in_array( pathinfo( $src, PATHINFO_EXTENSION ), array( 'zip', 'rar' ) ) && ! file_exists( $_SERVER['DOCUMENT_ROOT'].parse_url( $src, PHP_URL_PATH ) ) ) {
$plink = strtolower( trim( pathinfo( $thisName, PATHINFO_FILENAME ) ) );
$result .= '
<tr>
<td>'.( $row['url'] == '1' ? '<a target="_blank" href="/'.$plink.'/'.( $i ).'-'.$messold['link'].'.html">'.$messold['head'].'</a>' : '<a target="_blank" href="/'.$plink.'-'.( $i ).'.html">'.$messold['head'].'</a>' ).'</td>
<td>'.$src.'</td>
</tr>';
}
}
}
}
}
$dir = glob( $_SERVER['DOCUMENT_ROOT'].'/content/pagedb/*.dat' );
foreach ( $dir as $thisName )
{
if ( $thisName == $_SERVER['DOCUMENT_ROOT'].'/content/pagedb/404.dat' ) continue;
@chmod( $thisName, 0644 );
$fopendb = fopen( $thisName, 'r' );
flock( $fopendb, LOCK_SH );
$data = fread( $fopendb, filesize( $thisName ) );
flock( $fopendb, LOCK_UN );
fclose( $fopendb );
$content = explode( '<!-- OUR_content -->', $data );
preg_match_all( '#<a [^>]*href="(.*)"[^>]*>#Ui', str_replace( array( "|slash|", "|quotes|" ), array( "\\", "\"" ), $content[1] ), $matches );
foreach ( $matches[1] as $src )
{
if ( in_array( pathinfo( $src, PATHINFO_EXTENSION ), array( 'zip', 'rar' ) ) && ! file_exists( $_SERVER['DOCUMENT_ROOT'].parse_url( $src, PHP_URL_PATH ) ) ) {
$title = explode( '<!-- OUR_title -->', $data );
$plink = strtolower( trim( pathinfo( $thisName, PATHINFO_FILENAME ) ) );
$result .= '
<tr>
<td><a target="_blank" href="/'.$plink.'.html">'.$title[1].'</a></td>
<td>'.$src.'</td>
</tr>';
}
}
}
echo '
<h1>Поиск битых файловых ссылок на сайте</h1>';
if ( empty( $result ) ) {
echo 'Нет битых ссылок на сайте!';
}
else {
echo '
<table border="1">
<tr>
<td><b>Страница:</b></td>
<td><b>Не найден файл:</b></td>
</tr>
'.$result.'
</table>';
}
?>

Добавить комментарий

Имя:
Текст комментария: