телефонный справочник на php

Создаём WEB адресный справочник PHP + LDAP

Так случилось, что у (относительно) большой кампании было много отдалённых офисов, в которых находилось приличное количество пользователей. Все офисы соединены в одну сеть с общим доменом, каждый офис был определён в Active Directory (далее по тексту AD) как Organization Unit (OU), в котором уже заводились пользователи.

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

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

Начнём с того, что для начала нужно определиться что использовать, это просто — итоговый справочник должен быть доступен всем пользователям домена посредством браузера. Первое, что приходит на ум это PHP в связке с ldap, их и будем использовать. Большим плюсом использования PHP я считаю его относительную простоту — любой хоть немного понимающий системный администратор сможет внести, при необходимости, нужные правки в код, не особенно напрягаясь.

Итак, начнём. для начала зададим параметры подключения к домену:

Если же мы определили OU, тогда приступаем к дальнейшим действиям: начинаем рисовать пользователю страницу справочника:

Включаем стили для более приятного внешнего вида (да, их можно было подключить как css-файл, однако некоторые версии IE не хотят воспринимать стили, заданные таким образом, поэтому приходится писать прямо в скрипт):

Со стилями покончено, теперь пишем заголовок вкладки и рисуем удобную ссылку возврата на главную страницу:

Определяем поисковые фильтры по AD, и получаем данные об OU:

Далее оформляем верхнюю часть страницы:

Далее получаем в цикле и обрабатываем данные пользователей, при этом, чтобы скрыть некоторые (например служебные) учётные записи, просто прописываем «hide» в поле «комната» в реквизитах пользователя в AD, такие пользователи не будут отображаться в справочнике:

Кстати, если вам потребуется получить значение другого атрибута, то помните (это важно):
в запросе передаём имя атрибута строчными буквами, иначе не заработает.

И вставляем полученные данные в таблицу:

Далее мы закрываем подключение по ldap, или выводим сообщение о невозможности подключения к серверу:

Файл «main_table.html» изнутри себя представляет простую html страницу с ссылками, и выглядит примерно так:

Если кому-либо поможет мой код — я буду рад, пользуйтесь!

Также можете свободно редактировать его как вам угодно (улучшать/ухудшать) и распространять любыми методами.

Источник

Telephone Directory

Телефонный справочник для Active Directory

телефонный справочник на php. Смотреть фото телефонный справочник на php. Смотреть картинку телефонный справочник на php. Картинка про телефонный справочник на php. Фото телефонный справочник на php

Для тех, кто статью читать не захочет, сразу репозиторий на github.

А остальных под катом ждёт бессвязная и бессмысленная история о том, как я дошёл до жизни такой, при помощи node-webkit, написал приложение, которого джва года ждал.
Всю свою сознательную жизнь карьеру сисадмина я восхищался Active Directory от MS. И как только появилась такая возможность — внедрил её на предприятии, где работаю.

И понеслось… Я стал интегрировать всё, до чего дотянусь, с AD. Аутентификация прокси, база сотрудников для СКД, Антивирус и т.п. И не хватало мне для счастья телефонного справочника, который бы брал все данные из базы AD. Уже полгода я то и дело мучаю гугл на эту тему, но результаты не утешительные.


Ничего не предвещало беды решения этой проблемы, но позавчера я узнал о node-webkit!
телефонный справочник на php. Смотреть фото телефонный справочник на php. Смотреть картинку телефонный справочник на php. Картинка про телефонный справочник на php. Фото телефонный справочник на php
Возможность написания десктопного приложения на знакомом языке — что может быть лучше? Радости моей не было предела.
Но вот незадача… Дома маленький ребёнок, постоянно требующий внимания, а на работе внезапно работа. Кодить категорически некогда и негде.
Но судьба была ко мне благосклонна — днём воскресенья ребёнок решил поспать. Жена, видимо вспомнив мои восторженные вопли о том, как крут node-webkit, и разгадав мои тайные желания, в ответ на вопрос „чем займёмся, пока дитё спит?“
телефонный справочник на php. Смотреть фото телефонный справочник на php. Смотреть картинку телефонный справочник на php. Картинка про телефонный справочник на php. Фото телефонный справочник на php
ответила „ну ладно… иди уже программируй“

И так. У меня есть 1.5 — 2 часа на то что бы освоить новую технологию (даже две, так как nodejs я тоже, по сути, не знал) и написать с её помощью софт, который почему-то никто из опенсорс программистов до сих пор не написал.

Первым делом — спросил гугл насчёт связи nodejs с ActiveDirectory. Он подсказал целых два модуля: node-activedirectory и ldapjs. Разбираться, что к чему времени не было, так что выбор пал на первый.

УРА
телефонный справочник на php. Смотреть фото телефонный справочник на php. Смотреть картинку телефонный справочник на php. Картинка про телефонный справочник на php. Фото телефонный справочник на php

ВУАЛЯ
телефонный справочник на php. Смотреть фото телефонный справочник на php. Смотреть картинку телефонный справочник на php. Картинка про телефонный справочник на php. Фото телефонный справочник на php

ТАДАМ
телефонный справочник на php. Смотреть фото телефонный справочник на php. Смотреть картинку телефонный справочник на php. Картинка про телефонный справочник на php. Фото телефонный справочник на php

Из кроватки раздался радостный плачь.

Эпизод 2: Утренний кофе

На часах 6:50 у меня примерно 20 минут…

Уже весьма неплохо
телефонный справочник на php. Смотреть фото телефонный справочник на php. Смотреть картинку телефонный справочник на php. Картинка про телефонный справочник на php. Фото телефонный справочник на php

Но уже 7:30 и мне пора бежать.

Эпизод 3: Наводим марaфет

ГОТОВО!
телефонный справочник на php. Смотреть фото телефонный справочник на php. Смотреть картинку телефонный справочник на php. Картинка про телефонный справочник на php. Фото телефонный справочник на php

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

Установка

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

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

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

Источник

Телефонный справочник на php

Контакты делятся на два типа:

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

Карты хранятся в файлах templ/map5.png

Подключить модули расширения в php.ini или скомпилировать PHP с поддержкой LDAP

Дополнительные настройки в inc.config.php (опционально)

Для включения LDAP аутентификации в LDAP_ADMIN_GROUP_DN нужно указать группу AD через которую предоставляется доступ:

Изменить количество и названия карт:

Изменить язык (cпасибо @Impuls2003):

Изменения в новых версиях

10.10.2020

This service import users info from LDAP/AD to MySQL DB

телефонный справочник на php. Смотреть фото телефонный справочник на php. Смотреть картинку телефонный справочник на php. Картинка про телефонный справочник на php. Фото телефонный справочник на php

Show all contacts on map

телефонный справочник на php. Смотреть фото телефонный справочник на php. Смотреть картинку телефонный справочник на php. Картинка про телефонный справочник на php. Фото телефонный справочник на php

Show selected contact on map

телефонный справочник на php. Смотреть фото телефонный справочник на php. Смотреть картинку телефонный справочник на php. Картинка про телефонный справочник на php. Фото телефонный справочник на php

телефонный справочник на php. Смотреть фото телефонный справочник на php. Смотреть картинку телефонный справочник на php. Картинка про телефонный справочник на php. Фото телефонный справочник на php

телефонный справочник на php. Смотреть фото телефонный справочник на php. Смотреть картинку телефонный справочник на php. Картинка про телефонный справочник на php. Фото телефонный справочник на php

телефонный справочник на php. Смотреть фото телефонный справочник на php. Смотреть картинку телефонный справочник на php. Картинка про телефонный справочник на php. Фото телефонный справочник на php

телефонный справочник на php. Смотреть фото телефонный справочник на php. Смотреть картинку телефонный справочник на php. Картинка про телефонный справочник на php. Фото телефонный справочник на php

телефонный справочник на php. Смотреть фото телефонный справочник на php. Смотреть картинку телефонный справочник на php. Картинка про телефонный справочник на php. Фото телефонный справочник на php

Corporate phone directory with contacts displayed on the office map

Contacts are divided into two types:

Imported contacts can not be edited, you can only hide them from the list and specify the location on the map. All that needs to be done in AD, then re-synchronize, which will be added new and updated.

Источник

Создание сайта адресно-телефонного справочника на php

Технико-экономическое обоснование разработки Интернет-сайта адресно-телефонного справочника «Spravka.kz». Основные характеристики пакета «Денвер»; создание базы данных phones. Архитектура и интерфейс web-сайта. Размещение Google Maps на интернет-странице.

Объект исследования: информационные ресурсы сети Интернет.

Предмет исследования: структура, содержание, оформление Web-сайта.

Цель исследования: создание Web-сайта в виде электронного справочника.

определить и проанализировать предпочтения пользователей в предметной области; изучить различные Интернет-ресурсы по данной проблеме;

выявить проблемы, связанные с получением информации по данной теме в сети Интернет;

изучить литературу по вопросу создания Web-сайт;

изучить требования, предъявляемые к созданию Web-сайтов;

познакомиться со структурными элементами Web-страниц;

проанализировать имеющиеся программные средства, предназначенные для создания Web-сайтов и выбрать оптимальное из них;

1. СОВРЕМЕННЫЕ ИНТЕРНЕТ-ТЕХНОЛОГИИ

1.1 История создания web-страниц

Сразу после создания Всемирной паутины, Первый в мире web-сайт появился 6 августа 1991 года. http://info.cern.ch/ Его создатель Тим Бернерс-Ли опубликовал на нём описание новой технологии World Wide Web (WWW), основанной на протоколе передачи данных HTTP, системе адресации URI и языке гипертекстовой разметки HTML. Также на сайте были описаны принципы установки и работы веб-серверов и web-браузеров. Сайт стал и первым в мире интернет-каталогом, так как позже Тим Бернерс-Ли разместил на нём список ссылок на другие сайты.

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

В какой-то момент стало очевидно, что дизайнеры не всегда могут совладать с предоставленными им возможностями. Стали все чаще появляться сайты, в которых из-за неудачного дизайна нельзя было прочитать информацию. Длинные меню, разбитые по всей странице, огромное количество мелькающих gif-баннеров, яркие цвета, контрастный текст, непродуманная навигация, большие тяжеловесные страницы,— вот характерные признаки web-дизайна того времени. [8]

В этот момент пришло осознание того, что при создании сайта необходимо думать об удобстве пользователя. Началось приложение моделей HCI (Human-Computer-Iteraction, человеко-компьютерное взаимодействие) в web. Это стало началом понятия юзабилити сайтов, основанной на психологии.

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

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

Пример создания фото-галереи, используя Flickr

Пример интеграции сервиса статистики Google Analytics и CakePHP

Список открытых API

Использование AJAX, javascript и различных Фреймворков (напр., Microsoft Silverlight, Adobe Flash)

Поддержка сайтами различных мобильных устройств

Использование медиа-информации (потоковое видео, подкасты)

Унификация авторизационных сервисов в крупных компаниях. Нарастающая популярность OpenID выводит это решение в лидеры. Однако используются и прочие решения, такие как SAML, Liberty и MS Passport.

1.2 Средства разработки web-страниц

Статистика используемости РНР приблизительна, но, согласно исследованию, проведенному Netcraft, в начале 2001 года РНР использовался на более чем 5 300 000 сайтах по всему миру. Для сравнения: в это время число IIS серверов было примерно таким же (5 млн.). Разработка интерпретатора РНР приняла форму организованного командного процесса, ядро интерпретатора разрабатывает компания Zend.com. При этом РНР распространяется свободно: его последнюю версию можно загрузить с сайта PHP.net. Модули РНР поставляются в комплекте с сервером Apache, в комплектах систем Linux.

Основными конкурентами РНР являются технологии JSP (Java Server Pages и Java Scriptlets), ASP (Active Server Pages), Perl, SSI (Server Side Includes), Cold Fusion Server Pages.

Основные достоинства РНР:

бесплатен; постоянно совершенствуется; работает на UNIX и Windows платформах;

допускает работу с большинством СУБД;

имеет широкий набор функций (более 3 тыс.);

допускает объектно-ориентированное программирование;

способен использовать протоколы HTTP, FTP, ШАР, SNMP, NNTP, РОРЗ, net sockets и другие;

позволяет выполнять все операции, что и перечисленные его конкуренты, и даже работать с файлами графики. Можно также запускать РНР-скрипты как интерпретируемые файлы и компилировать исполняемые приложения (в том числе с поддержкой графического интерфейса GTK).

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

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

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

Здесь переменной а присваивается значение 7, и она приобретает тип целочисленной. Переменная b обретает вещественный тип и становится равной 9,5. Строка Hello присваивается переменной с, в результате чего она становится строковой.

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

Источник

DVelum Project

Данный пример является переводом скринкаста http://dvelum.ru/cookbook_screencast_phonebook.html в формат статьи.

В этом рецепте мы познакомимся с основными возможностями системы, посмотрим различные интерфейсы. Создадим модуль для административной панели «Телефонная книга», сделаем это без использования программирования. Телефонная книга будет содержать записи имен, фамилий и номеров телефонов. Контакты разделим на группы при помощи словарей.

Создание объекта ORM (работа с базой данных)

Разработку начнем с базы данных (создание объектов ORM), для этого зайдем в административную панель, интерфейс управления ORM.

телефонный справочник на php. Смотреть фото телефонный справочник на php. Смотреть картинку телефонный справочник на php. Картинка про телефонный справочник на php. Фото телефонный справочник на php

Создадим новый объект, для этого нажмем кнопку «Add Object» / «Добавить объект» и заполним форму в открывшемся окне:

Сохраним объект нажатием кнопки «Save» / «Сохранить».

телефонный справочник на php. Смотреть фото телефонный справочник на php. Смотреть картинку телефонный справочник на php. Картинка про телефонный справочник на php. Фото телефонный справочник на php

Добавим поле first_name, в котором будет храниться имя. Укажем его заголовок и тип поля (строка переменной длинны (varchar), 255 символов). Отметим на форме, что поле поисковое и обязательное для заполнения.

Поисковые поля используются фильтрами данных. Поиск по таким полям производится на основе специального запроса, применяющего SQL- конструкцию LIKE.

телефонный справочник на php. Смотреть фото телефонный справочник на php. Смотреть картинку телефонный справочник на php. Картинка про телефонный справочник на php. Фото телефонный справочник на php

По такому же принципу создадим поля для фамилии и номера телефона:

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

Нажатием на кнопку «Dictionaries» / «Словари» откроем интерфейс управления словарями.

Создадим новый словарь, назовем его phone_group и добавим в него несколько записей (наименования групп), например, home, work, friends.

Закроем интерфейс управления словарями. Вернемся к редактированию полей объекта.

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

телефонный справочник на php. Смотреть фото телефонный справочник на php. Смотреть картинку телефонный справочник на php. Картинка про телефонный справочник на php. Фото телефонный справочник на php

На этом работа с базой данных закончена. Можно перейти к созданию интерфейса.

Воспользуемся встроенным механизмом автогенерации интерфейса. Создадим интерфейс для нового объекта, для этого перейдем в раздел «Modules configuration» / «Модули административной панели», в правом углу нажмем кнопку «Create Module» / «Создать модуль».

Остается выбрать объект, для которого будет сгенерирован модуль, и нажать кнопку «Create»/ «Создать».

* В списке объектов показываются только те, для которых еще не создан одноименный контроллер.

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

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

Интерфейс создан, осталось проверить и сохранить.

После обновления страницы, интерфейс появится в меню.

Зайдем в созданный модуль, попробуем создать запись в телефонной книге:

телефонный справочник на php. Смотреть фото телефонный справочник на php. Смотреть картинку телефонный справочник на php. Картинка про телефонный справочник на php. Фото телефонный справочник на php

телефонный справочник на php. Смотреть фото телефонный справочник на php. Смотреть картинку телефонный справочник на php. Картинка про телефонный справочник на php. Фото телефонный справочник на php

Обратите внимание, можно отредактировать запись и увидеть, что хранится история изменений:

телефонный справочник на php. Смотреть фото телефонный справочник на php. Смотреть картинку телефонный справочник на php. Картинка про телефонный справочник на php. Фото телефонный справочник на php

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

Все должно работать.

Доработка интерфейса

Перейдем к кастомизации интерфеса, добавим фильтрацию по группам и уберем колонку id.

В этом нам поможет дизайнер интерфейсов.

Открываем соответствующий раздел и загружаем проект, который нам сгенерировала система. Проект будет называться, так же как и объект – phonebook:

телефонный справочник на php. Смотреть фото телефонный справочник на php. Смотреть картинку телефонный справочник на php. Картинка про телефонный справочник на php. Фото телефонный справочник на php

Чтобы убрать колонку id в списке записей телефонной книги заходим в свойства dataGrid и удаляем соответствующее поле (двойной клик по элементу в дереве Panels перегружает панель Properties, расположенную ниже дерева).

В панели свойств присутствует кнопка быстрого доступа к колонкам таблицы, нажимаем ее, открывается окно управления колонками таблицы. Этот интерфейс позволяет манипулировать колонками таблицы. Слева представлена древовидная структура колонок, по умолчанию она скрыта, для того чтобы ее развернуть необходимо кликнуть на левую панель. Дерево позволяет сортировать колонки, так же возможно вложение колонок друг в друга. Кроме этого интерфейс позволяет настраивать редакторы ячеек, изменять свойства колонок, добавлять элементы Action Column.

телефонный справочник на php. Смотреть фото телефонный справочник на php. Смотреть картинку телефонный справочник на php. Картинка про телефонный справочник на php. Фото телефонный справочник на php

Чтобы создать фильтр для таблицы, добавим компонент Store filter, назовем его groupFilter:

Поместим его рядом с кнопкой добавления элемента, разделим их сепаратором (для этого перетянем элемент дерева на позицию под сепаратором sep1 Toolbar_Separator):

телефонный справочник на php. Смотреть фото телефонный справочник на php. Смотреть картинку телефонный справочник на php. Картинка про телефонный справочник на php. Фото телефонный справочник на php

Изначально фильтр представляет собой текстовое поле для ввода. Сделаем его выпадающим списком. Чтобы изменить тип, заходим в свойства компонента фильтра и изменяем тип поля фильтра. Указываем тип поля Adapter, тип адаптера – адаптер словаря.

Указываем для адаптера словарь phone_group и сохраняем:

Добавим заголовок для поля фильтра. Назовем его groupLabel, поместим его рядом с компонентом фильтра и укажем текст Group:

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

телефонный справочник на php. Смотреть фото телефонный справочник на php. Смотреть картинку телефонный справочник на php. Картинка про телефонный справочник на php. Фото телефонный справочник на php

Для этого изменим свойство фильтра Show all, поставим значение true. Таким образом, выведем дополнительную запись в выпадающем списке:

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

Фильтр будет удаленный (фильтрация будет происходить на стороне сервера). Указываем хранилище и поле фильтрации group:

телефонный справочник на php. Смотреть фото телефонный справочник на php. Смотреть картинку телефонный справочник на php. Картинка про телефонный справочник на php. Фото телефонный справочник на php

На этом редактирование интерфейса завершено. Сохраняем проект и выходим из дизайнера интерфейсов. Проверяем результат, приложение готово к использованию.

телефонный справочник на php. Смотреть фото телефонный справочник на php. Смотреть картинку телефонный справочник на php. Картинка про телефонный справочник на php. Фото телефонный справочник на php

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

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *