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

Отдых в Италия
Спрака о стране  
Полезная информация  
Как избежать неприятностей  
История  
Достопримечательности  
Туры по италии  
Города италии  
Курорты италии  
Развлечения  
Национальная кухня  
Русско-Итальянский разговорник  

Адриатика
Адриатика

  

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

Карта АдриатикиАдриатическое побережье, находящееся на "голенище" итальянского "сапожка", - один из самых популярных курортных районов Италии. Он славится своим мягким климатом, живописными пейзажами и самыми известными в Италии пляжами. Курорты Римини и прилегающих к нему Риччоне и Каттолики, а так же Линьяно, Милано Маритимо, Пезаро и Гроттамаре - это более 260 км побережья, спокойного, мелководного у берега моря, свыше 300 пляжей с мелким бархатным песком, идеально ухоженных и прекрасно оборудованных.

С точки зрения туризма курорты расположены почти идеально - отсюда легко можно совершать однодневные экскурсионные поездки в Рим (350 км), Венецию (200 км) , Флоренцию (210 км).

Для отдыхающих с детьми есть возможность посетить парки развлечений. "Италия в миниатюре" - тематический парк, находящийся между районами Римини Viserba и Torre Pedrera (автобус N 8 от железнодорожной станции Римини или Визербы). "Мирабиландия" - огромный парк развлечений, находящийся в 3 км от железнодорожной станции Lido di Classe - Lido di Savio, далее на бесплатном автобусе до парка. "Фьябиландия" - сказочный парк развлечений для детей. На автобусе N 9 от ж/д станции Римини, а от центра Римини или Риччионе на троллейбусе N 10 или 11 (остановка N 28). Большой аквапарк "Aquafan" находится в Риччионе и до него можно добраться на автобусе N 42,45,46,51, из района Римини Марино Чентро на автобусе N 11B.


НАСЕЛЕНИЕ

На курортах Адриатического побережья постоянно проживает немногим более 160 тысяч человек. Как только с завершением летнего сезона отсюда уезжают отдыхающие, курорты моментально превращаются в безлюдные провинциальные городоки, с закрытыми отелями и пустующими улицами. Такая "провинциальность" становится хорошо заметна с наступлением зимы.


КЛИМАТ

Климат на большей части Италии - субтропический средиземноморский, на севере - переходный к умеренному. Лето сухое и жаркое, средние температуры июля от +20 до +28°C, при южном ветре повышаются до +40. Зима мягкая, средние температуры января от 0°C на севере страны до +12 на Апеннинском полуострове и островах. Снег держится только в горах.

Таблица средних температур по месяцам на Адриатическомпобережье:
t°C (средняя)
Янв
Фев
Март
Апр
Май
Июнь
Июль
Авг
Сент
Окт
Нояб
Дек
Днем 6 9 13 18 22 26 28 28 24 20 13 8
Ночью 1 3 5 10 13 17 19 19 16 13 8 3
Вода 15 14 14 15 18 21 24 26 24 22 19 17


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


ОТЕЛИ

Адриатическое побережье занимает первое место в Италии по возможности приёма туристов. В настоящее время здесь насчитывается свыше 3 тысяч отелей и 15 тысяч вилл и апартаментов. Большинство отелей относятся к категории 2* и 3*, отелей 4* не более двух десятков, и всего один отель 5* (знаменитый "Гранд Отель" в Римини). Все отели -небольшие, городского типа и, как правило, не имеют своей территории как таковой, если, конечно, не считать за территорию небольшой садик-палисадник перед отелем или внутренний открытый дворик. Отель с номерным фондом в 80 комнат по местным меркам считается уже большим.

Отели и Пляж

КУРОРТЫ

ГАБИЧЧЕ МАРЕ
Габичче мареОмываемый морем, и обдуваемый ветрами, город с радостью встречает гостей. Этот современный курорт с хорошо развитой инфраструктурой развлечений расположен между Римини и Пезаро. Несмотря на то, что в городе всего около 100 отелей, на курорте множество ресторанов, баров, ночных клубов; аквапарки и парки развлечений курорта Римини - всего в получасе езды на местном автобусе.

Официальный сайт Габичче-Маре: http://www.gabiccemare.com/


ГРОТТАМАРЕ
ГроттамареПальмовая Ривьера - так называют этот городок, расположенный 200 км южнее Римини, на Адриатическом побережье. Дома и отели утопают в зелени пальм (отсюда и название), ухоженные набережные изобилуют различными кафе, где по вечерам устраиваются дискотеки, играет живая музыка. Здесь множество ресторанов и сувенирных магазинов. В городе прекрасно развита инфрастуктура - здесь расположены бутики ведущих итальянских дизайнеров, а также несколько многоэтажных супермаркетов. Есть корты, роллердром, 6-и километровая вело- и роллерная дорожка. Гроттамаре не раз принимал высокопоставленных гостей из России, так как его кухня имеет славу самой лучшей кухни на Адриатике, а красоте и ухоженности городских парков нет равных в Италии.

Еще одно из преимуществ городка - он расположен в недалеко от итальянстких производителей одежды, обуви и кожгалантереи, что дает возможность сочетать отличный отдых с персональным шоппингом -прямо в отеле русскоговорящими ассистентами Вам будет предложена возможность посетить склады, где представлены товары местных производителей. (поездки стоят от 10 до 20 ЕВРО).


КАОРЛЕ
КаорлеКурорт Каорле расположен на Адриатическом побережье Италии между Триестом и Венецией (50 километров). Знаменитый писатель и путешественник Эрнест Хемингуэй посвятил этому городку одно из своих произведений.

Традиционный рыбацкий городок, где история, культура и искусство связаны с морем. Каждое утро открывается рыбацкий рынок. Здесь можно приобрести как огромную рыбу-меч, так и различные виды кальмаров, лобстеров, мидий и других обитателей морских глубин. Отдельное место в итальянской кухне занимают "Фрукты моря", которые подаются в ресторанах Каорле приготовленными по различным традиционным рецептам: в кляре, на гриле, с итальянскими спагетти или так, как желает гость ресторана.

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

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

Для любителей активного отдыха: большой спортивный комплекс, гольф, теннис, виндсерфинг, водные лыжи.


ЛИНЬЯНО
"Моя маленькая Флорида", - писал Хемингуэй о Линьяно. Благодаря своему особому географическому положению его еще называют "пляжем Европы", а сами итальянцы считают "курортом номер 1" на Адриатике


ЛиньяноРасположенный в 90 км от Венеции, омываемый теплыми водами Адриатического моря, с великолепными песчаными пляжами, наполненный целебным воздухом соснового бора - этот замечательный курорт привлекает ежегодно тысячи туристов. К их услугам гостиницы от 2-х до 5-ти звезд, виллы, бунгало, апартаменты, молодежные центры, кемпинги.

Город разделен на три части: Линьяно Ривьера, Линьяно Пинета, Линьяно Сэббиадоро, каждая из которых неповторима и по-своему привлекательна.

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

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


МИЛАНО МАРИТТИМА
Милано МарритимаИмя это было дано здешним местам, расположенным в 30 км севернее Римини в сторону Венеции, богатыми миланцами, основателями города. Cовременный курорт - город-сад, окруженный сосновыми и кедровыми рощами, великолепное место для семейного и детского отдыха, с чистейшим воздухом, богатым йодом. Между отелями первой линии и пляжем нет никакой дороги, что встречается на некоторых итальянских курортах. Курорт известен своими центрами водо-, грязе-, солелечения. Для любителей активного отдыха предлагается масса развлечений: весь сезон открыты спорт, гольф- и яхт-клубы, школы верховой езды, всегда в распоряжении туристов самые известные дискотеки на Адриатике - "ПИНЕТТА" и "СТОРК", аквапарк "АКВАБЕЛЛ" (Беллария), занимающий 75.000 кв.м, с утопающими в зелени водными аттракционами, курсами подводного плавания, игровыми залами. В 5 км от Милано Мариттима расположен самый известный парк развлечений "МИРАБИЛАНДИЯ", где представлено более 40 видов аттракционов.


ПЕЗАРО

ПезароПезаро - уютный средневековый город (12-14 века) на Адриатическом побережье со своеобразной историей. Здесь есть постройки времен римской империи - Арка императора Августа. Пезаро - родина великого композитора Россини, и ежегодно в августе проводится международный фестиваль Россини.

Из Пезаро у Вас есть возможность поехать на экскурсии в сказочную Венецию, в республику Сан-Марино, в средневековый город-крепость Урбино - родину Рафаэля, во Флоренцию и в Рим, а также посетить парк "Италия в миниатюре".

К Вашим услугам многочисленные дискотеки, бары, рестораны, магазины, лунапарки и детские городки, водные аттракционы в аквапарке "Аквафан"

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

Город известен как родина композитора Джоакино Россини. Здесь прекрасно сохранился старинный центр: Герцогский дворец, крепость, старинный порт, средневековые церкви и соборы XIII - XV веков. Также стоит посетить картинные галереи и музеи, в том числе знаменитый музей истории керамики центральной Италии и Дом-музей Россини. В течение всего летнего сезона в оперном театре и на концертных площадках выступают певцы и музыканты. В распоряжении отдыхающих прекрасные песчаные пляжи, спортивные и развлекательные мероприятия, парки и элегантные магазины.

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

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


РИЧЧОНЕ
РиччонеЭто живой итальянский город, на территории которого находится множество построек, созданных древними римлянами, но только в 1865 году, с сооружением железной дороги, Риччоне становится знаменитым курортом с прекрасным шестикилометровым ухоженным пляжем. С тех пор история туризма города знает только успех и быстрый рост, отдавая предпочтение качеству. В настоящий момент Ричионе является прекрасным светским уголком отдыха, где хорошая кухня сочетается с многочисленными развлечениями и оздоровительными мероприятиями, где бьёт ключом творческая и концертная жизнь международного класса.

В Риччоне насчитывается 500 гостиниц и 4 кэмпинга. Город всегда был, есть и будет местом для элитной публики, благодаря фешенебельным виллам, комфортабельным гостиницам, большому количеству зелени - здесь открыто пять прекрасных парков. Неслучайно этот курорт зовут "Зелёной жемчужиной Адриатики". Центральная улица Виале Чеккарини закрыта для проезда автомашин. Вместо асфальтового покрытия, мостовая вымощена кварцевой брусчаткой, белыми и розовыми мраморными плитами. Здесь Вы найдёте самые изысканные магазины, бары, кафе, а также элитную и экстравагантную публику, где знаменитости теряются в толпе. Виале Чеккарини считается самым модным и элегантным салоном всего Адриатического побережья, центром летней светской хроники, местом встречи приезжих из различных стран. В конце дня, с наступлением прохлады, улицы города, где царит весёлая праздничная атмосфера, наполняются отдыхающими. Можно послушать музыкантов, играющих прямо на площади или посмотреть на художников, рисующих свои картины на глазах у прохожих. Одним словом, Ричионе - это единственный в своём роде и неповторимый курорт.

Водные развлечения в Риччоне:
Аквапарк в РиччонеАквапарк "АКВАФАН" - самый большой аквапарк в Европе. В нем имеются 5 бассейнов с подогревом, самый большой - это океан в миниатюре 2800 кв.м с широкими как реки горками. Есть зона с детскими аттракционами. Зона солярия, бассейны с гидромассажем, спортивные залы. Искусственный пляж с оборудованными площадками для: волейбола, баскетбола, футбола, катания на роликах; здесь есть курсы погружения с аквалангом и курсы подводного плавания, ночное купание и дискотеки. И многое другое. Аквапарк открыт с июня по начало сентября. Стоимость билета примерно 16 ЕВРО.

Аквапарк "БИЧ ВИЛЛЭДЖ"- расположен непосредственно на пляже, предлагает бассейны с подогревом, водные горки. Услуги парка: коллектив профессиональных массовиков, пляжный волейбол, аэробика, курсы плавания, водные мотоциклы, серфинг, катамараны, бассейн и игры для детей и др. Период работы июнь - начало сентября в дневные часы. Стоимость билета примерно 8 ЕВРО.

ДЕЛЬФИНАРИЙ в Риччионе - представления с участием дельфинов, тематические выставки, просмотр видеоматериалов, коллекции флоры и фауны Средиземноморья. Дельфинарий открыт с марта по сентябрь. Стоимость билета примерно 8 ЕВРО.

В Риччоне находятся термальные источники - Riccione Terme ("Риччионе Терме"). Четыре вида вод - сернистые, соляные, бромисто-йодистые, марганцовистые, а также прием минеральных вод, ингаляция, грязевые и водные процедуры, массаж и промывания превратили этот профилакторий Риччионе в одно из самых знаменитых мест термальной терапии в Европе. К профилакторию присоединился оригинальный центр здоровья, красоты и эстетико-термальной медицины. Термальный сезон - круглый год. Выходные дни - воскресенье и праздники.

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


ЧЕРВИЯ
ЧервияПрохлада зеленых сосен и морской бриз, термальные воды, неглубокое у берега море и мягкий теплый песок характеризуют этот адриатический курорт. Червия славится тысячелетней историей соляных копей, являвшихся в древности источником богатства, за которые велись кровопролитные войны еще во времена Древнеримской империи. Сосновые рощи были посажены еще древними римлянами с целью постройки средиземноморских флотилий.

Из Червии Вы можете за двадцать минут добраться до Равенны - древней столицы Италии. Это настоящий ларец великолепных византийских памятников, в особенности собор Сан Витале и восьмиугольный мавзолей Галлы Плацидии. В 5 километрах от Равенны расположен памятник византийской архитектуры - базилика Сан-Аполинаре с великолепными мозаиками.

Вам и Вашим детям доставит много радости посещение "Мирабиландии" - крупнейшего на побережье лунапарка и аквапарка "Атлантика" в Чезенатико.

Вы можете выбрать один из уютных отелей в Червии или близлежащих курортах Милано Мариттима и Лидо ди Савио.


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

РимминиДостопримечательности в Римини:
КАФЕДРАЛЬНЫЙ СОБОР
АРКА АВГУСТА
МОСТ ТИБЕРИ
КОРАБЛЬ ФЕЛЛИНИ

Близость к курортам Адриатического побережья таких известных экскурсионных городов как Флоренция, Венеция, Верона, Равенна, Феррара и государства Сан-Марино, подарит Вам удивительную возможность посмотреть всю Италию за один визит. Подробнее cм. в разделе “Экскурсии”


РАЗВЛЕЧЕНИЯ

Дельфинарий в РиччинеВ период пребывания на Адриатике можно посетить следующие интересные места:
Дельфинарии (в Римини и Риччионе)
Парк аттракционов "Fabilandia" (в Мирамаре)
Парк под открытым небом "Италия в Миниатюре" (в Визербе)
Парк водных аттракционов "Aquafan" (в Риччионе)





ПЛЯЖИ

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

Официально купальный сезон открывается 1 мая и заканчивается 30 сентября. Каждый пляж имеет хозяина, который обеспечивает его чистку, арендует пляжные зонты, шезлонги и кабины для переодевания. Пляжные зонты расположены рядами. Тарифы для туристов за пользование пляжным оборудованием зависит от ряда (ближе - дальше от моря) и от продолжительности проката (существуют пакеты скидок на недельный и более прокат). В среднем прокат шезлонга и зонта на неделю - 35 ЕВРО. В эту стоимость входит пользование волейбольной площадкой (мяч у смотрителя пляжа - бесплатно), баскетбол, бандбинтон, небольшой фитнесс - зал, которым располагают практически все пляжи, душ на плаже, туалет.
В каждом городе имеются просторные свободные пляжи, без оборудования, открытые для всех желающих.


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