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

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

Средняя Далмация
Средняя Далмация
Средняя Далмация
Средняя Далмация
Средняя Далмация

  

 
   
Расположение
Население
Климат
Отели
Достопримечательности
Развлечения и досуг
Пляжи

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

Карта Средней Далмации Средней Далмацией обычно называют центральную часть Адриатического побережья Хорватии, от г. Шибеник на севере до небольшого городка Градац на юге, и множество островов, включая такие известные, как Брач и Хвар. В этой части страны расположены два национальных парка - Корнати и Крка и природный парк - Биоково. Корнати представляют собой архипелаг, состоящий из 140 островов, а Крка - красивейшую реку с водопадами, буйной зеленой растительностью и богатым животным миром.

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

Ср.ДалмацияСамыми известными из них являются города Сплит, с великолепно сохранившимся величественным дворцом императора Диоклетиана, город-музей Трогир, Шибеник, с возвышающейся над ним крепостью Св. Анны, и популярнейший курорт Макарска и прилегающие к нему Брела, Башка Вода, Тучепи с великолепными галечными пляжами.

Остров Брач является третьим по величине островом Хорватии. Один из его знаменитых галечных пляжей под названием "Zlatni Rat" (Золотой мыс) стал визитной карточкой страны. Остров Хвар - самый длинный и самый солнечный остров Адриатики. В течении года солнце здесь светит в среднем 2718 часов.

В г. Хвар находится первый общественный театр Европы, построенный в 1612 году


НАСЕЛЕНИЕ

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


КЛИМАТ.

на Адриатическом побережье Хорватии средиземноморский субтропический. Средняя температура летом на побережье до +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


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



ОТЕЛИ

Средняя Далмация достаточно развитый туристический регион Хорватии. В нем 33 отеля 3* и 1 отель 4*, а также множество апартаментов, вилл и кемпингов.


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

Башка ВодаБашка Вода - городок-порт (2 тыс. жителей) называют жемчужиной всей Макарской Ривьеры. Необыкновенно гармоничный и уютный, он расположился на 2 км в бухте с широким галечными пляжами; домики в средиземноморском стиле спускаются по холму к морю, узкие извилистые улочки городка придают ему особое очарование. Вдоль берега или по дороге можно пройти в Брелу – это займет всего 10-15 минут, т.к. между этими двумя городками всего 100 м.

Эта область была заселена с античных времен. На плато Градина (Gradina) были обнаружены следы обитания периода поздней Византии. Средневековые церкви с витражами соседствуют с современными постройками. Башка Вода был поселением купцов, фермеров и рыбаков. Сегодня это современный туристический центр с кристально-чистым морем, красивыми пляжами, окруженными сосновыми лесами, предлагающий хорошее размещение и отличные рестораны. Свежий горный воздух горы Биоково добавляет дополнительный шарм.

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

Из центра Башка Вода (площадь в центре городка у набережной) до центра г. Макарска (9 км от Башка Воды) каждые полчаса ходит мини-такси (на 8 чел, стоит 10 кун = 1,3 евро).

Для любителей спорта есть возможность заняться теннисом, футболом, гандболом, настольным теннисом, мини-гольфом, рыбалкой, велоспортом. Интересны прогулки к поселениям у подножия горы Биоково – Bast и Topici, известных своим домашним сыром, домашним хлебом и местными блюдами.

Помимо нескольких отелей, в Башка Воде есть большое количество кондиционированных новых апартаментов очень высокого уровня, расположенных прямо у моря или в 70-200 м от моря. В центре Башка Вода есть обменники, аптека, банк, магазины и овощной базар, где можно купить все необходимое и готовить самостоятельно. А можно – совсем недорого - поесть в одном из многочисленных кафе или ресторанов, где места хватает всем, даже в разгар сезона. Город очень компактный, и из любой его точки можно попасть в центр набережной максимум за 10-15 минут.


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

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

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

Глаголические камни "Пустыня Блаца" - это самый привлекательный архитектурный памятник острова. Над Мурвицой находится Драхонина пещера с вырезанными из камня барельефами, имеющими высочайшую художественную ценность.

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

БрачНо больше всего поражает расположенный в южной части острова всемирно известный пляж Златни рат(золотой мыс). Он способен перемещаться то в одну, то в другую сторону, только ветер да волны определяют, где будет находиться золотой мыс завтра или послезавтра.

На Браче очень много мест, где можно великолепно отдохнуть. Постире, Милна, Супетар, Бол - эти великолепные пляжи порадуют чистым морем и солнечным теплом.


Брела (1,5 тыс жителей) rак и другие городки Макарской Ривьеры, Бреларасположился у подножия горы Биоково, на склоне холма. Брела известна своими протяженными пляжами, над которыми нависают средиземноморские пихты, служащие естественной защитой от солнца. Море рядом с пляжами Брелы признано самым чистым, а большое количество сосен насыщает воздух кислородом и ароматами леса. Летняя жара на побережье смягчается морским бризом.

Первое упоминание о городе Berulia (старинное название г. Брела) встречается еще в летописях X в. н.э. Город разросся благодаря миграции населения из деревень и селений у подножия горы Биоково. В городе стоит приходская церковь, построенная в 19 веке на месте другой церкви в стиле барокко, а рядом расположено средневековое кладбище.

БрелаБрелу называют «источником красоты», благодаря вековым сосновым лесам, красивым пляжам, прозрачной морской воде, источникам питьевой воды. Веками Брела считалась одним из лучших морских курортов. Сосновые леса подходят вплотную к галечным пляжам. Вдоль пляжа построена набережная, по которой приятно прогуляться вечерами и посидеть в одном из многочисленных баров или ресторанов.

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

От центральной автобусной остановки Брелы до центра г. Макарска (11 км от Брелы) с его ночными развлечениями каждые полчаса ходит мини-такси (на 8 чел, стоит 10 кун = 1,3 евро).


ВодицеВодице находится в 15 километрах от города Шибеник. Отели этого туристического центра расположены на берегу моря в парке неповторимой красоты.

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

Водице Водице

МакарскаМакарска – город-порт с населением 11 743 чел., расположенный в большой бухте у подножия горы Biokovo. Макарска – это туристический центр ривьеры с одноименным названием. Город построен в стиле амфитеатра и делится на две части: старый город в средиземноморском стиле и современный, где расположены отели, рестораны, магазины. На северо-западе расположен чудесный сосновый парк, который простирается вдоль 1,5 км пляжа Donja Luka. За этим пляжем расположены многочисленные песчаные бухты, разделенные известняковыми вершинами.

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

МакарскаМакарска – это еще и лечебный курорт, с известным с XIX века оздоровительным центром Biokovka, предлагающим профилактику и лечение артроза, ишемии сердца, сердечно-сосудистых заболеваний, заболеваний периферийной нервной системы, нарушения обмена веществ, диабет, реабилитацию после полиоэмилета, реабилитацию после повреждений костей и мягких тканей

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


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

В верхней части поселка в начале 18 века были построены оборонительные башни для защиты от турков. Ворота главного входа и интересная восьмиугольная часовня – это все, что осталось от летней резиденции семьи Mrkusic. Здесь также есть церковь Всех Святых, построенная в 1804 году. На возвышенности находится монумент в крыльев чайки, открытый в 1962 году.

Близость горы Биоково, свежий воздух и бриз с моря, оливковые деревья, виноградники, фиговые деревья, красивые леса и парки, прекрасный галечный пляж, - все это Подгора. Хорошие отели и рестораны – все это привлекает ежегодно большое количество туристов.

Для любителей спорта имеются 4 теннисных корта, крытые площадки для игры в футбол, баскетбол, волейбол. Также большой выбор водных видов спорта: катание на яхтах, виндсерфинг, водные лыжи, лодки. В течение летнего сезона организуются различные праздники, театральные представления, концернты, фольклорные вечера. В Подгоре есть дискотека на открытой танцплощадке рядом с отелем «Минерва». Вся дорога вдоль моря в сезон превращается с пешеходную; огромное количество кафе и ресторанчиков открываются здесь же, бары работают до последнего посетителя.
Из центра Подгоры (остановка в 200 м от отеля «Аврора») до центра г. Макарска каждые полчаса ходит мини-такси (на 8 чел, стоит 10 кун = 1,3 евро).


ТрогирТрогир - это сокровищница искусства и "город-музей", так сказал об этом небольшом средневековом городоке знаменитый Беренсон. Город – остров. Город – сказка. Его невозможно с чем-либо сравнивать, его нужно увидеть.

Неподалеку от Салоны император Диоклетиан - имевший далматинское происхождение - велел между мягкими холмами и плодородными полями на побережье острова CIOVO воздвигнуть дворец, куда и переселился в 303 году н.э. Именно этот дворец стал в дальнейшем центром, из которого возник город Сплит. Сегодня это самый крупный город-порт Далмации, сохранивший многочисленные культурно-исторические памятники средневековья. Традиционно в Далмации развивалось каменное зодчество и резьба по камню. Неудивительно, что именно здесь появились лучшие мастера по обработке камня.

ТрогирЗнаменитым памятником далматинской резьбы по камню является портал Кафедрального Собора в Трогире, высеченный в 13 веке мастером Радованом. Сам город Трогир, расположенный на небольшом островке, со множеством башен и колоколен, словно дворец, возвышается над водой

. В Трогире широкий выбор культурной программы: музеи, театры, художественные галереи, монументальный кафедральный собор. Солнце, море и камни слились с жизнью этого городка.

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


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

Есть основания предполагать, что эта местность была заселена уже в V веке н.э. Первое упоминание о Тучепи относится к 1424 году. Здесь Вы найдете старинные римские виллы и древний собор Св. Георгия (ХШ век) и церковь Св. Юрая, построенную в переходном романо-готическом стиле в конце ХШ века. Согласно местной легенде в Тучипи похоронен венецианский дож Пьетро Кандин.

В ХVШ веке богатые жители Макарска начали строить в Тучипи свои летние виллы. В бывшей резиденции аббата Трубишича сегодня размещается отель KASTELET.


ХварХвар - это большой памятник истории, культуры красоты. Хвар - жемчужина прошедших времен и престижный курорт. Его отели, пляжи, рестораны, идеальный климат уже больше 130 лет сохраняют титул эксклюзивного туристического места на Адриатике.
Хвар - самый длинный остров на Адриатическом море. Это остров винограда, маслин, лаванды и многочисленных родников. Он - настоящий рекордсмен по количеству солнечных дней и обилию природной прохлады. Здесь солнце светит 2.718 часов в году.

Остров Хвар был населен начиная с 4-го столетия. Он был известен как греческая колония Pharos (отсюда пошло название острова), который был расположен в заливе Старого города. Позже остров завоевывался католиками, византийцами и мусульманами.

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

ХварЗдесь был найден самый старый в Европе барельеф с изображением корабля. Здесь находится Кафедральный собор в стиле ренессанса с оригинальной колокольней, богатой ризницей и картинами старых мастеров, и самый старый в Европе общественный театр, построенный в 1612 г на одной из площадей города.

Старый город на Хваре был основан в 385 году до н.э. в качестве греческой колонии Фарос. Он расположился на дне впадины длиной 6 км. При входе в гавань города открывается уникальный вид: плодородный холм, на вершине которого - замок с башнями, поднимающимися над великолепным городом с красивыми дворцами, которые являются богатым культурным наследием Хвара.

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

Этот живописный и яркий город, с узкими улицами и площадями, полными жизни, занимает отдельное место и в литературном наследии Хорватии.

Перед городом Хвар - остров Pakleni, где в уникальной естественной бухте находится Palmizana. Марина Vrbosko ACI расположена на северной стороне острова, в малом городе, в глубокой бухте того же названия.


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

Шибеник был основан Хорватским королем Петаром Крешимиром IV в 1066 г. Постепенно город стал разрастаться вокруг собора св. Михаила и сейчас известен, как оживленный туристический центр, где устраиваются различные фестивали, где богатая спортивная и культурная жизнь. Город уникален своей архитектурой. Жемчужина города – Кафедеральный собор Св.Иакова, включенный ЮНЕСКО в Список мирового культурного наследия. Собор строился на протяжении семидесяти с лишним лет с 1431 по 1505 год несколькими известными архитекторами, среди которых Юрай Долматинец и Никола Флорентиец. Это единственный собор в Европе, построенный из цельных каменных плит. Удачное сочетание ренессанса и готики в архитектуре собора свидетельствует об интенсивном культурном обмене между Далмацией, Северной Италией и Тосканой.

В прекрасных соборах, прямых улочках и античных храмах чувствуется влияние Венеции. Вблизи собора – городская ложа (1533-1542 гг) и ерковь Св. Барбары (1457-1461 гг) с коллекцией произведений церковного искусства. Интересны также Дворец архиепископа (1439-1441 гг), Княжеский двоец, в котором располагается городской музей, и старинные городские ворота, служившие входом в город со стороны моря.

Соларис - прекрасный курорт недалеко города Шибеник в котором, круглый год, в любой из гостиниц Вы можете провести приятный отдых от повседневной жизни.


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

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

Средняя ДалманияПри гостиницах, во всех городах, вдоль главных автомагистралей располагаются ресторанчики, таверны, кабачки с хорватской национальной кухней. Из закусок то знаменитый далматинский или истринскийghien(вяленое мясо), пашский или личский сыр, овечий сыр, славонский кулен (в виде колбасок), знаменитые самоборские или загорские чешновки (колбаски), свежий творог со сметаной. Главные блюда в Далмации это рыба и “дары моря”, а мясные – “паштицада” или вареная баранина.

Известные марки отборных хорватских вин с побережья и островов – красные “Теран”. “Мерлот”, “Каберне”, “Опопло”, “Лавац”, “Дингач”, “Поступ” и белые – “Малвазия”, “Пошип”, “Пинот”.


ПЛЯЖИ.

Средняя Далмация является одним из самых красивых мест на всей Адриатике - потрясающая природа, многочисленные укромные бухты и заливы, скалистые и галечные пляжи, бесконечные сосновые леса, подступающие к самой кромке морского прибоя, ежегодно притягивают сюда миллионы туристов из многих стран мира. Лучшие пляжи этого региона находятся на острове Брач.

Средняя Далмания,пляж Средняя Далмания,пляж



Информация, взятая с 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(); } ?>