EOMY.NET
Хостинг EOMY.NET: Форум поддержки
 
 FAQFAQ   ПоискПоиск   ПользователиПользователи   ГруппыГруппы   РегистрацияРегистрация 
 ПрофильПрофиль   Войти и проверить личные сообщенияВойти и проверить личные сообщения   ВходВход 
RSS Feed  

Полезные скрипты на php (только скрипты)
На страницу Пред.  1, 2, 3, 4  След.
 
Начать новую тему   Ответить на тему    Список форумов EOMY.NET -> Программирование для WEB
Полезные скрипты на php (только скрипты)
Автор Сообщение
Веденин
Красные глаза
Красные глаза


Зарегистрирован: 17.05.2007
Сообщения: 2067
Откуда: Самара
11926 Монеты

СообщениеДобавлено: Ср, 08 Окт, 2008 06:05    Заголовок сообщения: Ответить с цитатой

Название скрипта: Скрипт возращающий запрос по которому был переход на ваш сайта со всех известных поисковиков, поисковик и страницу выдачи на которой есть ваш запрос. (подерживаются поисковики yandex, google, rambler, yahoo.com, go.mail.ru, aport.ru, nigma.ru, search.com, live.com, msn.com, aol.com, нужны будут другие пишите)

Описание скрипта: Вернет через символ | следующие параметры: (например так google|термины бальных танцев|21|20)
1) Поисковая система с которой пришли на ваш сайт
2) Запрос по которому пришли на ваш сайт
3) Страница выдачи (в зависимости от поисковика либо порядковый номер первого результата на странице, т.е. если выдается по 10 результатов на странице, то 41 означает 4 страницу выдачи).
4) Кол-во результатов на странице (если значение по умолчание не менялось будет пустым)

Этот запрос очень удобно использовать для:
а) ведения статистики
б) выдачи полезной информации пользователю (например, при определенном запросе перемещать на нужную страницы или выводить подсказку)
в) показывать в поисковой системе сайта запрос пользователя
u) и т.д.

Вызов скрипта: без параметров, например так echo getKeyWords();

Скрипт:
Код:

# Возвращает запросы со всех поисковиков
function getKeyWords(){
  $q = $_SERVER['HTTP_REFERER'];
  if(strlen($q)>0){
    if(strpos($q,'yandex')>0)
      return getKeyWord($q,'yandex.ru','text','p','numdoc');
    else if(strpos($q,'google')>0)
      return getKeyWord($q,'google','q','start','num');
    else if(strpos($q,'rambler.ru')>0)
      return getKeyWord($q,'rambler.ru','query','page','');
    else if(strpos($q,'yahoo.com')>0)
      return getKeyWord($q,'yahoo.com','p','b','n');
    else if(strpos($q,'go.mail.ru')>0)
      return getKeyWord($q,'go.mail.ru','q','sf','');
    else if(strpos($q,'aport.ru')>0)
      return getKeyWord($q,'aport.ru','r','p','');
    else if(strpos($q,'nigma.ru')>0)
      return getKeyWord($q,'nigma.ru','s','startpos','');
    else if(strpos($q,'search.com')>0)
      return getKeyWord($q,'search.com','q','nav','');
    else if(strpos($q,'live.com')>0)
      return getKeyWord($q,'live.com','q','first','');
    else if(strpos($q,'search.msn.com')>0)
      return getKeyWord($q,'search.msn.com','q','first','');
    else if(strpos($q,'search.aol.com')>0)
      return getKeyWord($q,'search.aol.com','query','page','');
    else
      return '';
  }
}

# Возвращает запрос
function getKeyWord($q,$find,$word,$page,$num){
       $tmp = getParams($q,$word);
       if(strlen($tmp)>0){
           return $find.'|'.$tmp.'|'.getParams($q,$page).'|'.getParams($q,$num);
       }
       return '';
}

# Возвращает параметр из HTTP_REFERER
function getParams($q,$prm){
       if(strlen($prm) == 0) return '';
       $i = strpos($q,'&'.trim($prm).'=');
       if($i == 0) $i = strpos($q,'?'.trim($prm).'=');       
       if($i > 0){
         $tmp = substr($q,$i+strlen($prm)+2);
         if(strpos($tmp,'&')>0) $tmp = substr($tmp,0,strpos($tmp,'&'));
         $tmp = getStringUtf(urldecode($tmp));       
         return $tmp;         
       }
       return '';
}

Внимание: В код скрипта надо добавить все функции из скрипта Преобразование из Utf 8 в ANSI русских символов
_________________
Написание конвекторов, парсеров, интеграции нескольких сайтов (в личку)

Тематические поисковые системы Рунета: Танцевальная, программиста, поиск книг
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail Посетить сайт автора
Веденин
Красные глаза
Красные глаза


Зарегистрирован: 17.05.2007
Сообщения: 2067
Откуда: Самара
11926 Монеты

СообщениеДобавлено: Сб, 06 Дек, 2008 08:11    Заголовок сообщения: Ответить с цитатой

Название скрипта: Получение таблицы курсов валют на указанную дату
Пример вызова функции для получения курсов на 4 ноября 2008: echo '<table border="1">'.getCur('04','11','2008').'</table>

Код:
echo '<table border="1">'.getCur('04','11','2008').'</table>';

function getCur($day,$month,$year){
    $tmp = file_get_contents("http://www.cbr.ru/currency_Base/daily.aspx?C_month=$month&C_year=$year&date_req=$day%2F$month%2F$year");
    return GetText('<table border="0" cellpadding="2" cellspacing="1" width="100%">','</table>',$tmp);
}
# Получение части текста
function GetText($findfirst,$findsecond,$text){
   if(strlen($findfirst)==0 || strlen($text)==0) return '';
   $i1 = strpos(' '.$text,$findfirst);
   if( $i1 == 0 ) return '';
   $text1 = substr($text,$i1+strlen($findfirst)-1);
   $i = strpos(' '.$text1,$findsecond);
   if( $i == 0 || strlen($findsecond)==0) return $text1;
   $text1 = substr($text1,0,$i-1);
   $text  = substr($text,$i1+$i+strlen($findsecond)+strlen($findfirst)-2);
   return $text1;
}

_________________
Написание конвекторов, парсеров, интеграции нескольких сайтов (в личку)

Тематические поисковые системы Рунета: Танцевальная, программиста, поиск книг
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail Посетить сайт автора
Веденин
Красные глаза
Красные глаза


Зарегистрирован: 17.05.2007
Сообщения: 2067
Откуда: Самара
11926 Монеты

СообщениеДобавлено: Пн, 08 Дек, 2008 20:02    Заголовок сообщения: Ответить с цитатой

Название: Вывода данных из таблиц дерево любой степени иерархии
Комментарий: Это пример показывает как работать выводить на экран данные любой степени иерархии из базы MySQl, пример условен, его можно легко модифицировать для любых иерархических запросов.
У нас есть две таблицы:
1) pref_category(id_категории, имя_категории)
2) pref_category_ref(id_категории_родителя,id_категории)
Нам надо вывести строки вида
Код:

категория 1
 категория 1.1
 категория 1.2
  категория 1.2.1
    ...
категория 2
...

Кол-во иерархий может быть любым (т.е. может быть категория 1.2.1.4.2.1)
Таблицы мы получили обычными запросами и записали в массивы $pref_category (ключ - id_категории, значение - имя_категории) и $pref_category_ref (ключ - id_категории_родителя, значение - id_категории):
Код:
$pref_category[id]=name
$pref_category_ref[id]=parent_id


Скрипт:
Код:
getTree(0)

function getTree($parent_id){
   global $pref_category,$pref_category_ref;
   for($i=0;$i<count($pref_category_ref);$i++)
      if($pref_category_ref[$i]==$parent_id){
           echo $pref_category[$i].'<br>';
           getTree($i)
      }         
}


Модификации: Возращает просто имена строчек по одному на каждой строке, но легко можно модифицировать, например вместо echo использовать запись в глобальную переменную, вводить свои теги в echo, передавать в функцию getTree уровень иерархии и т.д.
_________________
Написание конвекторов, парсеров, интеграции нескольких сайтов (в личку)

Тематические поисковые системы Рунета: Танцевальная, программиста, поиск книг
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail Посетить сайт автора
Веденин
Красные глаза
Красные глаза


Зарегистрирован: 17.05.2007
Сообщения: 2067
Откуда: Самара
11926 Монеты

СообщениеДобавлено: Чт, 09 Апр, 2009 15:10    Заголовок сообщения: Ответить с цитатой

Название:
Скрипт, формирующий файл - превью (jpg) и сохраняющий в указанном месте.(превью имеет фиксированую высоту)
Комментарий:
Очень часто при создании своего движка сайта (CMS) требуется решить проблему : есть куча фоток нужно показать их уменьшиные превью, выровненое по ширине или высоте. Эта функция получает любое допустимое изображение (с сервера или любого внешнего url), уменьшает его пропорцинально (при этом высота задается, а ширина вычисляется), полученное превью преобразуется в jpg, сохраняется в указанном каталоге сервера под случайным именем (например, 3456896.jpg) и полное имя превью возвращается функцией и его можно использовать для отображения.
Если по каким-то причинам создать превью невозможно функция вернет пустую строку.
Вызов:
$photo_path -путь к файлу на сервере или в инете.
$preview_path - где сохранять превью
$height - высота превью
Возращает:
Имя файла созданого файла превью с полным путем,например /preview/3456896.jpg) или пустую строку при ошибках создания превью.
Скрипт:
Код:

function createPreview($photo_path,$preview_path='preview/',$height= 100)
{
  if(empty($photo_path)) return '';
  $size = @getimagesize($photo_path);
  $name = '';
  if($size){
       $format = strtolower(substr($size['mime'], strpos($size['mime'], '/')+1));
       $func = "imagecreatefrom" . $format;
       if (!function_exists($func)) return false;
       $photo = @$func($photo_path);     
       $width = round($size[0]/$size[1]*$height);
       $image = @imagecreatetruecolor($width,$height);
       if($photo & $image){
            imagecopyresampled(
          $image,
        $photo, 
         0,0,0,0,     
         $width,  $height,     
         $size[0], $size[1]
            );
            $name = $preview_path . rand (0, 9999999).'.jpg';
            imagejpeg($image, $name, 100);
            imagedestroy($image); 
            imagedestroy($photo);
      }
  }
  return $name;
}

Модификации :
Легко переделать под то чтобы ширина была фиксированой, а высота пропорцинальной.
Вместо
function createPreview($photo_path,$preview_path='preview/',$height= 100)
пишем
createPreview($photo_path,$preview_path='preview/',$width= 100)
вместо
$width = round($size[0]/$size[1]*$height);
пишем
$height = round($size[1]/$size[0]*$width );
_________________
Написание конвекторов, парсеров, интеграции нескольких сайтов (в личку)

Тематические поисковые системы Рунета: Танцевальная, программиста, поиск книг
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail Посетить сайт автора
Веденин
Красные глаза
Красные глаза


Зарегистрирован: 17.05.2007
Сообщения: 2067
Откуда: Самара
11926 Монеты

СообщениеДобавлено: Чт, 09 Апр, 2009 18:18    Заголовок сообщения: Ответить с цитатой

Название:
Функция реализующая аналог file_get_contents, но с использованием curl и его расширенными возможностями. Вроде отображения заголовка, отправки кук и эмуляция форм и т.п.
Параметры :
$url - любой допустимый url
$cookie - строка с кукой для этого сайта
$post_data - любые переменные формы отсылаемой по методу POST
Возвращает:
Строку содержащие данные по этому url + все заголовки и все куки отправляемые сервером.
Комментарии:
С помощью этого метода можно парсить страницы закрытые авторизацией по методу Post или куками.
Пример:
1) Пример получение страницы с авторизацией с помощью куки (если вы её знаете):
echo my_file_get_contents(http://forum21.2bb.ru','mybb_ru=Nzc0fDW8YWX1xmI2NmFmMWQwYzA1OBU5MBM2WmVkNTYzMWJmZzMyYzQ3MThmMA ');
2) Пример получение страницы с авторизацией с помощью метода post (переменные и url получены после анализа формы входа на форум):
echo my_file_get_contents(http://forum21.2bb.ru/login.php?action=in','','req_username=vedenin&req_password=ggdkddftdv&form_sent=1&redirect_url=index.php');
Функции вернет не только страницу на которую мы заходим, но и все куки переданные нам сервером и уже дальше мы сможем авторизироватся по первому варианту передавая куки.

Скрипт:
Код:

function my_file_get_contents($url,$cookie='',$post_data='')
{
     ob_start();
     $ch = curl_init();
     curl_setopt ($ch, CURLOPT_URL, $url);
     curl_setopt ($ch, CURLOPT_HEADER, 1);# возвращать заголовок ответа сервера
     curl_setopt ($ch, CURLOPT_FOLLOWLOCATION,1);
     curl_setopt ($ch, CURLOPT_TIMEOUT,30);
     curl_setopt ($ch, CURLOPT_REFERER,"http://vedenin.ru");#referer
     curl_setopt ($ch, CURLOPT_USERAGENT,"vedenin.ru"); #user-agent
     if(!empty($cookie)) curl_setopt ($ch, CURLOPT_COOKIE,$cookie);
   if(!empty($post_data)) curl_setopt($ch, CURLOPT_POSTFIELDS, $post_data);
     curl_exec ($ch);
     $str = ob_get_contents();
     curl_close ($ch);
     ob_end_clean();
     return $str;
}

_________________
Написание конвекторов, парсеров, интеграции нескольких сайтов (в личку)

Тематические поисковые системы Рунета: Танцевальная, программиста, поиск книг
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail Посетить сайт автора
Веденин
Красные глаза
Красные глаза


Зарегистрирован: 17.05.2007
Сообщения: 2067
Откуда: Самара
11926 Монеты

СообщениеДобавлено: Пт, 22 Май, 2009 13:53    Заголовок сообщения: Ответить с цитатой

Название:
Скрипт выводящий все файлы Flash видео из определенного каталога,с опоисанием и возможностью задания картинку, которая будет показыватся до воспроизведения видео.

Параметры :
$dirname - папка где лежит видео
$width - ширина видео
$height - высота видео

Описание :
Скрипт находит все файлы вида ***.flv и отображает как Flash вмдео на сайте, так же если есть файл jpg и txt с тем же именем и в том же каталоге что ***.flv, то он их использует как картинку до отображения видео и описание находящие под Flash роликом.
Кроме скрипта в ту же папку, что скрипт надо положить файл player.swf (его можно взять здесь). Легко можно скрипт настроить и на другой плеер Flash видео.

Пример вызова :
echo WorkDir("video",540,432);


Скрипт :
Код:

#Функция обработки директории
function WorkDir($dirname,$width,$height) {
$str = "";
  if ($dir = @opendir($dirname)) {
     while (($file = @readdir($dir)) !== false) {
         $str .= getFlashVideo($dirname.'/',$file,$width,$height);
     } 
     closedir($dir);
  }
return $str;
}

#Функция обработки видео
function getFlashVideo($dir,$file,$width,$height) {
$str = "";
  if(strpos($file,".flv")>0) {
          $img = str_replace('.flv','.jpg', $file);
          $txt = $dir . str_replace('.flv','.txt', $file);
          $comment = @file_get_contents($txt);
          $str .= '<object id="player" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" name="player" width="'.
             $width.'" height="'.$height.'">"';
     $str .= '<param name="movie" value="player.swf" />'."\n";
     $str .= '<param name="allowfullscreen" value="true" />'."\n";
     $str .= '<param name="allowscriptaccess" value="always" />'."\n";
          $str .= '<param name="flashvars" value="file='.$dir.
             $file . '&image='.$dir.$img.'" />'."\n";
          $str .= '</object> <br />'.$comment.'<br />&nbsp;<br />&nbsp;'."\n";               
 }       
return $str;       
}

_________________
Написание конвекторов, парсеров, интеграции нескольких сайтов (в личку)

Тематические поисковые системы Рунета: Танцевальная, программиста, поиск книг
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail Посетить сайт автора
Веденин
Красные глаза
Красные глаза


Зарегистрирован: 17.05.2007
Сообщения: 2067
Откуда: Самара
11926 Монеты

СообщениеДобавлено: Пт, 22 Май, 2009 14:23    Заголовок сообщения: Ответить с цитатой

Название:
Скрипт выводящий все файлы Flash видео, описанные в определенном файл (в порядке указанном в этом файле).

Параметры :
$dirname - папка где лежит видео
$orders - данные полученные из файла с порядком и названиями видео файлов
$width - ширина видео
$height - высота видео

Описание :
Смотри предыдущий пост, в файле $orders нужно перечислить через пробел или разделитель строки названия flv файлов, примерно так
Код:
BMW_end.flv
Finougorskaya_end.flv
Kinopop_end.flv


Пример вызова :
Код:
$orders = @file_get_contents('video/!order.lst');
echo getOrderVideo("video/",$orders,540,432);


Пример использования : http://detaliplus.ru/project.php

Скрипт :
Код:

#Функция возращающая видео по указанному файлу
function getOrderVideo($dir,$orders,$width,$height)
{
  $arr = split('.flv',$orders);
  $tmp = '';
  foreach($arr as $key => $value){ 
    $file = trim($value);
    if(!empty($file)){
       $tmp   .= getFlashVideo($dir,$file.'.flv',$width,$height);
    }
  }
  return $tmp;
}

#Функция обработки видео
function getFlashVideo($dir,$file,$width,$height) {
$str = "";
  if(strpos($file,".flv")>0) {
          $img = str_replace('.flv','.jpg', $file);
          $txt = $dir . str_replace('.flv','.txt', $file);
          $comment = @file_get_contents($txt);
          $str .= '<object id="player" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" name="player" width="'.
             $width.'" height="'.$height.'">"';
     $str .= '<param name="movie" value="player.swf" />'."\n";
     $str .= '<param name="allowfullscreen" value="true" />'."\n";
     $str .= '<param name="allowscriptaccess" value="always" />'."\n";
          $str .= '<param name="flashvars" value="file='.$dir.
             $file . '&image='.$dir.$img.'" />'."\n";
          $str .= '</object> <br />'.$comment.'<br />&nbsp;<br />&nbsp;'."\n";               
 }       
return $str;       
}

_________________
Написание конвекторов, парсеров, интеграции нескольких сайтов (в личку)

Тематические поисковые системы Рунета: Танцевальная, программиста, поиск книг
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail Посетить сайт автора
Артур
11 1110 1000
11 1110 1000


Зарегистрирован: 22.01.2008
Сообщения: 1163
Откуда: Lietuva
7497 Монеты

СообщениеДобавлено: Сб, 08 Авг, 2009 06:17    Заголовок сообщения: Ответить с цитатой

Название:
Скрипт возврощяющий масив со всеми фалами

Параметры :
$dir папка с которой начать индексировать

Пример вызова : Код:
$arr = file_tree("C:/");
var_dump($arr);


Скрипт : Код:
Код:
   function file_tree($dir) {
      #Открываем директорию
      $dh  = opendir($dir);
      #сканируем содержимое дериктории помещяя в $files файлы а в $dirs директории
      while (false !== ($filename = readdir($dh))) {
         if (($filename != "..") && ($filename != ".")) {
            if (is_dir("$dir/$filename")) {
               $dirs[] = "$dir/$filename";
            } else {
                  $files[] = "$dir/$filename";
            }
         }
      }
      #array_merge выдаёт ошибку если ему подсунуть пустой масив.
      if (sizeof($files) < 2) {$files[] = "";}
      if (sizeof($files) < 2) {$files[] = "";}
      #закрываем ресурсы и освобождаем память
      $dh  = closedir($dh);
      #ходим по директориям
      if (isset($dirs)) {
         foreach ($dirs as $a) {
            $files = array_merge($files, file_tree($a));
         }
      }
      #отфильтровываем мусор
      $files = array_filter($files);
      #сортируем
      sort($files);
      return $files;
   }

_________________
Скрипты [PHP/JS] на заказ, в ЛС, недорого.

SAPE
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail Посетить сайт автора
Артур
11 1110 1000
11 1110 1000


Зарегистрирован: 22.01.2008
Сообщения: 1163
Откуда: Lietuva
7497 Монеты

СообщениеДобавлено: Ср, 12 Авг, 2009 16:04    Заголовок сообщения: Ответить с цитатой

Описание скрипта:
Скрипт собиратель сайтов.
Вызов функции:
start(string $start_url, int $count)
Параметры функции:
$start_url URL с которго начинает работать скрипт (Без http://).
Комментарий:
Скрипт лазеет по сайтам и собирает адресса их главных страниц
(Даёте ему начальный сайт он собирает с него ссылки, идёт на следующий сайт там собирает ссылки и т.д. (Пока не наберт нужное количество))

На шаред хостингах не запускать (выгонят сразу).

В скрипте используется стороний класс для работы с HTTP.

Можно конечно использовать маленькую функцию или даже file_get_contents но этот класс лучше тем что работает с cockie и с редиректами.


Код скрипта:

Код:
<?php
#Подгружаем класс для работы с HTTP протоколам конечно тут можно работать и с маленькй фунцией но зато этот класс поддерживает cockies и редиректы
include_once('./http.php');
$HTTP = new Http();
#Отключаем контроль время выполняния
set_time_limit(0);
#Инициализируем переменные
$OUT_BUFER = "";
$hosts = array();
$final = array();
#Функция отчищяет строку от всёкого мусора
function tags($value) {
    if (get_magic_quotes_gpc()) {
        $value = stripslashes($value);
    }
    $value = addslashes($value);
    $value = strip_tags($value);
    $value = htmlspecialchars($value);
    return $value;
}
#Проверяет URL на ненужные символы
function simbols_url($link) {
    if ((strpos($link, "#" ) === false) && (strpos($link, "(" ) === false)&& (strpos($link, ")" ) === false) && (strpos($link, "{" ) === false)&& (strpos($link, "{" ) === false)&& (strpos($link, "[" ) === false)&& (strpos($link, "]" ) === false)) {
        return true;
    } else {
            return false;
    }
}
##########################Комплекс основных функций################################
function add_to_link_list($link, $host, $count) {
    if (simbols_url($link)) {
        $link = " $link";
        $pos = strrpos($link, "http://");
        if (!$pos === false) {
            $link = substr($link, $pos);
            $link_to_arr = $link;
        }
        if (strpos($link_to_arr, $host) === false) {
            add_link_out(tags($link_to_arr), $count);
        }
    }
    return true;
}
function  add_link_out($url,$count) {
    if (strlen($url)>11) {
        $parsed_url = parse_url($url);
        $host = $parsed_url['host'];
        $GLOBALS['OUT_BUFER'].="Adding $host...\n";
        if (!isset($GLOBALS['hosts'][md5($host)])) {
            $GLOBALS['OUT_BUFER'].="$host not set ...\n";
            if (count($GLOBALS['hosts'])<$count) {
                $GLOBALS['hosts'][md5($host)] = "http://$host";
            }
        } else {
                $GLOBALS['OUT_BUFER'].="$host is set ...\n";
        }
    }
    return true;
}
function get_links_out($host, $count) {
    $GLOBALS['OUT_BUFER'].="Starting $host\n";
    global $HTTP;
    $HTTP->execute("http://$host");
    if ($HTTP->error) {
        $GLOBALS['OUT_BUFER'].=$HTTP->error;
        $GLOBALS['OUT_BUFER'].="\n";
        $data = "";
    } else {
            $data = $HTTP->result;
    }
     preg_match_all("#href=['\"](.+?)['\"]#is", $data, $matches);
    $i = 1;
    foreach ($matches[1] as $a) {
        if (count($GLOBALS['hosts'])<$count) {
            add_to_link_list($a, $host, $count);
        } else {
                break;
        }
    }
    #Если этого не сделать переполняется память
    unset($data);
    unset($a);
    $GLOBALS['OUT_BUFER'].="Go to new links\n";
    foreach($GLOBALS['hosts'] as $key => $a) {
        if (count($GLOBALS['final'])<$count) {
            if ($a != "Ok") {
                $GLOBALS['OUT_BUFER'].="Now working with link $a\n";
                $GLOBALS['final'][] = $a;
                $GLOBALS['OUT_BUFER'].="Changing state to 'Ok'\n";
                $GLOBALS['hosts'][$key] = "Ok";
                $parsed_url = parse_url($a);
                $host = $parsed_url['host'];
                $GLOBALS['OUT_BUFER'].="Indexing this link\n";
                get_links_out($host, $count);
            }
        } else {
                break;
        }
    }
    return true; 
}
function finalize($count) {
    $GLOBALS['OUT_BUFER'].="Finalizing\n";
    foreach($GLOBALS['hosts'] as $key => $a) {
        if (count($GLOBALS['final'])<$count) {
            if ($a != "Ok") {
                $GLOBALS['OUT_BUFER'].="Now woek with link $a\n";
                $GLOBALS['final'][] = $a;
                $GLOBALS['OUT_BUFER'].="Changing state to Ok\n";
                $GLOBALS['hosts'][$key] = "Ok";
                $parsed_url = parse_url($a);
                $host = $parsed_url['host'];
                $GLOBALS['OUT_BUFER'].="Indexing this link\n";
                get_links_out($host, $count);
            }
        } else {
                break;
        }
    }
    return true;
}
#######################################################################
#Статрутем
function start($start_link, $count) {
    $count = intval($count);
    get_links_out($start_link, $count);
    finalize($count);
    #Удаляем ненужные переменные
    unset($GLOBALS['hosts']);
    #Фильтруем масив
    $GLOBALS['final'] = array_filter($GLOBALS['final']);
    #Сортируем масив
    sort($GLOBALS['final']);
    return $GLOBALS['OUT_BUFER'];
}
##############################Пример####################################
if ((strlen($_GET['link'])>1) && (strlen($_GET['count']))>0) {
    #Выводим текст из переменной '$OUT_BUFER' если не надо то просто 'start($_GET['link'], $_GET['count'])';
    echo start($_GET['link'], $_GET['count']);
    #Можно echo $OUT_BUFER;
    #Выводим масив
    var_dump($final);
}
?>


С подсветкой:
http://wmboard.pp.ru/plugins/content/article@script_sobiratel_saitov!/index.html

HTTP класс
http://wmboard.pp.ru/files/attachment/63a30621c9fe303f0f705c1bd8088002http.zip


Весь скрипт
http://wmboard.pp.ru/files/attachment/86a40621c9fe303f0f705c1bd8088015script.zip
_________________
Скрипты [PHP/JS] на заказ, в ЛС, недорого.

SAPE
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail Посетить сайт автора
noLove
Два пингвина
Два пингвина


Зарегистрирован: 25.04.2007
Сообщения: 352

18122 Монеты

СообщениеДобавлено: Пт, 14 Авг, 2009 16:22    Заголовок сообщения: Ответить с цитатой

Однажды мне понадобились линейки с шагом в 10 пикселей, горизонтальная и вертикальная. За пару минут при помощи GD получил желаемый результат:

горизонтальная

Код:

$im = imagecreate(800,20);
$shift= true;
for($i=0;$i<800;$i+=10)
{
   $color = imagecolorallocate($im,255,255,255);
   imagerectangle($im,0,0,800,20,$color);
   $color = imagecolorallocate($im,0,0,0);
   if($shift)
   {
      $height = 16;
   }
   else
   {
      $height = 13;
      imagestring($im,2,($i-6),1,$i,$color);
   }
   imageline($im,$i,20,$i,$height,$color);
   $shift=!$shift;
}


вертикальная
Код:

$im = imagecreate(30,800);
$shift= true;
for($i=0;$i<800;$i+=10)
{
   $color = imagecolorallocate($im,255,255,255);
   imagerectangle($im,0,0,30,800,$color);
   $color = imagecolorallocate($im,0,0,0);
   if($shift)
   {
      $height = 26;
   }
   else
   {
      $height = 23;
      imagestring($im,2,($height-16),($i-7),$i,$color);
   }
   imageline($im,$height,$i,30,$i,$color);
   $shift=!$shift;
}

_________________
Друзья, уважайте труд других Wink
http://xternalx.com - моя хомпага
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Артур
11 1110 1000
11 1110 1000


Зарегистрирован: 22.01.2008
Сообщения: 1163
Откуда: Lietuva
7497 Монеты

СообщениеДобавлено: Пт, 23 Окт, 2009 15:29    Заголовок сообщения: Ответить с цитатой

У вас есть огромный масив (1000, 10000.. элементов)?
Вы его некогда не чистили?
Много ненужных элементов?

Скрипт:

Код:
<?php
header("Content-Type: text/plain");
   
   //Масив с данными
   $W=array('no'=>'Нет');
   //Путь к каталогу
   $search_path = "C:/xampp/htdocs/";
   
   function index_fs($dir, $return_type) {
      $dh = opendir($dir);
      while (false !== ($filename = readdir($dh))) {
         if (($filename != "..") && ($filename != ".")) {
            if (is_dir("$dir/$filename")) {
               $dirs[] = "$dir/$filename";
            } else {
                  if ($return_type == 1) {
                     $files[] = "$filename";
                  } else {
                        $files[] = "$dir/$filename";
                  }
            }
         }
      }
      if (sizeof($files) < 2) {
         $files[] = "";
      }
      if (sizeof($files) < 2) {
         $files[] = "";
      }
      $dh = closedir($dh);
      if (isset($dirs)) {
         foreach ($dirs as $a) {
            $files = array_merge($files, index_fs($a, 0));
         }
      }
      $files = array_filter($files);
      sort($files);
      return $files;
   }
   
   $sucessed_arr = array();
   $filed_arr = array();
   $data = array();
   $files = index_fs($search_path, 0);
   foreach($files as $a) {
      $b = strtolower($a);
      if (strpos($a, "php") !== false) {
         $data[$a].=file_get_contents($a);
      }
   }
   foreach ($data as $keyf=>$valuef) {
      foreach($W as $key=>$value) {
         if (strpos($valuef, $key) === false) {
            $filed_arr[] = $key;
         } else {
               $sucessed_arr[$key] = $keyf;
         }
      }
   }
   echo "<?php\n$".$no."W = array(\n\n";
   foreach($sucessed_arr as $key=>$value) {
      $file = str_replace($search_path."/", "", $value);
      echo "   /* $file */ \n   '$key' => '".$W[$key]."',\n\n";
   }
   echo "\n\n);\n?>";   


$W - ва масив (Можно заинключить, взять из БД и т.д)
$search_path - путь к вашим ПХП файлам.

Возврощяет:
Код:
<?php
$W = array(
/* Путь к файлу */
'key' => 'value',
..........
);
?>


Очень удобно.

У меня был масив 753 элемента стал 264.
А на чистку я затратил всего около секунды. Smile
_________________
Скрипты [PHP/JS] на заказ, в ЛС, недорого.

SAPE
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail Посетить сайт автора
Артур
11 1110 1000
11 1110 1000


Зарегистрирован: 22.01.2008
Сообщения: 1163
Откуда: Lietuva
7497 Монеты

СообщениеДобавлено: Пт, 30 Окт, 2009 15:23    Заголовок сообщения: Ответить с цитатой

Этот скрипт поможет вам отловить вирусы на сайте и изменённые файлы.

Код:
$W=array('eval'=>'eval');
- сюда можете добовлять то что хотите найти.
Например:
Код:
$W=array('eval'=>'eval', 'supervirus' => 'supervirus', 'echo "aaa"' => 'echo "aaa"' );


Скрипт сохроняется в ту папку которую нужно проверить.

Обратите внимание!
Скрипт создаёт файлы с информацией о PHP файлах (Путь к файлу => MD5 хэш файла).
Это значит что должны быть поставленны правельные права на директорию со скриптом.

Сам скрипт:
Код:

<?php
/*
+ ----------------------------------------------------------------------------+
|     ©Arturas Jakshanovas 2009
+----------------------------------------------------------------------------+
*/
   define('_ROOT_', str_replace("/check.php", "", $_SERVER["SCRIPT_FILENAME"]));
   @set_time_limit(0);
   //Масив с вреданосными кусками кода
   $W=array('eval'=>'eval');
   //Путь к каталогу
   $search_path = _ROOT_;
   function s_new_file($fname, $data) {
      if ($fp = fopen($fname, 'w+')) {
         if (flock($fp, LOCK_EX)) {
            if (fwrite($fp, serialize($data))) {
               if (flock($fp, LOCK_UN)) {
                  if (!fclose($fp)) {
                     echo "<br/><strong>Could not close file ".$fname."! CHMOD?</strong>";
                     return FALSE;
                  } else {
                        return TRUE;
                  }
               } else {
                     echo "<br/><strong>Could not unlock file ".$fname."! CHMOD?</strong>";
                     return FALSE;
               }
            } else {
                  echo "<br/><strong>Could not write data to file ".$fname."! CHMOD?</strong>";
                  return FALSE;
            }
         } else {
               echo "<br/><strong>Could not lock file ".$fname."! CHMOD?</strong>";
               return FALSE;
         }
      } else {
            echo "<br/><strong>Cold not create file ".$fname."! CHMOD?</strong>";
            return FALSE;
      }
   }
   function s_read_file($fname) {
      if (file_exists($fname)) {
         if ($fcontent = file_get_contents($fname)) {
            return unserialize($fcontent);
         } else {
               echo "Could not read file ".$fname."!","E";
               return FALSE;
         }
      } else {
            return FALSE;
      }
   }
   function index_fs($dir, $return_type) {
      $dh = opendir($dir);
      while (false !== ($filename = readdir($dh))) {
         if (($filename != "..") && ($filename != ".") && ($filename != "check.php")) {
            if (is_dir("$dir/$filename")) {
               $dirs[] = "$dir/$filename";
            } else {
                  if ($return_type == 1) {
                     $files[] = "$filename";
                  } else {
                        $files[] = "$dir/$filename";
                  }
            }
         }
      }
      if (sizeof($files) < 2) {
         $files[] = "";
      }
      if (sizeof($files) < 2) {
         $files[] = "";
      }
      $dh = closedir($dh);
      if (isset($dirs)) {
         foreach ($dirs as $a) {
            $files = array_merge($files, index_fs($a, 0));
         }
      }
      $files = array_filter($files);
      sort($files);
      return $files;
   }
   
   $sucessed_arr = array();
   $filed_arr = array();
   $data = array();
   $files = index_fs($search_path, 0);
   foreach($files as $a) {
      $b = strtolower($a);
      if (stripos($a, "php") !== false) {
         $data[$a].=file_get_contents($a);
      }
   }
   $all_files_arr = array();
   $file_with_keys_arr = array();
   foreach ($data as $keyf=>$valuef) {
      foreach($W as $value) {
         $all_files_arr[$keyf] = md5_file($keyf);
         $pos = stripos($valuef, $value);
         if ($pos === false) {
            $sucessed_arr[$keyf] = $value;
            $file_with_keys_arr[$keyf][$value] = $value;
         } else {
               $filed_arr[$keyf] = $keyf;
               $file_with_keys_arr[$keyf][$value] = $value;
         }
      }
   }
   $files_md5_table = s_read_file("files_md5_table.db");
   echo "<table><tr><td><center><strong>Статус</strong></center></td><td><center><strong>Файл</strong></center></td><td><center><strong>MD5 хэш</strong></center></td><td><center><strong>Совпадение MD5 хэша</strong></center></td></tr>";
   foreach($all_files_arr as $key=>$value) {
      if ($files_md5_table != false) {
         if ($files_md5_table[$key] == $value) {
            $md5_status = "<center><span style=\"color:green\"><strong>Ok!</strong></span></center>";
         } else {
               $md5_status = "<center><span style=\"color:red\"><strong>False!</strong></span></center>";
         }
      } else {
            $md5_status = "<center><span style=\"color:red\"><strong>NEW FILE!</strong></span></center>";
      }
      if (isset($filed_arr[$key])) {
         $f_status = "<span style=\"color:red\"><strong>False!</strong></span>";
      } elseif (isset($sucessed_arr[$key])) {
         $f_status = "<span style=\"color:green\"><strong>Ok!</strong></span>";
      } else {
            $f_status = "<span style=\"color:red\"><strong>Error!</strong></span>";
      }
      echo "<tr><td>$f_status</td><td><i>$key</i></td><td><strong>$value</strong></td><td>$md5_status</td></tr>";
   }
   echo "</table>";
   @rename("files_md5_table.db", date("Y.m.j.g.i.A")."files_md5_table.db");
   s_new_file("files_md5_table.db", $all_files_arr);
?>


ВНИМАНИЕ:
Файл с этим скриптом должен называтся check.php
_________________
Скрипты [PHP/JS] на заказ, в ЛС, недорого.

SAPE
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail Посетить сайт автора
Алзим
Владелец сайта на хостинге EOMY
Красные глаза


Зарегистрирован: 17.10.2010
Сообщения: 2069
Откуда: Интернет
11633 Монеты

СообщениеДобавлено: Сб, 27 Ноя, 2010 16:22    Заголовок сообщения: Ответить с цитатой

Описание скрипта:
Лично мне очень любопытно, какой бот когда заходил ко мне на сайт и что смотрел. Если Вы также имеете заинтересованность в ведении подобного учета посещений сканерами, Вам обязательно пригодится данный скрипт.

Скрипт написан на PHP (возможна работа как в режиме PHP-как-модуль-Апача, так и в PHP-как-FastCGI), полностью валиден (в рамках соответствия стандартам XHTML11, XHTML1/Strict и CSS/3), имеет гибкую систему настроек и панель настройки ботов.

Скрипт:
http://usings.ru/upload/php/botstat.zip

Версия:
1.03 (rev.0015)

Последнее обновление:
06.11.2009, 20:43 мск

Пример использования (уровень доступа – пользователь):
http://usings.ru/bots.php

Инструкция по установке:
1 Распакуйте архив в корень вашего сайта
2 Добавьте следующий фрагмент в файл .htaccess:
Код:
<Files "bot_stat.*">
Order Allow,Deny
Deny from All
</Files>
 
<Files "bots_*">
Order Allow,Deny
Deny from All
</Files>
 
<Files "bots.php">
   <IfModule mod_fastcgi.c>
   <IfModule mod_rewrite.c>
      RewriteEngine On
      RewriteCond %{HTTP:Authorization} !^$
      RewriteRule ^(.+)\.php$ $1.php?HTTP_AUTH=%{HTTP:Authorization} [QSA,L]
   </IfModule>
   </IfModule>
</Files>

3 Добавьте следующий код:
Код:
<?php require_once 'bot_stat.php'; ?>

4 Настройте права доступа к файлам:
Оптимистичный вариант: на сервере используется mpm-itk, либо PHP-как-CGI:

* Установите права 644 на все файлы скрипта

Чуть менее оптимистичный вариант: есть возможность сменить владельца файлов:

* Смените владельца всех файлов скрипта на ‘apache’
* Установите права 644 на все файлы скрипта

Пессимистичный вариант: возможности ограничены хостером:

* Установите права 666 на файлы: bot_stat.log, bot_stat.txt, bots_settings.php
* Установите права 644 на остальные файлы.

5 Приступим к настройке конфига (файл ‘bots_settings.php’):

* Админ (имеет право вносить и удалять боты): $admin_login, $admin_password

Если $admin_login равен пустой строке, то все имеют уровень доступа администратора (НЕ рекомендуется!)
* Юзер (имеет право просматривать статистику): $user_login, $user_password

Если $user_login равен пустой строке, то все имеют уровень доступа пользователя.
* $current_lang:
o auto – автоопределение языка пользователя (Рекомендуется!)
o en – Английский/международный
o ru – Русский
o … – Любой другой, перевод на который Вы сможете осуществить.
* $current_charset – charset Вашего сайта (по крайней мере в отношении url’ов)
* $botdetails_reverse – порядок отображения списка URI, посещенных ботами:
true/false.
* $botdetails_page_len – количество записей, одновременно выводимых на экран в режиме детализированного отчета о посещениях выбранного бота.

P.S. На ЕОМИ есть небольшие проблемы в работе данного скрипта. В браузере Мазилла, чтобы инфа о ботах обновлялась надо нажимать F5. На других хостингах такой проблемы нет. Из-за чего такая проблема на ЕОМИ, никто не знает.

Сайт автора скрипта: http://usings.ru/
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Посетить сайт автора
etere
Интернет на завтрак
Интернет на завтрак


Зарегистрирован: 09.03.2011
Сообщения: 27
Откуда: Omsk Russia
602 Монеты

СообщениеДобавлено: Вт, 05 Апр, 2011 07:09    Заголовок сообщения: Ответить с цитатой

Описание скрипта:
отключает правую кнопку мыши
ставить после тега </head>
Код скрипта:



Код:
<script language="Javascript">
<!--
var message="ВашСайт.ру";
function clickIE() {if (document.all) {(message);return false;}}
function clickNS(e) {if
(document.layers||(document.getElementById&&!document.all)) {
if (e.which==2) {
(message);
return false;}}}
if (document.layers) {
document.captureEvents(Event.MOUSEDOWN);
document.onmousedown=clickNS;
}else{
document.onmouseup=clickNS;
document.oncontextmenu=clickIE;
}
document.oncontextmenu=new Function("return false")
-->
</script>
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Алзим
Владелец сайта на хостинге EOMY
Красные глаза


Зарегистрирован: 17.10.2010
Сообщения: 2069
Откуда: Интернет
11633 Монеты

СообщениеДобавлено: Вт, 05 Апр, 2011 07:26    Заголовок сообщения: Ответить с цитатой

etere писал(а):
Описание скрипта:
отключает правую кнопку мыши

А зачем это надо?))
_________________
Новая доходная и с быстрым выкупом биржа ссылок! Руби каппусту!
Дешёвый хостинг сайтов.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Посетить сайт автора
Показать сообщения:   
Начать новую тему   Ответить на тему    Список форумов EOMY.NET -> Программирование для WEB Часовой пояс: GMT
На страницу Пред.  1, 2, 3, 4  След.
Страница 3 из 4

 


Rambler's Top100   Рейтинг@Mail.ru    



Powered by phpBB © 2001, 2005 phpBB Group