Интеграция аутентификации пользователей через учетные записи социальных сетей в Web-приложение

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

Рубрика Программирование, компьютеры и кибернетика
Вид дипломная работа
Язык русский
Дата добавления 08.01.2014
Размер файла 3,0 M

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

Следовательно, норма освещенности соблюдена и удовлетворяет условиям работы исследователя на кафедре.

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

9. ЭКОНОМИЧЕСКАЯ ЧАСТЬ

Актуальность темы

В настоящее время большой популярностью пользуются интернет ресурсы, миллионы людей «сидят» в социальных сетях, такие как: facebook, twitter, google+, vk, linked in.

Пользователь заходя практически на любой сайт должен пройти этап регистрации, для этого ему необходимо вводить пароль, логин или e-mail, имя, фамилию, фото загружать и тому подобное, но благодаря широкому распространению соц.сетей, наверняка у него уже существует учетная запись в facebook, twitter, google+, vk, linked in, кроме того эти соц.сети предоставляют интерфейсы которые делают возможным регистрацию на сторонних сайтах через интерфейс этих локальных сетей, т.об. появляется возможность зарегистрироваться на сайте «Listiki.com» через профиль одной из соц.сетей (на примере Twitter ).

Данная интеграция является очень актуальной в связи с тем, что соц. сети сейчас крупно развиваются, поэтому целью работы является интеграция аутентификации пользователей через учетные записи социальных сетей в Web-приложение, на примере проекта Listiki, и ее влияние на кол-во пользователей .

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

9.1 Обзор существующих методов решения задачи и обоснование предлагаемого метода

Данная дипломная работа, тема которой «Интеграция авторизации на web-сайте с помощью соц.сетей и ее влияние на количество пользователей», представляет собой Web-приложение, в котором осуществлена возможность быстрой регистрации на сайте.

При написании Web-сайта использовались операционная система MS Windows XP SP3, среда программирования Zend Studio 8.0.

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

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

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

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

Следовательно, можно отметить направление экономии.

1) За счёт сокращения времени необходимого на регистрацию, происходит экономия электроэнергии, которая была бы потрачена на время обычной регистрации:

, (6.1)

где W - мощность вида оборудования;

ДT - время, которое представляет собой разницу между временем выполнения регистрации без введённой интеграции и с ее использованием;

СЕ - стоимость 1 КВт электроэнергии.

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

9.2 Расчет затрат на НИР

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

Затраты на проведение НИР относятся к производственным расходам. Это одноразовые затраты, включающие все работы, выполняемые студентом, а также рабочими организации.

Смета включает расходы и прибыль разработчика. Расходы включают:

* материальные затраты;

* расходы на оплату труда;

* отчисления на социальные мероприятия;

* амортизационные отчисления;

* прочие операционные расходы.

Плановая смета расходов составляется по укрупненным статьям расходов.

9.2.1 Заработная плата

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

Расчет основной заработной платы исполнителей данной НИР производится из штатного расписания и планового количества исполнителей. Данные представлены в таблице 6.1.

Таблица 6.1- Затраты на оплату труда

Должность

Оклад на месяц, грн.

Количество исполнителей

Число рабочих месяцев місяців

Сумма, грн.

1. Руководитель проекта

3700,00

1

1

3700,00

2. Программист

2500,00

1

5

12500,00

Всего

16200,00

9.2.2 Отчисления в бюджет

Отчисления на социальные службы составляют 36% от основной заработной платы, то есть 5832 грн.

16200*0.36=5832 (грн.)

9.2.3 Затраты на материалы

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

Таблица 6.2- Затраты на материалы

Наименование

Стоимость, грн.

Количество

Сумма, грн.

Лазерный диск (DVD-RW)

5,00

1

5,00

Бумага А4 (пачка бумаги)

35,00

1

35,00

Бумага А1

3,00

3

9,00

Распечатка на принтере

0,50

150

75,00

Распечатка на плоттере

15,00

4

45,00

Папка для проекта

25,00

1

25,00

Сумма

194,00

9.2.4 Амортизационные отчисления

Амортизационные отчисления вычислительной техники рассчитываются по формуле:

,(6.2)

где а - норма амортизации, составляет 25%,

S - остаточная стоимость ПК.

Первоначальная стоимость ПК составляет 4500 грн., Поэтому норма амортизации равна 1125 грн. в год. Срок использования ПК 3 года, тогда остаточная стоимость - 1125 грн.

При исчислении амортизационных отчислений получаем:

Амортизационные отчисления рабочего места рассчитаем по формуле:

где а - норма амортизации помещения, составляет 5%,

Получаем амортизационные отчисления рабочего места:

S - стоимость аренды помещения - 45 грн. за кв.м. / месяц (если используется арендованное помещение). На одного человека отводится 6 кв.м.

9.2.5 Затраты на электроэнергию

Расчет стоимости электроэнергии для процесса:

, (6.3)

где М - это потребляемая мощность, равная 350 Вт,

Т тар - тариф за 1кВт, равный 0,35 грн.,

Т - количество часов работы, что составляет, например, 600 часов.

грн .

Расчет стоимости электроэнергии осветительной проводим по той же формуле, но по М принимаем потребляемую мощность искусственного освещения (100 Вт) и Т - количество часов работы при искусственном освещении (220 часов).

грн ..

Суммарные затраты на электроэнергию равны 81,20 грн.

9.2.6 Сумма затрат на НИР

Итого затрат 22430,01 грн., что составляет 70% сметы.

Всего смета расходов на НИР - 32042,87грн.

Прибыль составляет 30% и составляет 9612,86 грн.

Все расчеты и результаты приведены в таблице 6.3

Таблица 6.3- Расчет затрат на НИР

Наименование статей расходов

Методика расчета

Величина, грн.

Заработная плата рабочих

Штатное расписание

16200,00

Отчисления на социальные и другие виды страхования

36% заработной платы

5832

Стоимость материалов

194,00

Амортизационные отчисления вычислительной техники

,

где а - норма амортизации - 25%, S - остаточная стоимость ПК

117,19

Амортизационные отчисления рабочего места

,

где а - норма амортизации помещения составляет 5%, S - стоимость аренды помещения

5,625

Стоимость электроэнергии для процесса

,

где М - это потребляемая мощность, Т тар - тариф за 1кВт, Т - количество часов работы

73,50

Стоимость электроэнергии осветительной,

,

где М - это потребляемая мощность, Т тар - тариф за 1кВт,

Т - количество часов работы при искусственном освещении

7,70

Итого расходов

70%

22430,01

Прибыль

30%

9612,86

Все сметы затрат на НИР

100%

32042,87

Час разработки НИР - Т2=5 месяцев.

9.3 Расчет научно-технического эффекта

Обобщенный количественный показатель научно-технического эффекта рассчитывается по формуле:

где - весовые коэффициенты i-го показателя; - оценки по i-му показателю.

Таблица 6.4-Данные для расчета научно-технического эффекта (НТЭ)

Признаки научно-технического уровня

Значение

Значение ,

балла

Перспективность

0.3

9

Возможность реализации

0.4

8

Новизна

0.3

9

Подставляя во входную формулу соответствующие значения показателей, получим:

НТЕ =0,3*9+0,4*8+0,3*9=8.6.

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

9.4 Оценка конкурентоспособности продукции

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

,(6.5)

где - единичные индексы конкурентоспособности по техническим характеристикам;

- величины технических характеристик в соответствии с существующей (базовой) моделью сайта и сайта, который разрабатывается.

Индекс конкурентоспособности по долговечности:

Индекс конкурентоспособности по надежности:

Индекс конкурентоспособности по цене:

Рассчитаем групповой показатель по техническим параметрам (Iгр) за единичными индексами технических характеристик и индекса долговечности продукции:

,(6.6)

где - коэффициент весомости показателя.

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

9.5 Расчет экономического эффекта и эффективности производства от внедрения НИР

Годовой экономический эффект от внедрения НИР рассчитывается как произведение:

1) разницы приведенных затрат на единицу продукции и объема производства в натуральной форме (для промышленных предприятий);

2) сумма экономии, полученные в связи с осуществлением инноваций в производство и сколько раз их использования (для научных организаций).

Для расчета экономического эффекта используется формула:

(6.7)

где і - направления экономии; і = ;

N - количество раз использования инноваций (в данном случае).

-смета расходов на разработку и внедрение инноваций.

Ен - нормативный коэффициент эффективности капиталовложений, может составлять 0,25 - 0,3.

грн.

Тогда экономическая эффективность инноваций будет иметь вид:

где

ЕЕ - экономический эффект,

К - капиталовложения.

Срок окупаемости дополнительных затрат (смета затрат на разработку инноваций) является величиной, обратной к экономической эффективности инноваций:

В результате расчета экономической части работы получены:

* смета расходов на НИР;

*показатели научно-технического эффекта;

* экономический эффект работы;

* экономическая эффективность инновации;

*срок окупаемости работы.

В таблице 6.5приведены технико-экономические показатели ГДР.

Таблица 6.5 - Технико-экономические показатели работы

Наименование показателей

методика расчета

Величина

Смета расходов на НИР

таблиця 4.3

32042

Научно-технический эффект

8.6

экономический эффект

51990

экономическая эффективность

1.62

срок окупаемости

0,62

9.6 Выводы

В данном разделе приведено экономическое обоснование выполнения научно-исследовательской работы на тему: «Интеграция авторизации на web-сайте с помощью соц.сетей и ее влияние на количество пользователей» Выполнены ознакомления с методикой составления сметы расходов на научно-исследовательскую работу, которая состоит из расходов на заработную плату исполнителей работы, отчислений на социальное страхование, амортизационных отчислений, затрат на электроэнергию и прочее.

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

10. ГРАЖДАНСКАЯ ЗАЩИТА

Гражданская оборона Украины- это государственная система органов управления, сил и средств для организации и обеспечения защиты населения от последствий чрезвычайных ситуаций техногенного, экологического, природного и военного характера [35].

В данном разделе дипломной работы рассматривается вопрос: «организации медицинской помощи пострадавшим в чрезвычайных ситуациях».

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

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

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

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

Временная остановка кровотечения даже при повреждении крупных кровеносных сосудов доступна самим потерпевшим (если они в сознании) или людям, которые их окружают. Кроме кровотечения, большой опасностью для жизни является потеря сознания, состояние шока, ожоги, переломы и другие повреждения [37].

10.1 Первая помощь при ушибах, закрытых повреждениях внутренних органов, растяжении связок и вывихах

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

Признаки ушиба: боль, припухлость, нарушение функций, кровоизлияние в ткани. Боль особенно сильная сразу после поражения, когда нарастает кровоизлияние. Припухлость ушиба не всегда четко выражена; чтобы найти ее, нужно осмотреть (сравнить) симметричны области поврежденной и неповрежденной стороны (руки, ноги и др.). Кровоизлияние возможно наблюдать только в том случае, когда оно проходит под кожей. Если же оно находится в тканях, лежащих глубоко, то окрашивание кожи сначала не меняется. Через некоторое время, после излияния, кровь пропитывает окружающие ткани, появляется темно-багровое пятно. При значительном кровоизлиянии в течение нескольких дней может даже наблюдаться повышение температуры тела пострадавшего. Иногда кровь, вылившаяся в ткани, нагнаивается в результате попадания инфекции. В этом случае боль и припухлость увеличиваются, сопровождаясь местным и общим повышением температуры тела [36].

Первая медицинская помощь сразу после травмы должна быть направлена на то, чтобы уменьшить боль и кровоизлияние в ткани. Для этого применяют холод и накладывают повязку, что сдавливает, делают холодную примочку, на повязку, кладут пузырь со льдом, грелку или бутылку со снегом, кусочками льда, холодной водой. При наличии на ушибе ссадин примочки делать не следует. Садины смазывают йодом, на поврежденную область накладывают стерильную давящую повязку, а на нее - пузырь со льдом. Ушибленной части тела обеспечивают покой: руку подвешивают на угольники, а если сильно ушиблена нога, то потерпевшему запрещают ходить, ногу рекомендуют держать в приподнятом положении. Чтобы ускорить рассасывание кровоизлияния, через 2 - 3 суток после травмы применяют тепло (согревающий компресс, теплые ванны, лампа соллюкс) и массаж. В более ранние сроки эти процедуры противопоказаны, так как могут усилить кровоизлияние [36].

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

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

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

Если сильная ударная волна влияет на большую поверхность тела, то наступает поражение всего организма, которое называется контузией. Контузия может возникнуть и при воздействии ударной волны, распространяющейся в пространстве. Это поражение сопровождается сотрясением, а иногда и травмой головного мозга. В легких случаях наблюдается кратковременная потеря сознания, небольшое замедление пульса, медленное, поверхностное дыхание с отдельными глубокими вдохами, позывами к рвоте. Эти явления проходят быстро, но контуженый еще плохо ориентируется, слабый, не говорит и не помнит, что с ним произошло, у него кружится голова, нарушается слух. В более тяжелых случаях сознание не возвращается долго, лицо у пострадавшего остается бледным, зрачки расширены, на свет реагирует слабо, пульс редкий - до 50-60 ударов в минуту, мышцы расслаблены. Бывает рвота, непроизвольное выделение мочи и кала. Через некоторое время сознание к человеку возвращается, но остаются некоторые расстройства: головокружение, нарушение языка (заикание), слуха (глухота) и т.д. [37]

При контузии возможны повреждения не только головного мозга, но и других внутренних органов.

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

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

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

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

Растяжение связок возникает при резком движении в суставе. Чаще растяжение связок происходит в голеностопном суставе при неосторожной ходьбе, беге, прыжках и т.д., или в суставах пальцев рук во время игры в волейбол, прыжков через гимнастического коня и др. Возможен даже частичный или полный разрыв связок, сопровождаемый кровоизлиянием в ткани из разорванных кровеносных сосудов. Признаки растяжения связок - боль и припухлость в области сустава. В отличие от переломов и вывихов движения в суставе возможны, хотя они болезненны и ограничены. Кровоизлияния становятся заметными лишь в следующих два-три дня [36].

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

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

ВЫВОДЫ

В данной дипломной работе была осуществлена интеграция авторизации на web-сайте с помощью социальных сетей, в результате чего собраны статистические данные о работе сайта listiki.com при помощи инструментов Google Analytics. Методом математической статистики был произведён численный расчёт собранных данных, для проверки влияния введенной интеграции на количество пользователей.

По результатам вычислений, можно сделать вывод, что действительно наблюдается положительная динамика, кол-во посетителей сайта увеличилось, кол-во отказов (уход пользователя с веб-сайта) уменьшилось.

СПИСОК ИСТОЧНИКОВ ИНФОРМАЦИИ

1.Викрам Васвани Zend Framework Разработка веб- приложений на PHP, изд. Питер, 2012, с. 432.

2.Квентин Зервас Web 2.0 создание приложений на PHP, изд. Вильямс с.544.

3.Василий Леонов Twitter Ваш мобильный блог. изд.Эксмо, с.240.

4.http://ru.wikipedia.org/wiki/OAuth

5.Холмогоров В. Интернет-маркетинг. Краткий курс. 2-е издание - СПб.: Питер, 2005

6. Закон Украины «Об охране труда» от 21.11.2002 г.

7. ГОСТ 12.0.003-74*. ССБТ. Опасные и вредные производственные факторы. Классификация. - Введ. 01.01.76.

8. НПАОП 0.00-1.28-10. Правила охорони праці під час експлуатації електронно-обчислювальних машин. - К.: Держнаглядохоронпраці,2010.

9. ГОСТ 12.0.005-88. ССБТ. Общие санитарно-гигиенические требования к воздуху рабочей зоны. - Введ. 01.01.89.

10.СНиП 2.04.05-93. Нормы проектирования. Отопление, вентиляция и кондиционирование воздуха. М.: Стройиздат, 1993.-64с.

11. СНиП II-4-79. Естественное и искусственное освещение. Нормы проектирования - М.:Стройиздат,1982.

12. ДБН В 2.5-28-2006. Природне і штучне освітлення. Мінбуд України.Київ.2006.

13. ГОСТ 12.1.003-83*. ССБТ. Шум. Общие требования безопасности. - Введ. 01.07.90.

14. ДСТУ ГОСТ 12.1.012:2008. Вібраційна безпека. Загальні вимоги. - Введ. 01.07.09.

15. ГОСТ 12.1.006-84. ССБТ. Электромагнитные поля радиочастот. Допустимые уровни на рабочих местах и требования к проведению контроля.

16. Нормы радиационной безопасности Украины. НРБУ - 97. - М.: Энергоатомиздат, 1998. - 224 с.

17. ГОСТ 12.1.045-84*. ССБТ. Электростатические поля. Допустимые уровни на рабочих местах и требования к проведению контроля. Введ 01.01.85.

18. ДСанПіН 3.3.2-0.07-98. Державні санітарні правила і норми при роботі з візуальними дисплейними терміналами, 1998.

19. ПУЭ -87. Правила устройства электроустановок.- М.: Энергоатомиздат, 1988.- 648 с.

20. ГОСТ 12.1.030-81*. ССБТ. Электробезопасность. Защитное заземление. Зануление. - Введ. 01.07.82.

21.НАП Б Б.03- 002-2007 . Нормативний акт пожежної безпеки. Норми визначення категорій приміщень, будинків та зовнішніх установок за вибухопожежною та пожежною набезпекою. Наказ МНС №633 від 03.12.2007.

22. НПАОП 40.1-1.32-01. Правила устройства электроустановок. Электрооборудование специальных установок. Утв. 21.06.01.

23. ГОСТ 12.1.004-91. ССБТ. Пожарная безопасность. Общие требования. - Введ. 01.07.86.

24. ДСТУ Б В.2.5.-38:2008. Інженерне обладнання будинків і споруд. Улаштування блискавкозахисту будівель і споруд.-К.; МІНРЕГІОНБУД України. Наказ Міністерства регіонального розвитку та будівництва Укпвїни від 27.06.2008 №269. Діє з 01.01.2009р.

25. ДБН В. 1.1-7-02. Захист від пожежі. Пожежена безпека об'єктів будівництва. - К: 2002 - 41 с.

26. Закон Украины „Об охране окружающей природной среды” от 25.06.1991 г.

27. ДСТУ ISO14001-97 - 14012-97 Системи управління навколишнім середовищем - К.:ДЕРЖСТАНДАРТ УКРАЇНИ.

28. Стандарт ТСО'03 FLAT PANEL DISPLAYS, VERSION 3.0

29.Яковлєв А.І. Методика визначення ефективності інвестицій, інновацій, господарських рішень в сучасних умовах - Х. - Бізнес Інформ, 2001. - 56 с.

30.Экономика предприятия: Учебник для вузов /В.Я. Горфинкель, Е.М. Купряков, В.М. Прасолова и др; Под ред. проф. В.Я. Горфинкеля, проф. Е.М. Купрякова. - М.: Банки и биржи, ЮНИТИ, 1996. - 367 с.

31. Мостовий С.П., Чекаліна Е.П., Сікєтіна Н.Г. «Економічне обґрунтування вибору варіантів новацій для їх впровадження у виробництво» // Вісник НТУ “ХПІ” “Технічний прогрес і ефективність виробництва”. - №41.- 2009.- С. 90 - 91.

32. Сикетина Н.Г. Взаимосвязь конкурентоспособности продукции и экономической эффективности деятельности предприятия / Н.Г. Сикетина // Бизнес-Информ, - 2008. - № 1, - С. 112-115.

33. Смоловик Р.Ф. Розрахунок впливу факторів якості продукції на її ціну / Р.Ф. Смоловик, Н.Г.Сікєтіна // Матеріали економ. наук. інтернет-конф. „Сучасні проблеми економіки в умовах глобальної фінансової нестабільності” (Тернопіль, 1-5 березня 2010 р.) - Тернопіль, 2010. - С. 40-42.

34. Сікєтіна Н.Г. Механізм оцінки економічної ефективності діяльності машинобудівних підприємств / Н.Г. Сікєтіна // Вісник НТУ “ХПІ” Серія “Технічний прогрес і ефективність виробництва”. - 2008. - № 54(1). - С. 15-20.

35. Закон «Про цивільну оборону України ».-ВРУ № 297-XII.-К.,1993.

36. Кулаков М.А. Ляпун В.О., Мягкий В.О., Пугач В.І., Кукленко Т.В. Цивільна оборона: Навч. посібник - Харків: Факт, 2008р.

37. Стеблюк М.І. Цивільна оборона: Підручник. - К.: Знання, 2006.- 487с.

ПРИЛОЖЕНИЯ

Приложение А

Статистические данные о работе сайта

Дата

Количество посетителей

Количество отказов

30.05.2012

858

491

31.05.2012

862

496

01.06.2012

809

502

02.06.2012

814

483

03.06.2012

835

498

04.06.2012

843

519

05.06.2012

832

557

06.06.2012

832

534

07.06.2012

830

543

08.06.2012

848

495

09.06.2012

797

487

10.06.2012

806

568

11.06.2012

820

506

12.06.2012

794

511

13.06.2012

852

509

14.06.2012

822

499

15.06.2012

801

532

16.06.2012

856

516

17.06.2012

803

546

18.06.2012

809

542

19.06.2012

780

525

20.06.2012

837

539

21.06.2012

805

509

22.06.2012

805

525

23.06.2012

832

529

24.06.2012

828

515

25.06.2012

820

555

26.06.2012

775

529

27.06.2012

833

533

28.06.2012

823

518

29.06.2012

782

430

30.06.2012

828

569

01.07.2012

786

504

02.07.2012

826

505

03.07.2012

830

547

04.07.2012

853

495

05.07.2012

835

485

06.07.2012

829

543

07.07.2012

866

550

08.07.2012

859

488

09.07.2012

850

523

10.07.2012

800

529

11.07.2012

815

580

12.07.2012

790

485

13.07.2012

816

480

14.07.2012

811

556

15.07.2012

760

520

16.07.2012

840

541

17.07.2012

840

489

18.07.2012

778

518

19.07.2012

818

500

20.07.2012

842

523

21.07.2012

831

518

22.07.2012

823

495

23.07.2012

810

484

24.07.2012

845

551

25.07.2012

851

559

26.07.2012

854

520

27.07.2012

858

532

28.07.2012

825

530

29.07.2012

826

506

30.08.2012

975

389

31.08.2012

981

365

01.09.2012

969

385

02.09.2012

1023

398

03.09.2012

939

396

04.09.2012

990

383

05.09.2012

979

413

06.09.2012

993

405

07.09.2012

997

400

08.09.2012

1001

402

09.09.2012

938

387

10.09.2012

987

377

11.09.2012

971

398

12.09.2012

940

372

13.09.2012

993

409

14.09.2012

987

421

15.09.2012

970

373

16.09.2012

974

410

17.09.2012

959

339

18.09.2012

948

428

19.09.2012

962

382

20.09.2012

949

374

21.09.2012

947

394

22.09.2012

941

358

23.09.2012

992

405

24.09.2012

936

396

25.09.2012

959

424

26.09.2012

970

356

27.09.2012

935

384

28.09.2012

930

393

29.09.2012

999

376

30.09.2012

946

430

01.10.2012

972

397

02.10.2012

936

374

03.10.2012

945

422

04.10.2012

979

371

05.10.2012

999

366

06.10.2012

927

406

07.10.2012

956

370

08.10.2012

969

414

09.10.2012

972

378

10.10.2012

950

376

11.10.2012

988

382

12.10.2012

969

398

13.10.2012

937

425

14.10.2012

983

405

15.10.2012

988

402

16.10.2012

930

381

17.10.2012

946

372

18.10.2012

994

386

19.10.2012

951

389

20.10.2012

955

370

21.10.2012

1004

381

22.10.2012

983

413

23.10.2012

948

370

24.10.2012

979

383

25.10.2012

970

418

26.10.2012

948

379

27.10.2012

953

383

28.10.2012

957

405

29.10.2012

969

418

Приложение Б

Код программы

Connect.php

<?php

require_once 'lib/twitteroauth/twitteroauth.php';

class Bagels_Twitter_Connect extends TwitterOAuth

{

const SESSION_NAMESPACE_NAME = 'Twitter';

protected $session;

public function __construct()

{

$appSettings = Zend_Registry::get('appSettings');

$twitterSettings = $appSettings['twitter']['application'];

$this->session = new Zend_Session_Namespace(self::SESSION_NAMESPACE_NAME);

$token = empty($this->session->oauth_token) ? null : $this->session->oauth_token;

$token_secret = empty($this->session->oauth_token_secret) ? null : $this->session->oauth_token_secret;

parent::__construct($twitterSettings['consumer_key'],

$twitterSettings['consumer_secret'],

$token,$token_secret);

}

public function getLoginUrl()

{

$urlHelper = new Zend_View_Helper_Url();

$front = Zend_Controller_Front::getInstance();

$request = $front->getRequest();

$baseUrl = '';

if(method_exists($request, 'getHttpHost')){

$baseUrl = $request->GetScheme() .'://'. $request->getHttpHost();

}

$callback_url = $baseUrl . $urlHelper->url(array(),'twitter_connect');

$request_token = $this->getRequestToken($callback_url);

/* Save temporary credentials to session. */

$this->session->oauth_token = $token = $request_token['oauth_token'];

$this->session->oauth_token_secret = $request_token['oauth_token_secret'];

switch ($this->http_code) {

case 200:

case 401:

/* Build authorize URL and redirect user to Twitter. */

$url = $this->getAuthorizeURL($token);

return $url;

break;

default:

/* Show notification if something went wrong. */

throw new Exception('Some problem connecting to Twitter, please try again', 500);

break;

};

}

public function getCurrentUser()

{

$front = Zend_Controller_Front::getInstance();

$request = $front->getRequest();

$verifier = $request->getParam('oauth_verifier');

if(!empty($verifier)){

$this->session->verifier = $verifier;

if($request->getParam('oauth_token') == $this->session->oauth_token){

$access_token = $this->getAccessToken($verifier);

$this->session->oauth_token = $access_token['oauth_token'];

$this->session->oauth_token_secret = $access_token['oauth_token_secret'];

$response = $this->get('account/verify_credentials');

$response->session = $_SESSION[$this->session->getNamespace()];

$this->resetTokens();

if(!empty($response->error)){

return null;

}

return $response;

}

}

$this->resetTokens();

return null;

}

protected function resetTokens()

{

unset($this->session->oauth_token);

unset($this->session->oauth_token_secret);

$this->token = NULL;

}

public function authentificate($data = null)

{

if(empty($data)){

$data = $this->getCurrentUser();

}

if(empty($data)){

return false;

}

$user = Bagels_Model_User::getByField('twitter_id',$data->id);

if(empty($user)){

list($fname,$lname) = explode(' ',$data->name);

$user = new Bagels_Model_User();

$user->setTwitter_id($data->id);

$user->setFname($fname);

$user->setLname($lname);

$user->setTwitter(serialize($data));

$user->setStatus('active');

$user->save();

}else{

$user->setTwitter_id($data->id);

$user->setTwitter(serialize($data));

$user->setStatus('active');

$user->save();

}

$user->updateSettings();

Zend_Session::rememberMe();

return true;

}

}

OAuth.php

<?php

// vim: foldmethod=marker

/* Generic exception class

*/

class OAuthException extends Exception {

// pass

}

class OAuthConsumer {

public $key;

public $secret;

function __construct($key, $secret, $callback_url=NULL) {

$this->key = $key;

$this->secret = $secret;

$this->callback_url = $callback_url;

}

function __toString() {

return "OAuthConsumer[key=$this->key,secret=$this->secret]";

}

}

class OAuthToken {

// access tokens and request tokens

public $key;

public $secret;

/**

* key = the token

* secret = the token secret

*/

function __construct($key, $secret) {

$this->key = $key;

$this->secret = $secret;

}

/**

* generates the basic string serialization of a token that a server

* would respond to request_token and access_token calls with

*/

function to_string() {

return "oauth_token=" .

OAuthUtil::urlencode_rfc3986($this->key) .

"&oauth_token_secret=" .

OAuthUtil::urlencode_rfc3986($this->secret);

}

function __toString() {

return $this->to_string();

}

}

/**

* A class for implementing a Signature Method

* See section 9 ("Signing Requests") in the spec

*/

abstract class OAuthSignatureMethod {

/**

* Needs to return the name of the Signature Method (ie HMAC-SHA1)

* @return string

*/

abstract public function get_name();

/**

* Build up the signature

* NOTE: The output of this function MUST NOT be urlencoded.

* the encoding is handled in OAuthRequest when the final

* request is serialized

* @param OAuthRequest $request

* @param OAuthConsumer $consumer

* @param OAuthToken $token

* @return string

*/

abstract public function build_signature($request, $consumer, $token);

/**

* Verifies that a given signature is correct

* @param OAuthRequest $request

* @param OAuthConsumer $consumer

* @param OAuthToken $token

* @param string $signature

* @return bool

*/

public function check_signature($request, $consumer, $token, $signature) {

$built = $this->build_signature($request, $consumer, $token);

return $built == $signature;

}

}

/**

* The HMAC-SHA1 signature method uses the HMAC-SHA1 signature algorithm as defined in [RFC2104]

* where the Signature Base String is the text and the key is the concatenated values (each first

* encoded per Parameter Encoding) of the Consumer Secret and Token Secret, separated by an '&'

* character (ASCII code 38) even if empty.

* - Chapter 9.2 ("HMAC-SHA1")

*/

class OAuthSignatureMethod_HMAC_SHA1 extends OAuthSignatureMethod {

function get_name() {

return "HMAC-SHA1";

}

public function build_signature($request, $consumer, $token) {

$base_string = $request->get_signature_base_string();

$request->base_string = $base_string;

$key_parts = array(

$consumer->secret,

($token) ? $token->secret : ""

);

$key_parts = OAuthUtil::urlencode_rfc3986($key_parts);

$key = implode('&', $key_parts);

return base64_encode(hash_hmac('sha1', $base_string, $key, true));

}

}

/**

* The PLAINTEXT method does not provide any security protection and SHOULD only be used

* over a secure channel such as HTTPS. It does not use the Signature Base String.

* - Chapter 9.4 ("PLAINTEXT")

*/

class OAuthSignatureMethod_PLAINTEXT extends OAuthSignatureMethod {

public function get_name() {

return "PLAINTEXT";

}

/**

* oauth_signature is set to the concatenated encoded values of the Consumer Secret and

* Token Secret, separated by a '&' character (ASCII code 38), even if either secret is

* empty. The result MUST be encoded again.

* - Chapter 9.4.1 ("Generating Signatures")

*

* Please note that the second encoding MUST NOT happen in the SignatureMethod, as

* OAuthRequest handles this!

*/

public function build_signature($request, $consumer, $token) {

$key_parts = array(

$consumer->secret,

($token) ? $token->secret : ""

);

$key_parts = OAuthUtil::urlencode_rfc3986($key_parts);

$key = implode('&', $key_parts);

$request->base_string = $key;

return $key;

}

}

/**

* The RSA-SHA1 signature method uses the RSASSA-PKCS1-v1_5 signature algorithm as defined in

* [RFC3447] section 8.2 (more simply known as PKCS#1), using SHA-1 as the hash function for

* EMSA-PKCS1-v1_5. It is assumed that the Consumer has provided its RSA public key in a

* verified way to the Service Provider, in a manner which is beyond the scope of this

* specification.

* - Chapter 9.3 ("RSA-SHA1")

*/

abstract class OAuthSignatureMethod_RSA_SHA1 extends OAuthSignatureMethod {

public function get_name() {

return "RSA-SHA1";

}

// Up to the SP to implement this lookup of keys. Possible ideas are:

// (1) do a lookup in a table of trusted certs keyed off of consumer

// (2) fetch via http using a url provided by the requester

// (3) some sort of specific discovery code based on request

//

// Either way should return a string representation of the certificate

protected abstract function fetch_public_cert(&$request);

// Up to the SP to implement this lookup of keys. Possible ideas are:

// (1) do a lookup in a table of trusted certs keyed off of consumer

//

// Either way should return a string representation of the certificate

protected abstract function fetch_private_cert(&$request);

public function build_signature($request, $consumer, $token) {

$base_string = $request->get_signature_base_string();

$request->base_string = $base_string;

// Fetch the private key cert based on the request

$cert = $this->fetch_private_cert($request);

// Pull the private key ID from the certificate

$privatekeyid = openssl_get_privatekey($cert);

// Sign using the key

$ok = openssl_sign($base_string, $signature, $privatekeyid);

// Release the key resource

openssl_free_key($privatekeyid);

return base64_encode($signature);

}

public function check_signature($request, $consumer, $token, $signature) {

$decoded_sig = base64_decode($signature);

$base_string = $request->get_signature_base_string();

// Fetch the public key cert based on the request

$cert = $this->fetch_public_cert($request);

// Pull the public key ID from the certificate

$publickeyid = openssl_get_publickey($cert);

// Check the computed signature against the one passed in the query

$ok = openssl_verify($base_string, $decoded_sig, $publickeyid);

// Release the key resource

openssl_free_key($publickeyid);

return $ok == 1;

}

}

class OAuthRequest {

private $parameters;

private $http_method;

private $http_url;

// for debug purposes

public $base_string;

public static $version = '1.0';

public static $POST_INPUT = 'php://input';

function __construct($http_method, $http_url, $parameters=NULL) {

@$parameters or $parameters = array();

$parameters = array_merge( OAuthUtil::parse_parameters(parse_url($http_url, PHP_URL_QUERY)), $parameters);

$this->parameters = $parameters;

$this->http_method = $http_method;

$this->http_url = $http_url;

}

/**

* attempt to build up a request from what was passed to the server

*/

public static function from_request($http_method=NULL, $http_url=NULL, $parameters=NULL) {

$scheme = (!isset($_SERVER['HTTPS']) || $_SERVER['HTTPS'] != "on")

? 'http'

: 'https';

@$http_url or $http_url = $scheme .

'://' . $_SERVER['HTTP_HOST'] .

':' .

$_SERVER['SERVER_PORT'] .

$_SERVER['REQUEST_URI'];

@$http_method or $http_method = $_SERVER['REQUEST_METHOD'];

// We weren't handed any parameters, so let's find the ones relevant to

// this request.

// If you run XML-RPC or similar you should use this to provide your own

// parsed parameter-list

if (!$parameters) {

// Find request headers

$request_headers = OAuthUtil::get_headers();

// Parse the query-string to find GET parameters

$parameters = OAuthUtil::parse_parameters($_SERVER['QUERY_STRING']);

// It's a POST request of the proper content-type, so parse POST

// parameters and add those overriding any duplicates from GET

if ($http_method == "POST"

&& @strstr($request_headers["Content-Type"],

"application/x-www-form-urlencoded")

) {

$post_data = OAuthUtil::parse_parameters(

file_get_contents(self::$POST_INPUT)

);

$parameters = array_merge($parameters, $post_data);

}

// We have a Authorization-header with OAuth data. Parse the header

// and add those overriding any duplicates from GET or POST

if (@substr($request_headers['Authorization'], 0, 6) == "OAuth ") {

$header_parameters = OAuthUtil::split_header(

$request_headers['Authorization']

);

$parameters = array_merge($parameters, $header_parameters);

}

}

return new OAuthRequest($http_method, $http_url, $parameters);

}

/**

* pretty much a helper function to set up the request

*/

public static function from_consumer_and_token($consumer, $token, $http_method, $http_url, $parameters=NULL) {

@$parameters or $parameters = array();

$defaults = array("oauth_version" => OAuthRequest::$version,

"oauth_nonce" => OAuthRequest::generate_nonce(),

"oauth_timestamp" => OAuthRequest::generate_timestamp(),

"oauth_consumer_key" => $consumer->key);

if ($token)

$defaults['oauth_token'] = $token->key;

$parameters = array_merge($defaults, $parameters);

return new OAuthRequest($http_method, $http_url, $parameters);

}

public function set_parameter($name, $value, $allow_duplicates = true) {

if ($allow_duplicates && isset($this->parameters[$name])) {

// We have already added parameter(s) with this name, so add to the list

if (is_scalar($this->parameters[$name])) {

// This is the first duplicate, so transform scalar (string)

// into an array so we can add the duplicates

$this->parameters[$name] = array($this->parameters[$name]);

}

$this->parameters[$name][] = $value;

} else {

$this->parameters[$name] = $value;

}

}

public function get_parameter($name) {

return isset($this->parameters[$name]) ? $this->parameters[$name] : null;

}

public function get_parameters() {

return $this->parameters;

}

public function unset_parameter($name) {

unset($this->parameters[$name]);

}

/**

* The request parameters, sorted and concatenated into a normalized string.

* @return string

*/

public function get_signable_parameters() {

// Grab all parameters

$params = $this->parameters;

// Remove oauth_signature if present

// Ref: Spec: 9.1.1 ("The oauth_signature parameter MUST be excluded.")

if (isset($params['oauth_signature'])) {

unset($params['oauth_signature']);

}

return OAuthUtil::build_http_query($params);

}

/**

* Returns the base string of this request

*

* The base string defined as the method, the url

* and the parameters (normalized), each urlencoded

* and the concated with &.

*/

public function get_signature_base_string() {

$parts = array(

$this->get_normalized_http_method(),

$this->get_normalized_http_url(),

$this->get_signable_parameters()

);

$parts = OAuthUtil::urlencode_rfc3986($parts);

return implode('&', $parts);

}

/**

* just uppercases the http method

*/

public function get_normalized_http_method() {

return strtoupper($this->http_method);

}

/**

* parses the url and rebuilds it to be

* scheme://host/path

*/

public function get_normalized_http_url() {

$parts = parse_url($this->http_url);

$port = @$parts['port'];

$scheme = $parts['scheme'];

$host = $parts['host'];

$path = @$parts['path'];

$port or $port = ($scheme == 'https') ? '443' : '80';

if (($scheme == 'https' && $port != '443')

|| ($scheme == 'http' && $port != '80')) {

$host = "$host:$port";

}

return "$scheme://$host$path";

}

/**

* builds a url usable for a GET request

*/

public function to_url() {

$post_data = $this->to_postdata();

$out = $this->get_normalized_http_url();

if ($post_data) {

$out .= '?'.$post_data;

}

return $out;

}

/**

* builds the data one would send in a POST request

*/

public function to_postdata() {

return OAuthUtil::build_http_query($this->parameters);

}

/**

* builds the Authorization: header

*/

public function to_header($realm=null) {

$first = true;

if($realm) {

$out = 'Authorization: OAuth realm="' . OAuthUtil::urlencode_rfc3986($realm) . '"';

$first = false;

} else

$out = 'Authorization: OAuth';

$total = array();

foreach ($this->parameters as $k => $v) {

if (substr($k, 0, 5) != "oauth") continue;

if (is_array($v)) {

throw new OAuthException('Arrays not supported in headers');

}

$out .= ($first) ? ' ' : ',';

$out .= OAuthUtil::urlencode_rfc3986($k) .

'="' .

OAuthUtil::urlencode_rfc3986($v) .

'"';

$first = false;

}

return $out;

}

public function __toString() {

return $this->to_url();

}

public function sign_request($signature_method, $consumer, $token) {

$this->set_parameter(

"oauth_signature_method",

$signature_method->get_name(),

false

);

$signature = $this->build_signature($signature_method, $consumer, $token);

$this->set_parameter("oauth_signature", $signature, false);

}

public function build_signature($signature_method, $consumer, $token) {

$signature = $signature_method->build_signature($this, $consumer, $token);

return $signature;

}

/**

* util function: current timestamp

*/

private static function generate_timestamp() {

return time();

}

/**

* util function: current nonce

*/

private static function generate_nonce() {

$mt = microtime();

$rand = mt_rand();

return md5($mt . $rand); // md5s look nicer than numbers

}

}

class OAuthServer {

protected $timestamp_threshold = 300; // in seconds, five minutes

protected $version = '1.0'; // hi blaine

protected $signature_methods = array();

protected $data_store;

function __construct($data_store) {

$this->data_store = $data_store;

}

public function add_signature_method($signature_method) {

$this->signature_methods[$signature_method->get_name()] =

$signature_method;

}

// high level functions

/**

* process a request_token request

* returns the request token on success

*/

public function fetch_request_token(&$request) {

$this->get_version($request);

$consumer = $this->get_consumer($request);

// no token required for the initial token request

$token = NULL;

$this->check_signature($request, $consumer, $token);

// Rev A change

$callback = $request->get_parameter('oauth_callback');

$new_token = $this->data_store->new_request_token($consumer, $callback);

return $new_token;

}

/**

* process an access_token request

* returns the access token on success

*/

public function fetch_access_token(&$request) {

$this->get_version($request);

$consumer = $this->get_consumer($request);

// requires authorized request token

$token = $this->get_token($request, $consumer, "request");

$this->check_signature($request, $consumer, $token);

// Rev A change

$verifier = $request->get_parameter('oauth_verifier');

$new_token = $this->data_store->new_access_token($token, $consumer, $verifier);

return $new_token;

}

/**

* verify an api call, checks all the parameters

*/

public function verify_request(&$request) {

$this->get_version($request);

$consumer = $this->get_consumer($request);

$token = $this->get_token($request, $consumer, "access");

$this->check_signature($request, $consumer, $token);

return array($consumer, $token);

}

// Internals from here

/**

* version 1

*/

private function get_version(&$request) {

$version = $request->get_parameter("oauth_version");

if (!$version) {

// Service Providers MUST assume the protocol version to be 1.0 if this parameter is not present.

// Chapter 7.0 ("Accessing Protected Ressources")

$version = '1.0';

}

if ($version !== $this->version) {

throw new OAuthException("OAuth version '$version' not supported");

}

return $version;

}

/**

* figure out the signature with some defaults

*/

private function get_signature_method(&$request) {

$signature_method =

@$request->get_parameter("oauth_signature_method");

if (!$signature_method) {

// According to chapter 7 ("Accessing Protected Ressources") the signature-method

// parameter is required, and we can't just fallback to PLAINTEXT

throw new OAuthException('No signature method parameter. This parameter is required');

}

if (!in_array($signature_method,

array_keys($this->signature_methods))) {

throw new OAuthException(

"Signature method '$signature_method' not supported " .

"try one of the following: " .

implode(", ", array_keys($this->signature_methods))

);

}

return $this->signature_methods[$signature_method];

}

/**

* try to find the consumer for the provided request's consumer key

*/

private function get_consumer(&$request) {

$consumer_key = @$request->get_parameter("oauth_consumer_key");

if (!$consumer_key) {

throw new OAuthException("Invalid consumer key");

}

$consumer = $this->data_store->lookup_consumer($consumer_key);

if (!$consumer) {

throw new OAuthException("Invalid consumer");

}

return $consumer;

}

/**

* try to find the token for the provided request's token key

*/

private function get_token(&$request, $consumer, $token_type="access") {

$token_field = @$request->get_parameter('oauth_token');

$token = $this->data_store->lookup_token(

$consumer, $token_type, $token_field

);

if (!$token) {

throw new OAuthException("Invalid $token_type token: $token_field");

}

return $token;

}

/**

* all-in-one function to check the signature on a request

* should guess the signature method appropriately

*/

private function check_signature(&$request, $consumer, $token) {

// this should probably be in a different method

$timestamp = @$request->get_parameter('oauth_timestamp');

$nonce = @$request->get_parameter('oauth_nonce');

$this->check_timestamp($timestamp);

$this->check_nonce($consumer, $token, $nonce, $timestamp);

$signature_method = $this->get_signature_method($request);

$signature = $request->get_parameter('oauth_signature');

$valid_sig = $signature_method->check_signature(

$request,

$consumer,

$token,

$signature

);

if (!$valid_sig) {

throw new OAuthException("Invalid signature");

}

}

/**

* check that the timestamp is new enough

*/

private function check_timestamp($timestamp) {

if( ! $timestamp )

throw new OAuthException(

'Missing timestamp parameter. The parameter is required'

);

// verify that timestamp is recentish

$now = time();

if (abs($now - $timestamp) > $this->timestamp_threshold) {

throw new OAuthException(

"Expired timestamp, yours $timestamp, ours $now"

);

}

}

/**

* check that the nonce is not repeated

*/

private function check_nonce($consumer, $token, $nonce, $timestamp) {

if( ! $nonce )

throw new OAuthException(

'Missing nonce parameter. The parameter is required'

);

// verify that the nonce is uniqueish

$found = $this->data_store->lookup_nonce(

$consumer,

$token,

$nonce,

$timestamp

);

if ($found) {

throw new OAuthException("Nonce already used: $nonce");

}

}

}

class OAuthDataStore {

function lookup_consumer($consumer_key) {

// implement me

}

function lookup_token($consumer, $token_type, $token) {

// implement me

}

function lookup_nonce($consumer, $token, $nonce, $timestamp) {

// implement me

}

function new_request_token($consumer, $callback = null) {

// return a new token attached to this consumer

}

function new_access_token($token, $consumer, $verifier = null) {

// return a new access token attached to this consumer

// for the user associated with this token if the request token

// is authorized

// should also invalidate the request token

}

}

class OAuthUtil {

public static function urlencode_rfc3986($input) {

if (is_array($input)) {

return array_map(array('OAuthUtil', 'urlencode_rfc3986'), $input);

} else if (is_scalar($input)) {

return str_replace(

'+',

' ',

str_replace('%7E', '~', rawurlencode($input))

);

} else {

return '';

}

}

// This decode function isn't taking into consideration the above

// modifications to the encoding process. However, this method doesn't

// seem to be used anywhere so leaving it as is.


Подобные документы

  • История развития и классификация социальных сетей. Характеристика наиболее популярных социальных сетей. Сети Рунета: ВКонтакте, Одноклассники, Мой круг, Мой мир (на www.mail.ru), RuSpace. Социальная сеть Facebook как лидер среди социальных сетей.

    реферат [4,0 M], добавлен 23.06.2012

  • Изучение понятия социальных сетей. Классификация социальных сетей по тематике и по форме общения их аудитории: общетематические, специализированные, глобальные, мультимедийные, блоги, микроблоги. Facebook - одна из самых популярных социальных сетей.

    презентация [405,6 K], добавлен 05.06.2013

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

    курсовая работа [347,3 K], добавлен 25.04.2014

  • Разработка средствами языка PHP и Фреймворка Yii системы регистрации и аутентификации пользователей на сайте. Проектирование приложения с помощью языка UML, построение диаграммы прецедентов. База данных приложения. Страница регистрации пользователей.

    отчет по практике [1,1 M], добавлен 15.09.2014

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

    реферат [51,8 K], добавлен 17.12.2010

  • Количество социальных сетей в Интернете и численность их участников. Форумы и блоги как наиболее распространенные формы общения с помощью Web-технологий. Регистрация пользователей, учетные данные, сеанс работы в среде сети. Виды поиска информации.

    реферат [10,0 K], добавлен 13.02.2011

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

    курсовая работа [48,0 K], добавлен 07.08.2013

  • Использование электронных ключей как средства аутентификации пользователей. Анализ методов идентификации и аутентификации с точки зрения применяемых в них технологий. Установка и настройка средств аутентификации "Rutoken", управление драйверами.

    курсовая работа [4,6 M], добавлен 11.01.2013

  • Анализ системы распределенных локальных сетей и информационного обмена между ними через Интернет. Отличительные черты корпоративной сети, определение проблем информационной безопасности в Интернете. Технология построения виртуальной защищенной сети – VPN.

    курсовая работа [3,7 M], добавлен 02.07.2011

  • Сущность малого предпринимательства. Применение информационных технологий в корпоративной инфраструктуре. Развития социальных сетей в Интернете. Корреляционный анализ зависимости популяризации социальных сетей от интеграции населения в среду Интернет.

    контрольная работа [423,9 K], добавлен 17.04.2013

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.