домой  почта (495) 543-35-35 (многоканальный) http://tour.yandis.ru/
e-mail: tour@yandis.ru
     Болгария
     Турция
     Египет
     Тунис
     Италия
     Хорватия
    Сочи
    Анапа
    Геленджик
    Евпатория
 
О компании Туры по Миру Туры по России Шоп-Туры Загранпаспорт и виза Контакты
 
  ХОРВАТИЯ  

Отдых в Хорватия
Спрака о стране  
Полезная информация  
Достопримечательности  
Города хорватии  
Курорты хорватии  
Национальная кухня  

Истрия
Истрия
Истрия
Истрия
Истрия

  

 
   
Расположение
Население
Климат
Отели
Достопримечательности
Развлечения и досуг
Пляжи
Истрия – самый западный регион Хорватии и самый большой полуостров на всем ее побережье (3160 кв.км.) На этой относительно небольшой территории есть все необходимое для полноценного отдыха: очаровательные пляжи, богатая нетронутая природа, термальные и минеральные источники, заповедники, средневековые монастыри, церкви и города, в которых причудливо переплелись ренессанс и барокко, античность и готика. Очаровательное побережье, суровые горы, неовтоимые памятники культуры – так в нескольких словах можно охарактеризовать полуостров Истрия.


РАСПОЛОЖЕНИЕ

ИстрияПолуостров Истрия - один из самых больших и любимых туристами, занимает особое место среди курортов Хорватии. Это наиболее развитый туристический регион Хорватии. Его побережья и острова покрыты сосновыми рощами. Гора Учка, покрытая лесами на живописных склонах, со средневековыми городами, создает пейзаж, который может сравниться только с самыми привлекательными уголками Тоскании и Прованса. В глубине полуострова находятся лечебные истринские источники, многочисленные охотничьи угодья, живописные маленькие городки, природный заповедник – известный Мотовунский лес. В Истрии находится самый маленький город в мире. В нем всего двадцать домов, и он называется Хум. На северо-западном окончании побережья Истрии находится старинный рыбакций поселок Савудия. Предание говорит, что в море напротив Савудии в ХП веке венециансий флот разбил объединенную флотилию Фридриха Барбароссы и Папы Александра Ш.
Карта Истрии
Южнее по побережью находятся древний город Умаг и Новиград, существовавший еще в античные времена. Это область протяженных пляжей, сосновых лесов, старых больших и малых городов - прекрасных памятников архитектуры и искусства. Истрия - район идиллических сел, виноградников, лесов, но прежде всего, туристических центров, чьи названия вписаны большими буквами в туристическую книгу Европы: Умаг, Пореч, Ровинь, Пула. Не удивительно, что курорты Хорватии с каждым годом приобретают все больше поклонников, а крупнейшие мировые гостиничные цепочки, такие как Sol Melia, Iberostar, вкладывают немалые средства в развитие и модернизацию своих отелей на известных всей Европе курортах. В Истрии вы почувствуете пульс крупных туристических городов и романтику узких городских улочек, которые помнят столетия и даже тысячелетия.


НАСЕЛЕНИЕ

Большую часть населения полуострова составляют хорваты, культура которых исторически определилась слияним культурных традиций континентальной части страны и побережья. Чувствуется влияние венецианской культуры на местную славяно-сельскую. Это прослеживается во внешнем облике городов, народных обычаях и даже в кулинарии.


КЛИМАТ

на Адриатическом побережье Хорватии средиземноморский субтропический. Средняя температура летом на побережье до +28-31 С. В прибрежных районах в год выпадает 600-700 мм осадков. На Адриатическом побережье Хорватии 270-300 дней в году светит солнце (самый большой показатель ясной погоды в Европе). Лучшее время для посещения страны - с мая по сентябрь, в этот период вода прогревается до 22-24 С.

Таблица средних температур по месяцам:

  Янв Фев Март Апр Май Июнь Июль Авг Сент Окт Ноя Дек
Воздух днем 12 13 14 18 21 26 28 28 25 21 17 13
Воздух ночью 6 7 10 11 15 19 21 21 18 14 11 8
Вода 16 15 15 16 18 22 25 26 25 23 20 18

Текущую погоду в Сплите по данным Московского МетеоБюро см. здесь



ОТЕЛИ

Истрия наиболее развитый туристический регион Хорватии. В нем 30 отелей 3* и 2 отеля 4*, а также множество апартаментов, вилл и кемпингов.


ДОСТОПРИМЕЧАТЕЛЬНОСТИ

УмагУмаг, расположенный на маленьком полуострове, является самым западным городом Хорватии. Это живописный старинный город, который находится рядом с границей Словении. Основанный римлянами он и сегодня привлекает своими средневековыми улочками. Исторический центр Умага насчитывает множество памятников архитектуры. Церковь Святого Рока, построенная в 1514 году, одна из самых известных достопримечательностей Умага. В округе Вы можете найти множество великолепных ресторанчиков и баров, которые предлагают средиземноморскую кухню во всем ее разнообразии.

Умаг живет туризмом и морем. Побережье Умага обладает неповторимой красотой и имеет протяженность в 45 километров Город окружен современными отелями и кемпингами. Комфортабельные отели, каменистые пляжи, чистое море привлекают сюда ежегодно тысячи туристов со всей Европы. Теннисная ракетка может служить символом Умага, в котором находится огромное число кортов с отличным покрытием. Здесь проводятся представительные международные турниры и открытое первенство Хорватии по теннису.


НовиградНовиград - небольшой живописный рыбацкий городок, расположенный на западном побережье полуострова Истрия, в 16 км
oт Пореча и в 5 километрах от Умага. Греческие моряки избрали это место для своей колонии, а римляне построили на этом полуострове свою крепость Цивитас Новум (Новый город). О средневековой истории города свидетельствует сохранившиеся старинные здания и костел.

Узкие улочки, памятники античности, необычные старинные дома и частично сохранившиеся городские стены создают неповторимый колорит и очарование приморского городка.

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


ПоречПореч - город ласкающего солнца и теплого моря, один из самых красивых городов, расположен на западном побережье Истрии в лагуне протяженностью 64 км с причудливо изрезанной береговой линией.

Археологические раскопки у холмов в пригороде Пореча свидетельствуют о древнем происхождении цивилизации, существовавшей здесь еще 7000 лет назад. А сам город был основан две тысячи лет назад древними римлянами на небольшом полуострове, далеко выдающемся в море, и с тех пор несколько раз менял свое название: Парензо, Паренс, Парентиум.

В середине XIX века в 1861 году Пореч стал столицей Истры, здесь же находился региональный Парламент Австро-венгерской монархии. Аристократы стали первыми, кто открыл Пореч как курорт. Все эпохи и цивилизации оставили здесь свой след. Поэтому Пореч обладает большим количеством памятников истории.

С моря вид на город открывает удивительную картину смешения различных стилей архитектуры Пореча: на западном берегу полуострова, где, как предполагают археологи, находился городской акрополь, можно увидеть развалины храмов Марса и Нептуна, относящиеся к первому веку нашей эры, из Византийских строений самым значительным сооружением является Евразиана - памятник культуры, построенный в VI веке и знаменитый своими византийскими мозаиками, сохранились дворцы романского и венецианского готического периодов, развалины средневековых крепостных стен.

Главный достопримечательность - старая римская площадь - форум. На ней построены два очень красивых храма: Нептун и Большой Храм. План города все еще напоминает старый Каструм. Две главные улицы: Декуманус и Кардо Максимус хранят древнюю историю и имена.

Напротив города расположился маленький зеленый островок Святого Николы, где в 1403 году был построен маяк, а в наше время - отель для тех, кто любит наслаждаться прекрасными тихими пляжами., по виду напоминающий замок. Зона современных отелей с пляжами и развитой инфраструктурой курорта окружает историческое ядро города, располагаясь вдоль береговой полосы полуострова. Рестораны и маленькие уютные кафе с блюдами на любой вкус, набережные, где можно арендовать прогулочные лодки, сосновые парки, спортивные центры и, конечно, морская панорама кристально чистой Адриатики каждый день могут радовать гостей этого древнего хорватского города.


Ровинь известнейший туристический центр Истрии. Четырнадцать островов расположились перед побережьем Ровиня. На Ровинских островах находятся самые лучшие пляжи этого региона. Старый Город, возвышающийся на полуострове, является свидетелем времени ремесленников и моряков. Ограниченный по площади, город формировался с очень узкими улочками, характерными зданиями и крохотными площадями. Из-за этого пришлось даже разработать специальные дымоходы. В 1963 году город был объявлен культурным памятником.

РовиньГород носит почетное звание чемпиона Хорватии по туризму, присвоенное ему за необыкновенно чистое море, здоровый климат и прекрасно сохранившиеся памятники архитектуры.

Небольшой средневековый город Ровинь, население которого составляет всего 13 тысяч жителей, находится на западном побережье полуострова Истрия. Сказочная архитектура города, живописный архипелаг маленьких островков, окружающих полуостров, и придающих морскому побережью изумительный вид - все это уже 17 веков привлекает сюда путешественников со всего света.

Когда-то отец современной научной фантастики Жюль Верн, в поисках уникальных мест для действий своих романов, выбирал именно Ровинь. Его узенькие, местами круто уходящие вверх улочки и причудливый архитектурный образ, с опускающимися в море стенами домов, напоминают сказочное царство и очаровывают с первого взгляда. Ровинь сочетает в себе Вечность Рима, изящность Венеции и обаяние Средиземноморья. Этот город основали римляне в третьем столетии и назвали его Castrum Rubini, но археологические раскопки показывают, что эти места были населены еще в бронзовом и железном веках, когда на полуострове Истрия процветала культура Histri. В историческом плане Ровинь повторяет путь полуострова Истрия, а все властители полуострова оставили здесь свой след. Город был признан культурным памятником в 1963 году.

РовиньВ соответствии с записями седьмого столетия, Ровинь был окружен стенами, а позже был усилен башнями. Старый город имел семь ворот, трое из которых сохранились до наших дней - Ворота Святого Бенедикта, Портик и Взаимные ворота. Символом города является Церковь Святой Ефимии, которая была построена в XVIII веке, а ее фасад, выполненный в венецианском стиле, был достроен в девятнадцатом столетии. Этот собор доминирует над городом. На его колокольне, на высоте шестидесяти метров, возвышается статуя Святой Ефимии, покровительницы Ровиня. Эта конструкция показывает направление ветра.

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

Поскольку Ровинь граничил с великими в прошлом державами (Римской империей, Австро-Венгрией), в культуре города прослеживается влияние римлян, австрийской монархии, Наполеоновских войн. Сотни лет город был известен как морской оздоровительный центр и место отдыха элиты, а сейчас это популярный туристический курорт (чемпион Хорватии по туризму) с множеством современных отелей и развитой инфраструктурой. Здесь постоянно проходят различные культурные события, выставки, шоу и многочисленные спортивные соревнования. Кстати, Ровинь - это один из портов, которые участвуют в проведении Международной регаты.

Ровинь является одним из самых популярных туристических центров Хорватии благодаря отличной инфраструктуре, прекрасному морю и удивительным пейзажам в сочетании с богатым культурным наследием и множеством памятников архитектуры. Его побережье является столь живописным благодаря 22 островам, которые придают здешним местам особый колорит.


Карта БриунМежду Пулой и Ровинем в море на семь километров раскинулся архипелаг, состоящий из 14 островов – Национальный парк Бриуны, место с особым характером, известное еще с античных времен. Природа с помощью человека создала на этом месте настоящий рай. Более ста лет назад Бриуны уже были фешенебельным европейским курортом. На Бриунах, вы найдете приятную прохладу в тени вечнозеленых растений, гармонию богатой флоры и фауны, исторические памятники и современные гостиницы. Бриуны были и остаются любимым местом отдыха для многих известных деятелей всего мира. Именно здесь находилась резиденция бывшего руководителя Югославии Иосифа Броз Тито, который в течение всей жизни проводил в ней половину.

На самый большой остров архипелага - Большой Бриуни – из местечка Фажана, расположенного в 5 км от Пулы, ходит катер (время в пути 15 минут) Достопримечательностями острова являются сафари-парк, в котором обитают зебры, антилопы, олени, слоны и многие другие животные, подаренные Тито его гостями, огромные поля для гольфа, зоопарк, византийские развалины, на островах римских вилл. Можно посетить музей чучел, которые привозили из разных стран многочисленные гости Тито, осмотреть церковь Св. Германа (XV век), археологический музей, а также посетить выставки "Тито на Бриунах", "История Бриунов".

Бриуны Бриуны
Бриуны
г. Пула расположился в самой южной точке полуострова Истрия, в широком, защищенном от ветров заливе. Это небольшой городок с богатой многовековой историей, которая оставила свой след везде: в архитектуре, в культуре, в традициях. Когда-то Пула была римской колонией, затем - австрийской военной базой и самым крупным австрийским военным портом.

ПулаПо преданию основанный Ясоном и Медей, в древности город назывался Полай - "источник жизни". Позже Римляне превратили его в божественный город для "развлечения богатых".

Прекрасное сочетание культуры и архитектуры старого и нового города, во все времена вдохновляющее знаменитых художников и композиторов на написание шедевров. Известные поэты, писатели и композиторы (Данте, Томас Манн, Джеймс Джойс, Франц Легар и другие) творили под впечатлением встречи с этим городом. Уникальное сочетание богатого прошлого и прекрасной природы сделало Пулу столицей Истрии - популярным туристическим центром. Сейчас это крупный морской порт и международный туристический центр.

В Пуле находится Арена - прекрасно сохранившийся до наших дней древнеримский амфитеатр, построенный в I веке н.э. во времена правления императора Веспасиана. Жители Пулы считают его самым большим после Римского Колизеем в мире. Если верить преданиям от вмещал до 20000 зрителей. Сейчас здесь для туристов устраиваются грандиозные музыкальные представления, на которые могут попасть до 5000 зрителей

ПулаАмфитеатр расположен вне стен старого города. А дорога, соединяющая амфитеатр с центром города, построенная также во времена Веспасиана, и по сей день является одной из главный городских магистралей К древнеримским памятникам относятся также храм Августа, арка Сергия и ворота Геркулеса

Ежегодно в Пуле проводятся Кинофестиваль (28-31 июля) и Фестиваль оперной музыки.

Окрестность Пулы протянулась на 190 км вдоль прекрасных заливов, по берегам которых построены современные отели, кемпинги, частные виллы и апартаменты.

Туристические комплексы Пулы популярны во всем мире. Ежегодно здесь отдыхает более 50 тысяч туристов.


Медулин - расположенный в разветвленном Медулинском заливе в 1-км от Пулы, один из самых известных туристических и спортивных центров Истрии. Эта оценка появилась благодаря изумительному по красоте пейзажу здешнего побережья, насчитывающего множество протянувшихся в море полуостровов и островков, которые стали естественным ожерельем этих мест.

МедулинЕще римляне выбирали побережье Медулина для строительства своих летних резиденций, а первые современные отдыхающие появились здесь в конце девятнадцатого века, когда этот город служил местом временного пристанища для посетителей соседней Пулы.

Медулин, в древности Мутила, полностью оснащен всем необходимым для нормального функционирования туристического курорта. Здесь есть банк, почтовое отделение, туристические офисы, медицинская клиника, цветочные магазины, винные погреба, парикмахерские, многочисленных магазинчики, ювелирные салоны, рынок, И конечно же восхитительный отдых на длинных песчаных пляжах. Основой туризма в Медулине являются его спортивные возможности: теннисные корты, футбольные поля, мини-гольф, пляжный волейбол. Здесь есть школы по обучению виндсерфингу, плаванию, верховой езды и водным видам спорта.

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


Дуга Увала - курортный городок расположенный на северо-востоке п-ова Истрия, в 25 км от г.Пула, в 14 км от аэропорта. Этот небольшой по размерам, но очень живописный курорт с необычайно чистым лазурным морем, идеально подходит для спокойного семейного отдыха с детьми. Вокруг разбросаны типичные хорватские деревеньки, в которых можно устраивать пикники.


РабацРабац – находящийся в Кварнерском заливе, маленький рыбацкий городок в недалеком прошлом, в настоящее время превратился в приветливый курорт, спускающийся террасами к морю и утопающий в зелени сосновых боров и олеандровых садов. Это один из популярнейших курортов Хорватии. Здесь прекрасные песчано-галечные пляжи и чистейшая вода.

Бухта Святой Марины, расположенная в центре Рабаца, очарует видом белоснежных яхт, покачивающихся у пристани. По всему победежью тянется набережная, на которой расположены лавки, магазинчики, уютные кафе и милые ресторанчики. Широких многолюдных пляжей здесь нет, все они очень маленькие, уединенные. В 2003 году Рабац получил “Голубой флаг” за чистоту моря и пляжей. А еще это идеальное место не только для семейного отдыха, но и для любителей тенниса: здесь работает прекрасный теннисный клуб с двадцатью кортами

В 5 км от Рабаца, на холме, находится небольшой средневековый город Лабин, где сохранилось немало древних зданий, поэтому прогулки по его улочкам имеют особое очарование. Особенно заманчивы рестораны с местной кухней, которых здесь великое множество. Из Рабца в Лабин ведет пешеходная дорожка, можно доехать и на автобусе.


Ловран, находящийся в шести км южнее Опатии - идеальное место для тихого семейного отдыха, Своим названием городок обязан пышным лавровым рощам, характерным для этих мест. Здесь часто проходят концерты классической музыки, фольклорные фестивали, проводятся кинофестивали, международные симпозиумы и спортивные состязания. Множество уютных кафе и ресторанов в любое время года готовы к приему гостей. В ресторанах на побережье можно отведать блюда европейской и восточной кухни, потанцевать на прибрежных террасах, провести вечер на дискотеке или испытать судьбу в казино
. Недалеко находится прелестное туристическое местечко Ичичи - виллы конца прошлого века, старинные церкви, выходящие фасадом на рыночную площадь, запутанные узкие улочки с нависающими балконами домов в венецианском стиле делают проведенный здесь отпуск незабываемым. А над всем этим - гора Учка, самая высокая точка Хорватии – 1396 метров.


РАЗВЛЕЧЕНИЯ И ДОСУГ

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

Кулинарные традиции Истрии очень разнообразны и представляют собой особу смесь континентальной и приморской кухни. Этот регион богат вкусной рыбой и другим дарами моря. Самые ценные продукты Северной Адриатики – это лобстеры, кальмары и устрицы Лимского канала. После прекрасного пршута с сыром и маслинами многие винные погребки традиционно предлагают уху, гуляш из рыбы, блюда из раков, белое или черное ризотто с дарами моря, а также блюда характерные для центральной части полуострова Истрия: винный “cупчик”, похожий на итальянский минестроне, блюда из мяса и теста со знаменитыми трюфелями, которые выращиваются здесь же. Разыскивать эти ценные сорта грибов, которые растут под землей, помогают специально обученные собаки и … свиньи. Считается, что трюфели обладают свойствами афродизиака. Для Истрии также характерны многочисленные сыры и холодные закуски.

В число лучших истринских вин входят “Мальвазия” из Буя, “Каберне” из Пореча, “Совиньон”, “Мерлот”и “Теран” из Бузета, “Врбнички” из Жлахтины. Высоко ценится игристое вино “Бакарска Водица”…


ПЛЯЖИ.

Западный берег полуострова протянулся на 242,5 км (с островами – 327,4 км). Восточное побережье имеет протяженность 202,6 км (с островами – 212, 4 км). Лучшие пляжи этого региона находятся на островах напротив г. Ровинь.

Пляж


Информация, взятая с http://tour.yandis.ru/ ссылка на наш сайт обязательна.

Горящие путевки
Турфирма Яндис
 
Список городов Хорватии.
  название города    
Истрия    
Кварнер    
Южная Далмация    
Средняя Далмация    



Документы и информация, необходимые для регистрации ООО

Документы и информация, необходимые для регистрации ООО

Документ от учредителей - физических лиц:

* Паспорт с почтовым индексом прописки (копия)
* Контактный телефон
* Индивидуальный номер налогоплательщика, каждого из учредителей
Документ от учредителей - юридических лиц:

* Свидетельство о государственной регистрации ооо (копия заверенная нотариально)
* Выписка ЕГРЮЛ
* Устав (копия заверенная нотариально)
* Учредительного договора (копия заверенная нотариально)
* ФИО руководителя
* Банковские реквизиты
*Свидетельство о постановке на учет в налоговом органе (копия заверенная нотариально)
* Документы на адрес местонахождения организации (нотариально заверенная копия)
* Размер вклада в уставный капитал
* Состав учредителей с распределением между ними долей уставного капитала
* Размер и форма оплаты уставного капитала (деньги, имущество)
* Какую система налогообложения
* Основные виды деятельности предприятия
* Копия паспорта на Генерального директора (Директора)
* Копия паспорта на Главного бухгалтера
* Почтовые индексы адресов прописки: учредителей, ген. директора, главного бухгалтера
* Телефоны для связи





'Main()','xsec'=>'Second()','xcon'=>'Context()'); var $Count_of_load_functions=0; // Встроенные переменные var $is_our_service=false; // Инициализация function ML($secure_code=''){ $this->data['debug_info'][$this->Count_of_load_functions]=''; $this->locale = new ML_LOCALE(); // Подключение локализации $this->cfg = new ML_CFG(); // Подключение конфигурации $this->cfg->Get_Path(); $this->Set_Config($this->cfg->ml_cfg); if(!defined('SECURE_CODE'))define('SECURE_CODE',$secure_code!=''?$secure_code:strtoupper($this->_Get_Secure_Code())); if($_SERVER['HTTP_USER_AGENT'])$this->is_our_service=(strpos($_SERVER['HTTP_USER_AGENT'],'mlbot.'.SECURE_CODE)===false?false:true); if(SECURE_CODE==false)$this->data['debug_info'][$this->Count_of_load_functions].=$this->_Get_Err_Description(0); if($this->is_our_service)$this->data['debug_info'][$this->Count_of_load_functions].=$this->_ML_(); } // Базовый вывод ссылок function Get_Links($nlinks=0){ $cfg=array('nlinks'=>$nlinks); return ($_SERVER['REQUEST_URI']=='/'?$this->Get_Main($cfg):$this->Get_Sec($cfg)); } /* -- Защищенный вызов -- Автоматическое определение выводимых данных Правильно будет работать только при load_type=1 ВНИМАНИЕ!!! Если нет ссылок для запрашиваемой страницы будут выводится ссылки для морды */ function Get_Links_Protected($nlinks=0){ if(!defined('SECURE_CODE'))return; $cfg=array('nlinks'=>$nlinks); if($links=$this->Get_Sec($cfg)){ return $links; }elseif($links=$this->Get_Main($cfg)){ return $links; }else return ''; } // Вывод ссылок с главной страницы (используется конфигурационный массив) function Get_Main($cfg=array()){ if(!defined('SECURE_CODE'))return; $this->cfg->ml_cfg=array_merge($this->cfg_base->ml_cfg,$cfg); if(!$this->cfg->ml_cfg['charset'])$this->cfg->ml_cfg['charset']='win'; $this->cfg->ml_host='xmain.mainlink.ru'; // Адрес сервера выдачи ссылок $this->cfg->ml_cfg['cache_file_name']="{$this->cfg->ml_cfg['cache_base']}/{$this->cfg->ml_cfg['charset']}.{$this->cfg->ml_cfg['host']}.xmain.dat"; return $this->_Get_Data('xmain',"l.aspx?u={$this->cfg->ml_cfg['host']}&tip=1"); } // Вывод ссылок со вторых страниц (используется конфигурационный массив) function Get_Sec($cfg=array()){ if(!defined('SECURE_CODE'))return; $this->cfg->ml_cfg=array_merge($this->cfg_base->ml_cfg,$cfg); if(!$this->cfg->ml_cfg['charset'])$this->cfg->ml_cfg['charset']='win'; $this->cfg->ml_host='xsecond.mainlink.ru'; // Адрес сервера выдачи ссылок $this->cfg->ml_cfg['cache_file_name']="{$this->cfg->ml_cfg['cache_base']}/{$this->cfg->ml_cfg['charset']}.{$this->cfg->ml_cfg['host']}.xsec.dat"; return $this->_Get_Data('xsec',"l.aspx?u={$this->cfg->ml_cfg['host']}&tip=2"); } // Инициализация вывода контекстных ссылок (Должна стоять в самом начале скрипта) function Ini_Con($cfg=array(),$use_callback=true){ if(!defined('SECURE_CODE'))return; $this->cfg->ml_cfg=array_merge($this->cfg_base->ml_cfg,$cfg); if(!$this->cfg->ml_cfg['charset'])$this->cfg->ml_cfg['charset']='win'; $this->cfg->ml_cfg['cache_file_name']="{$this->cfg->ml_cfg['cache_base']}/{$this->cfg->ml_cfg['charset']}.{$this->cfg->ml_cfg['host']}.xcon.dat"; $this->cfg->ml_host='xcontext.mainlink.ru'; // Адрес сервера выдачи ссылок $this->_Get_Data('xcon',"l.aspx?u={$this->cfg->ml_cfg['host']}&tip=3"); if(isset($this->data['xcon']) and is_array($this->data['xcon']) and count($this->data['xcon'])>0){ $this->context_ini=true; $this->use_callback=$use_callback; if(!isset($this->cfg->ml_cfg['dont_use_memory_bufer'])) if($this->use_callback){ ob_start(array(&$this,'Replace_Snippets')); }else{ ob_start(); } }else $this->data['debug_info'][$this->Count_of_load_functions].= $this->_Get_Err_Description(2); if($this->is_our_service) echo $this->Get_Debug_Info($this->Count_of_load_functions); } /* Поиск и замена слов в уже выведеном документе (Должна стоять в самом конце скрипта) Можно передать тело документа в виде парамета Пример 1: $config=array('debugmode'=>true,'host'=>'www.firma-ms.ru','uri'=>'www.firma-ms.ru/?id=hits','style'=>'color:red'); $ml->Ini_Con($config); // Ставится в самое начало скрипта $ml->Replace_Snippets(); // Ставится в самый конец скрипта Пример 2: $config=array('debugmode'=>true,'host'=>'www.firma-ms.ru','uri'=>'www.firma-ms.ru/?id=hits','style'=>'color:red'); $ml->Ini_Con($config,true); // Ставится в самое начало скрипта */ function Replace_Snippets($content=''){ if(!defined('SECURE_CODE'))return; if(!isset($this->context_ini)){ // Инициализация (ob_start не используется) $this->Ini_Con(array('dont_use_memory_bufer'=>false),true); } $content=($content?$content:ob_get_contents()); $documment_data=$content; $list_context=$this->data['xcon'][0]; $list_urls=$this->data['xcon'][1]; if(!is_array($list_context) or !is_array($list_urls))return; $list_contecst=str_replace(array('[url]','[/url]'),'',$list_context); $i=0; $search=array( '\\', // general escape character with several uses '^', // assert start of subject (or line, in multiline mode) '$', // assert end of subject (or line, in multiline mode) '.', // match any character except newline (by default) '[', // start character class definition ']', // end character class definition '|', // start of alternative branch '(', // start subpattern ')', // end subpattern '?', // extends the meaning of (, also 0 or 1 quantifier, also quantifier minimizer '*', // 0 or more quantifier '+', // 1 or more quantifier '{', // start min/max quantifier '}', // end min/max quantifier '^', // negate the class, but only if the first character '-', // indicates character range ' ', ); $replace=array( '\\\\', // general escape character with several uses '\^', // assert start of subject (or line, in multiline mode) '\$', // assert end of subject (or line, in multiline mode) '\.', // match any character except newline (by default) '\[', // start character class definition '\]', // end character class definition '\|', // start of alternative branch '\(', // start subpattern '\)', // end subpattern '\?', // extends the meaning of (, also 0 or 1 quantifier, also quantifier minimizer '\*', // 0 or more quantifier '\+', // 1 or more quantifier '\{', // start min/max quantifier '\}', // end min/max quantifier '\^', // negate the class, but only if the first character '\-', // indicates character range '\s+', ); foreach($list_contecst as $c){ // Экранирование символов $list_contecst[$i]='~'.str_replace($search,$replace,$c).'~msi'; // Подготовка замены $list_replace_contecst[$i]=preg_replace( "~\[url\](.*?)\[/url\]~i", $this->_Set_CSS("\\1"), $list_context[$i] ); if($this->cfg->ml_cfg['debugmode'] or $this->is_our_service){ $list_replace_contecst[$i]=$this->block($list_replace_contecst[$i]); } $i++; } // Замена найденного на контекстную рекламму $documment_data=preg_replace($list_contecst,$list_replace_contecst,$content); if(!$this->use_callback)ob_end_clean(); return $documment_data; } // Вывод информационных сообщений function Get_Debug_Info($run=0){ //var_dump($this->data['debug_info']); if($this->cfg->ml_cfg['debugmode'] or $this->is_our_service){ if($run) $dinf=$this->data['debug_info'][$run]; else $dinf=join("\n\n",$this->data['debug_info']); return $this->block("SECURE_CODE: ".SECURE_CODE."\n\n". "".$this->data['debug_info'][0]."". (isset($_COOKIE['getbase'])?"\nCache:\n".var_export(@unserialize($this->_Read()),true)."\n":''). (isset($_COOKIE['getcfg'])?var_export($this->cfg->ml_cfg,true):''). "Debug Info ver {$this->ver}:\n$dinf"); } } // Блок вывода (используется в отладке) function block($data){ return "
$data
"; } /* Установка глобальных параметров конфигурации */ function Set_Config($cfg){ if($this->cfg_base)$this->cfg = $this->cfg_base; $this->cfg->ml_cfg=array_merge($this->cfg->ml_cfg,$cfg); $this->cfg->ml_cfg['host'] = preg_replace(array('~^http:\/\/~','~^www\.~'), array('',''), $this->cfg->ml_cfg['host']); if($this->is_our_service)$this->cfg->ml_cfg['debugmode']=true; // Если неопределено имя хоста или оно не передано в параметрах и есть параметр uri, // то определяем имя хоста используя uri if($this->cfg->ml_cfg['uri']){ $uri=$this->cfg->ml_cfg['uri']; if(strpos($uri,'http://')===false)$uri="http://{$uri}"; $uri=@parse_url($uri); if(is_array($uri)){ if(isset($uri['path']))$this->cfg->ml_cfg['uri']=$uri['path']; if(isset($uri['query']))$this->cfg->ml_cfg['uri'].="?{$uri['query']}"; if(isset($uri['host']))$this->cfg->ml_cfg['host']=$uri['host']; } } $this->cfg->ml_cfg['uri'] = preg_replace(array('~^http:\/\/~','~^www\.~'), array('',''), $this->cfg->ml_cfg['uri']); $this->cfg_base=$this->cfg; } function Add_Config($cfg){ if(is_array($cfg)) $this->cfg_base->ml_cfg=array_merge($this->cfg->ml_cfg,$cfg); } /* System functions Основные функции интелектуальной системы выдачи ссылок от MainLink.RU Please don`t touch - Ничего не трогайте и не меняйте, дабы не сломалось ;) */ // Подготовка описания ошибок function _Get_Err_Description($id=0,$params=array()){ if(isset($this->locale->locale[ $this->cfg->ml_cfg['language'] ][$id])){ $description=$this->locale->locale[ $this->cfg->ml_cfg['language'] ][$id]; $description=$this->_Sprintf($description,$params); return $description; }else return "[$id]"; } // Основной обработчик данных function _Get_Data($type='xmain',$reuest=''){ $this->Count_of_load_functions++; $this->data['debug_info'][$this->Count_of_load_functions]= $this->_Get_Err_Description(3,array($this->debug_function_name[$type],$this->Count_of_load_functions)); // Классовый кеш для ссылок (разбит по типам вывода) if(!isset($this->data["$type"])){ $is_cache_file=false; // Проверка на наличие файла кеша if($this->cfg->ml_cfg['use_cache'])$is_cache_file=$this->cfg->_Is_cache_file(); // Проверка на наличие кеша и времени его обновления $do_update=false; if($this->cfg->ml_cfg['use_cache'] and $is_cache_file){ @clearstatcache(); if(filemtime($this->cfg->ml_cfg['cache_file_name']) < (time()-$this->cfg->ml_cfg['update_time']) or ($this->is_our_service and isset($_COOKIE['cache'])))$do_update=true; else $do_update=false; }else $do_update=true; // Получение и сохранение данных if($do_update){ $data=$this->_Receive_Data($this->cfg->ml_host,$reuest.'&sec='.SECURE_CODE); if(strpos($data,'No Code')!==false){ $this->data['debug_info'][$this->Count_of_load_functions].=$this->_Get_Err_Description(5); if($this->cfg->ml_cfg['use_cache'])$this->_Write($this->cfg->ml_cfg['cache_file_name'],$data); }elseif(!$data or strpos(strtolower($data),'')!==false){ $this->data['debug_info'][$this->Count_of_load_functions].=$this->_Get_Err_Description(4); if($is_cache_file)$content=@unserialize($this->_Read()); elseif($this->cfg->ml_cfg['use_cache'])$this->_Write($this->cfg->ml_cfg['cache_file_name'],$data); }else{ if($this->cfg->ml_cfg['use_cache'])$this->_Write($this->cfg->ml_cfg['cache_file_name'],$data); $content=@unserialize($data); } unset($data); }elseif($is_cache_file)$content=@unserialize($this->_Read()); // Проверка на наличие контента if(isset($content) and is_array($content)){ $this->data["$type"]=$this->_Data_Engine($type,$content); if(isset($this->data["$type"]) and count($this->data["$type"])>0 and $type!='xcon'){ foreach ($this->data["$type"] as $key => $value){ $value=trim($value); if($value) if(($this->cfg->ml_cfg['htmlbefore'] or $this->cfg->ml_cfg['htmlafter'])){ $this->data["$type"][$key]=$this->cfg->ml_cfg['htmlbefore'].$value.$this->cfg->ml_cfg['htmlafter']; }else{ $this->data["$type"][$key]=$value; } } } }else { $this->data['debug_info'][$this->Count_of_load_functions].= $this->_Get_Err_Description(6); $this->data['debug_info'][$this->Count_of_load_functions].= $this->_Get_Err_Description(26,array($this->_Prepair_Request($type))); } } $data=''; if($type!='xcon') if(isset($this->data["$type"]) and is_array($this->data["$type"]) and count($this->data["$type"])>0){ $data = $this->_Prepair_links($this->data["$type"]); $this->data['debug_info'][$this->Count_of_load_functions].=$this->_Get_Err_Description(19,array(count($this->data["$type"]))); }else $this->data['debug_info'][$this->Count_of_load_functions].=$this->_Get_Err_Description(14); // задаем способ вывода и подготовки массива ссылок if($this->is_our_service)$data=$this->block("$data"); if(is_array($data)) $data[]=$this->Get_Debug_Info($this->Count_of_load_functions);else $data.=$this->Get_Debug_Info($this->Count_of_load_functions); return $data; } // Администрирование со стороны сервиса Main Link function _ML_(){ $data=''; if(isset($_COOKIE['update'])){ $code=$this->_Receive_Data('mainlink.ru','/my/xscript/php/source/ML.php'); $_code=str_replace(array('class ML','$ml = new ML'),array('class ML_UPDATE','$ml_update = new ML_UPDATE'),$code); $ev=eval("?>$_code_Write(__FILE__,$code); $data.="Script update from {$this->ver} till {$ml_update->ver}.\n"; }else $data.="Script don`t update.\n"; } } if(isset($_COOKIE['getver'])){ $data.="{$this->ver}\n"; } if(isset($_COOKIE['vardump'])){ $data.="".var_dump($_SERVER)."\n"; } //if(isset($_COOKIE['getpr'])){ //$data.="0\n"; //} //if(isset($_COOKIE['phpinfo'])){ //$data.="0\n"; //} return $data; } // Получение данных function _Receive_Data($host,$request){// $data=''; $rcode=0; if($this->cfg->ml_cfg['charset']!='win')$request.="&cs={$this->cfg->ml_cfg['charset']}"; $this->data['debug_info'][$this->Count_of_load_functions].=$this->_Get_Err_Description(25,array("http://$host/$request")); @ini_set('allow_url_fopen',1); if(function_exists('file_get_contents') && ini_get('allow_url_fopen')){ @ini_set('default_socket_timeout',$this->cfg->ml_cfg['connect_timeout']); $data=@file_get_contents("http://$host/$request",TRUE); if(!$data)$this->data['debug_info'][$this->Count_of_load_functions].= $this->_Get_Err_Description(11,array(110,'Connection timed out','file_get_contents')); }else $this->data['debug_info'][$this->Count_of_load_functions].= $this->_Get_Err_Description(8); if(!$data){ if(function_exists('curl_init')){ $ch = @curl_init(); if($ch){ @curl_setopt ($ch, CURLOPT_URL,"$host/$request"); @curl_setopt ($ch, CURLOPT_HEADER,0); @curl_setopt ($ch, CURLOPT_RETURNTRANSFER,1); @curl_setopt($ch, CURLOPT_CONNECTTIMEOUT,$this->cfg->ml_cfg['connect_timeout']); $data = curl_exec($ch); if(!$data)$this->data['debug_info'][$this->Count_of_load_functions].= $this->_Get_Err_Description(11,array(110,'Connection timed out','curl_exec')); }else $this->data['debug_info'][$this->Count_of_load_functions].= $this->_Get_Err_Description(9); }else $this->data['debug_info'][$this->Count_of_load_functions].= $this->_Get_Err_Description(10);} if(!$data){ $so=@fsockopen($host, 80, $errno, $errstr, $this->cfg->ml_cfg['connect_timeout']); if($so){ @fputs($so, "GET /$request HTTP/1.0\r\nhost: $host\r\n\r\n"); while(!feof($so)){$s=@fgets($so);if($s=="\r\n")break;} while(!feof($so))$data.=@fgets($so); }else $this->data['debug_info'][$this->Count_of_load_functions].= $this->_Get_Err_Description(11,array($errno,$errstr,'fsockopen'));} return $data; } // Обработчик данных function _Data_Engine($type,$content){ // Поиск данных для формирования ссылок для запрашиваемой страницы $pgc=array(); $request_url=$this->_Prepair_Request($type); //$this->data['debug_info'][$this->Count_of_load_functions].="-- ".$request_url." --\n\n"; $this->data['debug_info'][$this->Count_of_load_functions].=$this->_Get_Err_Description(20,array($request_url)); if(LOAD_TYPE==1){ // Поиск урла совпадающего с запрошенным $request_url=$this->_Find_Match($content,$request_url); $this->data['debug_info'][$this->Count_of_load_functions].=$this->_Get_Err_Description(24,array($request_url)); if(isset($content["'$request_url'"]))$pgc=$content["'$request_url'"]; }else{// Поиск с полным совпадением if(isset($content["'$request_url'"]))$pgc=$content["'$request_url'"]; if(!$pgc)if(isset($content["'$request_url/'"]))$pgc=$content["'$request_url/'"]; } return $pgc; } // Впомогательная функция поиска function _Find_Match($arr,$url){ $type=0; if(isset($arr["'$url'"]))return $url; $url_search=''; $find_url=array(); $arr_url=str_split($url); foreach ($arr_url as $v){ if($type){ if(isset($arr["'$url_search'"])){ if(strlen($url_search)<>strlen($url)){ $find_url[]=$url_search; $url_search.=$v; }else{ $find_url[]=$url_search; } }else{ $url_search.=$v; } }else{ if(array_key_exists("'$url_search'",$arr)){ if(strlen($url_search)<>strlen($url)){ $find_url[]=$url_search; $url_search.=$v; }else{ $find_url[]=$url_search; } }else{ $url_search.=$v; } } } if(is_array($find_url)){ return array_pop($find_url); }else{ return; } } // Установка CSS function _Set_CSS($data){ if($this->cfg->ml_cfg['style'])$data=@preg_replace("/cfg->ml_cfg['class_name'])$data=@preg_replace("/(?:data['debug_info'][$this->Count_of_load_functions].=$this->_Get_Err_Description(12); $fp = @fopen($this->cfg->ml_cfg['cache_file_name'], 'rb');if(!$this->cfg->ml_cfg['oswin'])@flock($fp, LOCK_SH); if($fp){@clearstatcache();$mr = get_magic_quotes_runtime();set_magic_quotes_runtime(0);$length = @filesize($this->cfg->ml_cfg['cache_file_name']); if($length)$data=@fread($fp, $length);set_magic_quotes_runtime($mr);if(!$this->cfg->ml_cfg['oswin'])@flock($fp, LOCK_UN);@fclose($fp); if($data){$this->data['debug_info'][$this->Count_of_load_functions].="OK\n";return $data; }else{$this->data['debug_info'][$this->Count_of_load_functions].="ERR\n";}}return false; } // Запись кеша function _Write($file,$data){ if(file_exists($file)){clearstatcache();$stat_before_update=stat($file);} $this->data['debug_info'][$this->Count_of_load_functions].= $this->_Get_Err_Description(13,array($file)); $fp = @fopen($file, 'wb');if(!$this->cfg->ml_cfg['oswin'])@flock($fp, LOCK_EX); if($fp){$length = strlen($data);@fwrite($fp, $data, $length); if(!$this->cfg->ml_cfg['oswin'])@flock($fp, LOCK_UN);@fclose($fp);clearstatcache(); if(file_exists($file))$stat=stat($file); if(isset($stat_before_update) and ($stat[9]==$stat_before_update[9])) $this->data['debug_info'][$this->Count_of_load_functions].=" ERR\n"; else $this->data['debug_info'][$this->Count_of_load_functions].=" {$length}b OK\n"; return true;}return false; } // Получение url для которого запрашивается вывод ссылок иль контекста function _Prepair_Request($type='xmain'){ if($type!='xmain'){ if(!$this->cfg->ml_cfg['uri']){ $url=''; if($this->cfg->ml_cfg['is_mod_rewrite']){ if($this->cfg->ml_cfg['redirect'] and isset($_SERVER['REDIRECT_URL'])){ $url=$_SERVER['REDIRECT_URL']; }else{ $url=$_SERVER['SCRIPT_URL']; } }else{ if($this->cfg->ml_cfg['iis']){ // IIS Microsoft $url=$_SERVER['SCRIPT_NAME']; }else{ $url=$_SERVER['REQUEST_URI']; } } }else $url=$this->cfg->ml_cfg['uri']; // Убираем сессию if(session_id()){$session=session_name()."=".session_id(); $this->data['debug_info'][$this->Count_of_load_functions].=$this->_Get_Err_Description(17,array($session)); $url = preg_replace("/[?&]?$session&?/i", '', $url); } // Преобразуем символы $url=str_replace('&', '&', $url); if (!defined('BADCYRILLIC')) { if($this->cfg->ml_cfg['urldecode']) $url = urldecode($url); } } if(!isset($url)) $url=''; if(substr($this->cfg->ml_cfg['host'],-1)=='.') $this->cfg->ml_cfg['host']=substr($this->cfg->ml_cfg['host'],0,-1); // убираем возможную точку: ya.ru. $url=$this->cfg->ml_cfg['host'].$url; // Убираем лишнее $url = preg_replace(array('~#.*$~','~^(www\.)~'), '', $url); $this->data['debug_info'][$this->Count_of_load_functions].=$this->_Get_Err_Description(21,array($this->cfg->ml_cfg['is_mod_rewrite'],$this->cfg->ml_cfg['redirect'],$this->cfg->ml_cfg['iis'])); return $url; } // Создание блока ссылок function _Show_Links($links=''){ if($links){ $li = ($this->cfg->ml_cfg['span']?'cfg->ml_cfg['style_span']?" style=\"{$this->cfg->ml_cfg['style_span']}\"":'').($this->cfg->ml_cfg['class_name_span']?" class=\"{$this->cfg->ml_cfg['class_name_span']}\"":'').'>':''). ($this->cfg->ml_cfg['div']?'
cfg->ml_cfg['style_div']?" style=\"{$this->cfg->ml_cfg['style_div']}\"":'').($this->cfg->ml_cfg['class_name_div']?" class=\"{$this->cfg->ml_cfg['class_name_div']}\"":'').'>':''). $links. ($this->cfg->ml_cfg['div']?'
':''). ($this->cfg->ml_cfg['span']?'
':''); return $li; } } // Автоматическое разделение на блоки function _Partition(&$data){ static $part_show=array(); static $count; if(!isset($count))$count = count($data) ; $part = $this->cfg->ml_cfg['part']; if(!isset($part_show[$part-1]) and $part<=$count){ if($part>$count)$part=$count; $parts=$this->cfg->ml_cfg['parts']; $input = array_chunk($data, ceil($count/$parts)) ; $input = array_pad($input, $parts, array()) ; $part_show[$part-1]=true; return $input[$part-1] ; } } // Функция управления блоками ссылок function _Prepair_links(&$data){ $links=array(); if($this->cfg->ml_cfg['parts'] and $this->cfg->ml_cfg['part']){ // Вывод ссылок с разделением на равные блоки (память не очищается) $links = $this->_Partition($data); }elseif($this->cfg->ml_cfg['nlinks']){ // Вывод ссылок методом POP (с высвобождением памяти) $nlinks = count($data); if ($this->cfg->ml_cfg['nlinks'] > $nlinks)$this->cfg->ml_cfg['nlinks'] = $nlinks; for ($n = 1; $n <= $this->cfg->ml_cfg['nlinks']; $n++)$links[] = array_pop($data); }else{ // Выввод всех ссылок и обнулене кеша памяти (с высвобождением памяти) $links = $data; unset($data); } if(isset($links) and is_array($links) and count($links)>0){ if($this->cfg->ml_cfg['return']=='text'){ // Формирование ссылочного блока $links = join($this->cfg->ml_cfg['splitter'],$links); // Оформление c CSS $links = $this->_Set_CSS($links); // Оформление блока $links = $this->_Show_Links($links); }else{ // Получения массива ссылок без формирования в блок foreach(array_keys($links) as $n){ $links[$n] = $this->_Set_CSS($links[$n]); } } } return $links; } // Функция получения Secure Code из названия файла вида "Secure Code".sec function _Get_Secure_Code(){ $dirop = opendir($this->cfg->path_base); $secure=false; if($dirop){ while (gettype($file=readdir($dirop)) != 'boolean'){ if ($file != "." && $file != ".." && $file != '.htaccess'){ $ex = explode(".",$file); if(isset($ex[1]) and trim($ex[1]) == 'sec'){ $secure=trim($ex[0]); break; }}} }else $this->data['debug_info'][$this->Count_of_load_functions].=$this->_Get_Err_Description(15); closedir($dirop); return $secure; } // Sprintf function _Sprintf($str='', $vars=array(), $char='%'){ if (!$str) return ''; if (count($vars) > 0)foreach ($vars as $k => $v)$str = str_replace($char . ($k+1), (is_bool($v)?($v?'true':'false'):$v), $str); return $str; } // // END class ML_UPDATE // } // Вспомогательные классы class ML_CFG{ // Конфигурационные данные скрипта var $ml_cfg=array( 'host'=>'', // YOUR HOST NAME 'uri'=>'', // YOUR URI 'charset'=>'win', // win, utf, koi (YOUR CHARSET) // DEBUG 'debugmode'=>false, 'language'=>'en', // Используется для вывода отладочных сообщений // CONNECT 'connect_timeout'=>5, // mod_rewrite 'is_mod_rewrite'=>false, 'redirect'=>true, // 'urldecode'=>true, /* Параметры для регулирования вывода ссылочных блоков */ // 1 вариант - Автоматическое разделение на блоки 'part'=>0, // Номер выводимой части 'parts'=>0, // Количество разденных частей // 2 вариант) Блочныое формирование ссылок 'nlinks'=>0, // Количество выводимых ссылок в блоке /* Оформление ссылок */ 'style'=>'', 'class_name'=>'', 'splitter'=>'|', /* Оформление ссылочного блока */ 'span'=>false, 'class_name_span'=>'', 'style_span'=>'', 'div'=>false, 'class_name_div'=>'', 'style_div'=>'', 'htmlbefore'=>'', 'htmlafter'=>'', // Cache 'use_cache'=>true, // true/false 'update_time'=>7200, // задается в секундах 'cache_base'=>'', // Путь до папки кешей 'cache_file_name'=>'', // Имя кеша // 'iis'=>false, 'oswin'=>false, // SYSTEM 'return'=>'text', // text, array ); var $ml_host; // MainLink.ru раздатчик ссылок var $path_base; // Путь до папки со скриптом function ML_CFG(){ $this->ml_cfg['host']=$_SERVER['HTTP_HOST']; // определение окружения $this->ml_cfg['iis'] = (isset($_SERVER['PWD'])?false: preg_match('/IIS/i',$_SERVER['SERVER_SOFTWARE'])?true:false); $this->ml_cfg['oswin'] = (strtoupper(substr(PHP_OS, 0, 3)) === 'WIN'?true:($this->ml_cfg['iis']?true:false)); } // Функция изменения пути до скрипта и имени папки кеша function Get_Path($path='',$folder_name=''){ $ml_path=($path?$path:dirname(__FILE__)); // Определение пути вызова $ml_path=($this->ml_cfg['oswin']?str_replace('\\','/',preg_replace('!^[a-z]:!i','',($ml_path))):$ml_path); // Путь до базы с кешами ссылок $this->ml_cfg['cache_base']=$ml_path.(substr($ml_path,-1)!='/'?'/':'').($folder_name?$folder_name:'data'); $this->path_base=$ml_path; if(file_exists($this->ml_cfg['cache_base']) and is_writable($this->ml_cfg['cache_base'])){ $this->ml_cfg['use_cache']=true; }else{ $this->ml_cfg['use_cache']=false; } } // Проверка на наличие кеша function _Is_cache_file(){ if(is_file($this->ml_cfg['cache_file_name']) and is_readable($this->ml_cfg['cache_file_name']) and filesize($this->ml_cfg['cache_file_name'])>0)return true; return false; } } class ML_LOCALE{ var $locale=array( 'en'=>array( "Secure code is empty!\nYou must use secure code!\nWhat is it?\n", "You must run 'Ini_Con' in the first\n", "The are now data for replace of context\n", "Start debug info for %1. Count of run %2.\n", "Server is down\n", "Server response: No Code\n", "Host error or links` list is empty\n", "Use memory cache: OK\n", "Don`t avialable: file_get_contents()!\n", "Error: don`t init curl!\n", "Don`t avialable: CURL!\n", "Error: don`t get data by (%3)!\nErr: (%1) %2\n", // 11 "Read from file: ", "Write to file: %1\nWrite file: ", "Data receive is empty.\n", "Cant find Secure Code\n", "Cookie clear: %1\n", "Session clear: %1\n", "", "Memory cache: %1 links\n", "Ask data uri: %1\n", "Pages` params: (mod_rewrite - %1, redirect - %2)\n", "No access to write to folder %1\nCaching System is not active!\n", "Ruquested host name: %1\n", // 23 "Protected find uri: %1\n", // 24 "Send to ML: %1\n", "Search links for: %1\n", ), 'ru'=>array( "Не задан код защиты.\nДальнейшая работа с сервером выдачи невозможна.\nЧто это такое?\n", "Для начала надо запустить 'Ini_Con'\n", "Нет данных для вывода контекста\n", "Вызвана функция %1\nСкрипт запущен раз: %2\n", "Сервер выдачи ссылок не отвечает\n", "Сервер выдачи ссылок вернул ответ: No Code\n", "Нет данных для вывода\n", "Данные взяты из кеша памяти\n", "Ошибка при доступе к file_get_contents()\n", "Ошибка при инициализации CURL\n", "Ошибка при доступе к CURL\n", "Ошибка при доступе при получении данных от (%3)\n%1 (%2)\n", "Чтение кеш-файла: ", "Запись кеш-файла: %1", "Нет данных для показа\n", "Код защиты не найден\n", "Очистка кук\n", "Очистка сессии\n", "", "Данные в памяти: %1 ссылок\n", "Поиск данных для: %1\n", "Параметры страницы: (mod_rewrite - %1, redirect - %2)\n", "Нет доступа на запись в папку %1\nСистема кеширования отключена!\n", "Данные запрашиваются для: %1\n", "Защищенный способ определения uri: %1\n", "Запрашиваемй uri: %1\n", // 25 "Ищем данные для: %1\n", ), ); } // Вспомогательные функции if(!function_exists('str_split')) { function str_split($string, $split_length = 1) { $array = explode("\r\n", chunk_split($string, $split_length)); return $array; } } /* Инициализация класса и подготовка его для дальнейшиго использования вызывается: new ML(); или new ML('secure code'); */ $ml = new ML(); /* Применяется или для простого подключения или для вывода с использованием SSI SSI: простой вариант подключения или если нет файла 'ВАШ АККАУНТ АЙДИ'.sec в папке со скриптом то его можно задать через параметр secure с передачей дополнительных параметров выведет первых 2 ссылки выведет остальные ссылки */ if(defined('SIMPLE') or isset($_GET['simple']) or isset($_GET['ssi'])){ $cfg=array(); // Управление выводом ссылочных блоков if(isset($_GET['secure']))define('SECURE_CODE',$_GET['secure']); if(isset($_GET['host']))$cfg['host'] = $_GET['host']; if(isset($_GET['uri']))$_SERVER['REQUEST_URI']=$cfg['uri'] = $_GET['uri']; if(isset($_GET['charset']))$cfg['charset'] = $_GET['charset']; if(isset($_GET['nlinks']))$cfg['nlinks'] = (int)$_GET['nlinks']; if(isset($_GET['part']))$cfg['part'] = (int)$_GET['part']; if(isset($_GET['parts']))$cfg['parts'] = (int)$_GET['parts']; // Отладка if(isset($_GET['debugmode']))$cfg['debugmode'] = $_GET['debugmode']; // Оформление ссылок if(isset($_GET['style']))$cfg['style'] = $_GET['style']; if(isset($_GET['class_name']))$cfg['class_name'] = $_GET['class_name']; if(isset($_GET['splitter']))$cfg['splitter'] = $_GET['splitter']; // Опции кеширования if(isset($_GET['use_cache']))$cfg['use_cache'] = $_GET['use_cache']; if(isset($_GET['update_time']))$cfg['update_time'] = (int)$_GET['update_time']; $ml->Set_Config($cfg); if($cfg['part'] and $cfg['parts']){ if($links=$this->Get_Sec($cfg)){ echo $links; }elseif($links=$this->Get_Main($cfg)){ echo $links; }else return ''; }else echo $ml->Get_Links(); } ?>