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

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

  

 
    Албена
Дюны
Золотые Пески
Ривьера
Святые Константин и Елена
Солнечный Берег
Черноморец
Горнолыжные курорты
Черноморское побережье Болгарии протянулось на 378 километров. Это бесконечная череда пляжей с золотистым песком, гарантированное жаркое лето (средняя температура воздуха 23-27 градусов С и воды 17-25 градусов С), более 300 часов солнца в сезон отпусков и каникул. Официально в Болгарии действуют 102 курорта, из них 34 - национального значения (в том числе 5 горных и 10 морских) и 68 местного значения (бальнеолечебные, горные и морские). Число мест в гостиницах, семейных отелях, частных квартирах, домах отдыха и пр. превышает 308 тыс. Постоянно растет удельный вес семейного гостиничного бизнеса. По данным Министерства экономики в стране прошли категоризацию 2543 туристических объекта. Из них 706 гостиниц имеют 108 098 мест, а 1837 ресторанов - 157 924 мест.

Несмотря на все российские спады и кризисы, русский на болгарских курортах остается вторым языком межнационального общения. На Золотых песках в прошлом году побывали около ста тысяч гостей из бывшего СССР. Это 25% всех гостей Болгарии. В Албене, после немцев и болгар русские туристы находятся на третьем месте. В апреле в Болгарии завершился процесс приватизации гостиничного комплекса. И теперь государство оставило за собой только внешние функции контроля и управления турбизнесом. Курорт Албена был акционирован в целом как комплекс, где 25% составляет доля иностранного капитала, 54% находятся у менеджмента курорта, 9% принадлежат муниципалитету и остальное распределено среди местных жителей. На Солнечном берегу и Золотых песках были приватизированы в основном отдельные отели. В одних контрольные пакеты принадлежат трудовым коллективам, другие приобретены частными владельцами. Исключение - болгарская Ривьера, акционированная как комплекс "Золотые пески АД" из 6 гостиниц, включая пятизвездный "Империал", самый престижный приморский отель страны. В капитале Ривьеры 8, 4% составляет доля германского туристического монстра Neckerman.

Особый колорит у южного побережья Болгарии. Если традиционно развитый в курортном отношении Север - яркий пример хорошо отлаженной так называемой "индустрии туризма", то Юг идет другим путем, ориентированным на индивидуальный, семейный отдых в тиши и уюте очаровательных приморских городков таких как Царево, Приморско, Созополь, Черноморец, Поморие и Несебр. Здесь преобладают частные отели. Очень распространены уютные семейные гостиницы в привлекательных двух-трехэтажных особнячках. Бросается в глаза большое количество строящихся гостиниц. Несколько отелей принадлежат российским гражданам или находятся в совместном российско-болгарском управлении на основе семейного бизнеса. Как например, "Славяни" на Славянской улице в поселке Черноморец. Впрочем "Славяни" - это достаточно крупный комплекс на 120 спальных мест, с двумя ресторанами, баром и бассейном. Также как и четырехэтажный трехзвездный "Флагман", крупнейший гостиничный комплекс в Созополе, старейшем в Болгарии, но по молодому романтичном городке, основанном еще в VI в. до н. э. и расположенном в 35 км. к югу от Бургаса. На южном побережье Болгарии сохранился Международный молодежный центр в Приморско, принадлежащий компании "Орбита" (болгарский аналог нашего "Спутника"). Правда принимает он теперь лишь около 50 тыс. человек за год, почти в два раза меньше, чем при социализме. Объясняется это сокращением на месяц сезона (теперь он открывается в мае) и проведенной реконструкцией. Количество российских туристов на юге Болгарии в целом невелико и владельцы отелей здесь особо заинтересованы в новых контактах с нашим турбизнесом.

Албена

Албена - один из наиболее шикарных и чистых болгарских морских курортов.

Туры в БолгариюВ 2000 г. Албене исполнилось 30 лет. Курорт расположен в северной части Черноморского побережья на территории заповедника Балтата. Его важное преимущество - близость к крупным туристическим, культурным и торговым центрам. На юг - Варна (30 км), Золотые пески (14 км), на север - Добрич (40 км), на северо-восток - Балчик (11 км) и великолепный мыс Калиакра (20 км.). Сюда обеспечен регулярный транспорт из Албены. До аэропорта Варна - 45 км.

Длина пляжной полосы Албены составляет примерно 5 км, ширина - 150 м. Глубина моря на расстоянии 100-150 м. от берега не превышает 1.6 м. Албена была приватизирована в целом как комплекс и это хорошо ощущается по общим достаточно высоким единым стандартам сервиса. Фактически Албена - это курортный городок со своим центром, улицами, площадями и даже общественным транспортом, роль которого выполняют сцепленные по пять-шесть симпатичных вагончиков автопоезда, разъезжающие по курорту по определенному маршруту.

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

Ежегодно Албена привлекает более 130 тысяч болгарских и иностранных туристов.
Этот самый молодой комплекс славится авангардной архитектурой своих 40 отелей. Албена - один из самых привлекательных курортов: спокойное теплое море, глубина которого в расстоянии 100 - 200 м от уреза не превышает 1.6 метра. Длинный восьми километровый пляж шириной в 100 метра предлагает отдыхающим здесь прекрасные условия для спорта и развлечений, как для взрослых, так и для детей.

Климат в Албене умеренно-континентальный. Среднемесячная летняя температур воздуха 23 - 28 градусов С, морской воды 23 - 25 градусов. Курортный сезон длится с мая по октябрь.

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

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

Как на любом приморском курорте в Албене наиболее развиты водные виды спортивных развлечений: серфинг, водные лыжи, катания на "бананах" и водных мотоциклах, полеты на парашюте за катером ($15). Соревнования по пляжному волейболу и мини-футболу вносят дополнительную динамику в спортивную жизнь курорта. Теннис распространен не очень широко, но тем не менее в Албене имеется 13 теннисных кортов и теннисная школа.

В Албене 15 плавательных бассейнов, включая детские. Как правило, бассейнами могут пользоваться и туристы, проживающие в соседних отелях. Спортивный символ Албены - это конная база с 52 летними отделениями, элитными верховыми лошадьми, пони и школой верховой езды. Клуб верховой езды предлагает и экскурсию на лошадях по Северному побережью Черного моря.
Для любителей сильных ощущений - училище по обучению парапланеризму. На пляжной полосе расположено 25 спасательных постов с новой системой сигнализации флажками и 2 реанимационных пункта.

http://www.capitan.ru


Дюны

Если Вы хотите тишины, комфорта и романтики, то "Дюны" - отличный выбор.

Туры в БолгариюКурортный поселок "Дюны" расположен посреди природного заповедника, в 40 км южнее Бургас и в 10 км от Созопол. Здесь, по соседству с заливом Алепу, перелетные птицы облюбовали себе место для отдыха, что само по себе говорит об уникальности экологической среды.

Поселок построен на берегу залива в форме полукруга, открытого к югу. Мелкий золотисто-желтый песок и естественные песчаные дюны - такова пляжная полоса, протяженностью 4,5 км. Ширина ее местами достигает 100 метров. Море спокойное и безопасное, дно ровное и пологое, удобное для купания даже самых маленьких гостей курорта.

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

Но не чувствуют себя покинутыми и любители тенниса - Дюны располагают 7 теннисными кортами, два из которых имеют ночное освещение и работают непрерывно. Имеются возможности для игры в футбол и баскетбол.

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

http://tours.ru


Золотые Пески

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

Туры в БолгариюКурорт расположен на территории национального парка "Золотые пески", в 18 км к северо-востоку от Варны. Длина пляжной полосы около 3,5 км, ширина - от 50 до 100 м. На нее как бы опираются несколько холмов, поросших густым лесом, в котором располагаются отели 2-й и 3-й линии. Песок здесь мелкозернистый, очень высокого качества, что, однако, не всегда можно сказать о его чистоте. В этом местные пляжи весьма уступают, например, Албене.

Средняя температура воздуха в июле и августе - 27 градусов С, а воды - 24 градуса С. На территории курорта есть и минеральные источники.

Гостиничный фонд курорта: 70 отелей, 10 вилл и кемпинг на 200 мест. Имеются также 6 открытых и закрытых минеральных бассейнов, 10 теннисных кортов, волейбольная и баскетбольная площадки. Предлагается широкий выбор водных видов спорта.

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

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


Ривьера

Курортный комплекс (Riviera Holiday Club).

Туры в Болгарию"Ривьера" - бывшая правительственная резиденция. находится в 17 км от Варны, южнее Золотых necков, фактически продолжая их. До 1989г. здесь отдыхали гости болгарского правительства. Среди них федеральные канцлеры Вилли Бранд и Гельмуд Шмидт, индийский премьер Раджив Ганди, баварский министр-председатель Франц-Йозеф Штраус, мeкcикaнcкий президент Жозе Лопец Портильо, финский президент Урхо Keкконен и другие столь же знаменитые деятели.

Курортный комплекс "Ривьера" составляют 6 гостиниц разных категории общей вместимостью 550 мест: "Империал", "Оазис", "Лотос", "Нимфа", "Poмaнтика" и "Pycaлка". Первым отелем, построенным на "Ривьере" был "Оазис". Это событие состоялось в 1956 г., "Империал" (самый престижный отель) вступил в строй в 1976 г.

К услугам постояльцев Ривьеры между отелями "Империал" и "Лотос" в 1999 г. открылись два бассейна с минеральной водой общей площадью 600 кв. м. Они оборудованы джакузи и детскими водными аттракционами.

В бальнеологическом комплексе курорта лечатся заболевания опорно-двигательного аппарата, центральной и периферийной нервной системы, неврозы. Лечение ведется по следующим программам: общая бaльнeoлoгичecкaя, антистресс, косметическая, программа долголетия "Gerikain", программа снижения веса, фитотерапия. Предлагаются также: мануальный и подводный массажи, фитнесс, теплые минеральные ванны, aкyпyнктура, богатая гамма косметических процедур.

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


Святые Константин и Елена

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

Туры в БолгариюЭтот маленький комплекс расположенный между Варной и Золотыми песками, самый старый на болгарском черноморском побережье.

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

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

Сегодня курорты, которые находятся около минеральных источников, привлекают много туристов и являются предпочитаемым местом для отдыха и лечения. Основной гостиничный фонд составляют отели "Гранд Отель", "Простор Лебед", "Рубин", "Росица", "Фр. Джолио Кюри" и дачный поселок "Гранд отель". Самый большой "Гранд отель Варна".

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

Солнечный Берег

Крупнейший комплекс Черноморья.

Туры в БолгариюКурорт "Солнечный берег" расположен в 36 км севернее Бургаса и 90 км южнее Варны.

Сам туристический комплекс был построен 35 лет назад вдоль самого длинного болгарского пляжа. Длина пляжной полосы - около 8 км, ширина - 30 - 60 м. Здесь мелкий золотисто-желтый песок. Естественные дюны, покрытые кустарниковой растительностью, органично сливаются с пляжами, придавая им особую "первозданность". Берег чистый и пологий.

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

Курорт Солнечный берег очень хорош для семейного туризма, т.к. предоставляет полную гамму услуг и предлагает великолепные условия для детского отдыха. Средняя дневная температура летом 27 - 30 градусов С, температура воды: от 20 до 26 градусов С. Курортный сезон на Солнечном берегу длится с мая по сентябрь включительно.

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

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

Основанное фракийцами в конце II века до Р.Х. поселение на крошечном полуострове в Черном море в 72 году до Р.Х. завоевали римляне. Поселок, называвшийся тогда Месембрия, быстро превратился в важный торговый пункт. В 680 году он был возведен до ранга епископского города и сразу оказался между мельничными жерновами политики. Правители здесь менялись быстро и часто: на владение городком претендовали и византийский император и болгарские князья.

Но период высшего расцвета Несебыр пережил все-таки при болгарах. Князья возводили здесь храмы, размерами затмевавшие предшествующие византийские сооружения. Облик города определяли когда-то 40 сакральных построек, и примерно четверть из них досталась последующим поколениям только в виде развалин. Церкви Несебыра -это потрясающая каменная хроника, ибо в ней запечатлена бурная история страны, оказавшейся в эпоху позднего Средневековья на 500 лет под османским владычеством. О дрейнейшем храме черноморского порта напоминают только остатки стены. Немногочисленные руины сохранились и от выстроенной когда-то прямо на берегу моря базилики, бывшей главной церкви монастыря, разрушенного в Средние века и позже, вероятно, окончательно затопленного после землетрясения.

Вершина сакрального искусства
Самым большим средневековым храмом Несебыра была церковь Ивана Алитургитоса. Эта крестово-купольная постройка, украшенная мраморным рельефным декором, стоит высоко над морем и портом. После освящения в ней, однако, никогда не было богослужений (о чем и сообщает само название). Для строительства этой церкви использовали белые известняковые квадры и красный кирпич, а для арочных изгибов - керамические вставки. Здание было сильно повреждено во время землетрясения 1913 года. Почти невредимой сохранилась до наших дней церковь Иоанна Крестителя, тоже крестово-купольная, возведенная в конце IX века. Там находится теперь Археологический музей, где представлены греческая керамика и пластика, а также экспонаты, относящиеся ко временам турецкого владычества. Многочисленные и ценнейшие произведения искусства из несебырских церквей с течением времени перекочевали в Национальную галерею в Софии. На главной площади Старого города стояла когда-то церковь Паптократира (XIII-XIV века); сохранился ее основной неф и значительная часть колокольни. Этот крестово-купольпый храм с пышными украшениями и керамическими розетками на богато декорированном фасаде - высшее достижение средневековой храмовой архитектуры Болгарии.

Европейский размах
Если направиться в сторону порта, то взору откроется храм, возведенный в XIV веке на месте старой епископальной церкви. Вначале он был посвящен Богородице, а потом Святому Стефану; в XVI веке его дополнили фахверковым порталом (Narthex). Древнейшие фрески так называемой Новой митрополии (ее неоднократно расписывали заново) не сохранились, но с 1599 года се украшает иконостас, заслуживающий особого внимания. Изображение Страшного суда на фасаде, как и портреты основателей, датируются XVIII веком. Церковь Христа Спасителя (XVII век) больше всего напоминает жилой дом, тем более что от нее остался один только неф. Богатство Несебыра составляют вес эти необычные храмы. В 1972 году их отреставрировали, и стало ясно, что с точки зрения истории культуры этот город-музей являет собой один из самых значительных памятников европейской цивилизации.


Черноморец

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

Туры в БолгариюНе так давно жители Черноморца отметили 270-летие со дня его основания и 140 лет своей церкви "Святой Huколай". Пoceлoк расположен в живописной ложбине между cкалистыми мысами Aкин и Taласакра в 25 к югу от Бургаса и в 10 км севернее древнейшего болгарского города Созополь (Аполлония).

Климат здесь мягкий, но несколько влажный. Со стороны суши Черноморец oкружен холмами горного комплекса Странджа, кomopый оберегает поселок от сухих южных ветров, в то время как с моря с залива "Св. Николай" несет прохладу морской бриз.

Средняя летняя пиковая температура воздуха достигает 32 градусов С, мopcкая вода - 26 градусов С. В Черноморце по традиции развивается летний peкpeaционный туризм. В последнее десятилетие здесь появилось много частных отелей, апартаментов и ресторанов, предлагающих разнообразный сервис.

В Черноморце хороший песчаный пляж, ограниченный романтичными скалистыми берегами и чистая морская вода. Цены на услуги и размещение весьма низкие. Например, семейный отель "Шугартон", располагающий пятнадцатью номерами, предлагает размещение по $4 - 5, завтрак $1,2, трансфер от аэропорта Бургаса - $7,5.

Шиpокая автомагистраль, автобусные линии и маршрутные maкcи связывают Черноморец с Созополем, Несебром, Бургасом, а тaкже такими болгарскими курортами как Солнечный берег и Дюни.

http://www.capitan.ru

Горнолыжные курорты

Банско
Город расположен у подножия горного комплекса Пирин на расстоянии около 160 км от Софии и в 62 км к юго-востоку от Благоевграда. В горный комплекс Пирин входят 87 крутых вершин и 150 озер, а снег держится с ноября до мая. Главная лыжная трасса, одна из лучших в Болгарии, расположена у вершины Тодорка. Ее длина около 3 км. От Банско до зоны лыжных трасс - 14 км.

Витоша-Алеко
Гора Витоша находится у южной окраины Софии. Лыжная база "Алеко" является одним из самых высокогорных лыжных курортов в стране. Снег здесь держится 150 дней в г.. В 1983 и 1989 гг. здесь проходили Всемирные зимние студенческие игры. Общая длина лыжных трасс 4500 м, они могут принимать до 3600 человек в час. Особенно разнообразными возможностями для лыжников разного уровня располагают склоны "Стената". На Витоше имеется 6 подъемников. Два из них поднимаются до Черни врых (Черной вершины) /2290 м/ - самой высокой вершины на горе Витоша. До базы "Алеко" подъемник идет 25 минут.

Рила
Находится в 60 км. к юго-востоку от Софии. Курорт расположен в древних сосновых лесах горного комплекса Рила. Высота на уровнем моря - 1300 м, среднегодовая температура - 5,5 градусов С. Комплекс Рила насчитывает 190 озер и 79 вершин. Боровец является исходным пунктом восхождения на вершину "Муссала" (2925 м), самую высокую на Балканах, и вершину "Малевица" /2797 м/. Снег держится здесь более 100 дней в г.

Пмпорово Курорт Пампорово находится в глубине Родопских гор в 260 км от Софии и 80 км от Пловдива. Высота над уровнем моря - 1620 м. По легенде здесь жил легендарный певец Орфей. Наиболее известные вершины: "Снежанка" (1925 м.) и "Мургавец" (1858 м.). Общая длина лыжных трасс 17 000 м. с возможностью перевозки 7 500 человек за час. В Пампорово есть лыжные трассы и для начинающих, и для профессионалов.



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