могу ли я каким то образом создавать файлы под тем же пользователем, под которым я захожу чтобы их в последствии удалить?
разве можно зайти на shared hosting ftp под рутом? опять же, почему именно эти файлы не удается удалять?
Ниже приведена моя функция, которая вытягивает изображения к себе на хост. Может код поможет прояснить ситуацию?
/** * Сохраняем все изображения в тексте * * string @text Текст, в котором будет производиться поиск и загрузка изображения * string @link Ссылка на страницу, текст с которой обрабатывается * int @maxSize Максимальный размер сохраненных файлов(в кб) * int @width Ширина изображения. Если width == -1, либо не передан, то будет подставляться исходное значение * int @height Высота изображения. Если height == -1, либо не передан, то будет подставляться исходное значение */ function saveAllImages($text, $link, $maxSize, $width = -1, $height = -1) { static $size = -1; // Куда сохранять $save_to = $_SERVER['DOCUMENT_ROOT'] . '/uploads/'; // Путь относительно сайта $site_path = '/uploads/'; // Переводим кб -> б $maxSize *= 1024; // Проверяем - папка ли? if(!is_dir($save_to)) { echo 'Error: folder <b>', $save_to, '</b> does not exist.';echo "\n"; return $text; } // Проверяем права $mod = substr(sprintf('%o', fileperms($save_to)), -4); if($mod != '0777') { echo 'Error: incorrect permissions (', $mod, ') for folder <b>',$save_to,'</b>';echo "\n"; return $text; } // Получаем размер уже загруженных файлов if($size == -1) { $size = getDirSize($save_to); } $text = preg_replace('#<img\s++([^<>]{0,500})src\s*+=\s*+(?:\'|")([^\'"<>]+)(?:\'|")\s*+([^<>]{0,500})>#is', '<img $1 src="$2" $3>', $text); $text = preg_replace('#<img\s++([^<>]{0,500})src\s*+=\s*+([^\'"<>\s]+)([^<>]{0,500})>#is', '<img $1src="$2"$3>', $text); $tmp_name = ''; // Вырезаем все изображения preg_match_all('#(<img[^><]{6,500}>)#is', $text, $images); foreach($images[1] as $img) { // Проверяем - не превышен ли лимит на размер? if($size > $maxSize) { echo 'Attention: the limited size of images folder is exceeded'; echo "\n"; break; } $good = false; $err_code = 0; do { // Проверяем - надо ли менять width и height? $w = $width; if($width == -1) { $w = ''; if(preg_match('#width\s*+=\s*+(\'|")(\d++)\\1#i', $img, $data)) { $w = $data[2]; } if(preg_match('#width\s*+=\s*+(\d++)#i', $img, $data)) { $w = $data[1]; } } $h = $height; if($height == -1) { $h = ''; if(preg_match('#height\s*+=\s*+(\'|")(\d++)\\1#i', $img, $data)) { $h = $data[2]; } if(preg_match('#height\s*+=\s*+(\d++)#i', $img, $data)) { $h = $data[1]; } } // Получаем ссылку на изображение if(!preg_match('#src="([^"]++)"#is', $img, $data)) { $err_code = 1; break; } $src = createFullLink($link, $data[1]); // Получаем имя хоста + путь к изображению if(!preg_match('#^(?:http://)?((?:[0-9a-z_-]++\.)++[0-9a-z]{2,5})(/.++)$#is', $src, $data)) { $err_code = 2; break; } list(, $host, $get) = $data; $get = str_replace('%2F', '/', rawurlencode($get)); // Сохраняем изображение // Соединяемся if(!($fs = @fsockopen($host, 80, $errno, $errstr, 3))) { $err_code = 4; break; } // Отправляем запрос $request = "GET {$get} HTTP/1.0\r\n"; $request .= "Host: {$host}\r\n"; $request .= "Referer: {$link}\r\n"; $request .= "Accept: text/html, application/xml;q=0.9, application/xhtml+xml, image/png, image/jpeg, image/gif, image/x-xbitmap, */*;q=0.1\r\n"; $request .= "Accept-Language: ru\r\n"; $request .= "Accept-Charset: windows-1251, utf-8;q=0.6, *;q=0.1\r\n"; $request .= "Expires: no-store, no-cache, must-revalidate\r\n"; $request .= "Cache-Control: no-cache\r\n"; $request .= "User-Agent: Opera/9.80 (Windows NT 6.1; U; ru) Presto/2.2.15 Version/10.00\r\n"; $request .= "Connection: close\r\n"; $request .= "\r\n"; if(!fwrite($fs, $request)) { break; } // Генерируем имя временного файла $tmp_name = md5(time() . md5(rand(1024, 65536))); while(file_exists($save_to . $tmp_name)) { $tmp_name = md5(time() . md5(rand(1024, 65536))); } $tmp_name = $save_to . $tmp_name; $blabla = fopen($tmp_name, 'wb'); if(!$blabla) { $err_code = 3; fclose($fs); break; } // Получаем ответ, сохраняя его в файл $readed = 0; $h = true; while(!feof($fs)) { $buffer = fgets($fs, 512); if($h == true) { if(strlen($buffer) < 3) { $h = false; } else if(in_array($buffer, array("\r", "\n", "\r\n", "\n\r", ''))) { $h = false; } continue; } if(!fputs($blabla, $buffer)) { $err_code = 5; break; } $readed += strlen($buffer); if($readed > 4194304) { $err_code = 6; break; } } fclose($blabla); fclose($fs); unset($blabla); if($err_code > 0) { break; } // Проверяем - сохранилась ли? if(filesize($tmp_name) == 0) { $err_code = 7; break; } // Пытаемся определить тип изображения $type = ''; if(!($res = @getimagesize($tmp_name))) { $err_code = 8; break; } switch($res[2]) { case 1: { $type = 'gif'; break; } case 2: { $type = 'jpg'; break; } case 3: { $type = 'png'; break; } } if($type == '') { $err_code = 9; break; } // Получаем путь к изображению $fileDir = substr(md5($host), 0, 10) . '/'; if(!is_dir($save_to . $fileDir)) { if(!mkdir($save_to . $fileDir)) { $err_code = 10; break; } } $fileName = substr(md5($get), 0, 10) . '.' . $type; if(file_exists($save_to . $fileDir . $fileName)) { $size -= filesize($save_to . $fileDir . $fileName); } if(!@copy($tmp_name, $save_to . $fileDir . $fileName)) { $err_code = 11; $size += filesize($save_to . $fileDir . $fileName); break; } $size += filesize($save_to . $fileDir . $fileName); if($size > $maxSize) { $err_code = 12; unlink($save_to . $fileDir . $fileName); break; } // Генерируем новый код для изображения $new_img = '<img src="'.$site_path . $fileDir . $fileName . '"'; if($w != '') { $new_img .= ' width="'.$w.'"'; } if($h != '') { $new_img .= ' height="'.$h.'"'; } $new_img .= '>'; $text = str_replace($img, $new_img, $text); $good = true; } while(false); if($tmp_name != '' && file_exists($tmp_name)) { unlink($tmp_name); } // echo $img, ' -> ', ($good ? 'ok' : 'err'), " err_code: {$err_code}\n"; // Если сохранение не прошло успешно - удаляем изображение if(!$good) { $text = str_replace($img, '', $text); } if($size > $maxSize) { echo 'Attention: the limited size of images folder is exceeded'; echo "\n"; break; } } return $text; }
Я обычно в Word-е ручками их генерю. Ну, правда, так значительно большего эффекта можно добиться
Я наблюдал по большей части обратную ситуацию. Как раз Яндекс получше определяет качество ссылок (особенно в отношении использования сапы). Еще вопрос - вы проверяли какие ссылки яндекс и гугл действительно проиндексировали?
По моим наблюдениям, больше учитывается период нахождения домена (или поддомена) в индексе поисковика (то есть даже если домен старый, но ПС о нем только не знали, то возраст вряд ли будет сильно влиять).
Просмотреть историю нахождения в индексе вряд ли возможно... Если вам нужна просто история изменения контента, то в некоторых случаях может помочь WebArchive
на базе своего опыта, я попытался описать данный вопрос в этой статье. Что касается суммы, то тут все очень неопределенно (например, одни и те же по качеству и весомости ссылки можно купить в разных местах с разницей по стоимости в несколько раз). Сумму уже трудно определить без наличия опыта в СЕО.
да, тогда будет явный недочет, если сайт балуется сквозняками
как вариант можно определить общее количество исходящих вот этим сервисом xseo.in/links , а затем разделить на общее количество страниц в сайтмапе (думаю, сами знаете как его создать).
Если нужна большая точность, я бы на вашем месте сделал (или заказал) отдельный скриптик под эту задачу.
извините за оффтоп, но в этом разделе форума, наверное, многие разбираются в тематике поиска работы и трудоустройства 🚬
Какое именно дополнение? Напишите в личку подробности.