Progress28.ru

IT Новости
0 просмотров
Рейтинг статьи
1 звезда2 звезды3 звезды4 звезды5 звезд
Загрузка...

Php recordid buy

geoip_record_by_name

(PECL geoip >= 0.2.0)

geoip_record_by_name — Возвращает подробную информацию об адресе, найденном в базе GeoIP

Описание

Функция geoip_record_by_name() возвращает информацию об адресе, соответствующую имени хоста или IP адреса.

Функция доступна для бесплатной версии GeoLite City Edition и коммерческой GeoIP City Edition. Если необходимые базы отсутствует, выводится предупреждение.

Следующие имена ключей возвращаемого ассоциативного массива:

  • «continent_code» — Двухбуквенный код континента (с версии 1.0.4 с libgeoip 1.4.3 или более новой)
  • «country_code» — Двухбуквенный код страны (см. geoip_country_code_by_name() )
  • «country_code3» — Трехбуквенный код страны (см. geoip_country_code3_by_name() )
  • «country_name» — Название страны (см. geoip_country_name_by_name() )
  • «region» — Код региона (например: CA для Калифорнии)
  • «city» — Город.
  • «postal_code» — Почтовый индекс, FSA или Zip-код
  • «latitude» — Широта, знаковое вещественное число (signed double).
  • «longitude» — Долгота, знаковое вещественное число (signed double).
  • «dma_code» — Код рыночной зоны (Designated Market Area, DMA), только для США и Канады
  • «area_code» — Код телефонной сети общего пользования (PSTN), например, 212

Список параметров

Имя хоста или IP-адрес, данные по которому должны быть получены.

Возвращаемые значения

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

Список изменений

ВерсияОписание
1.0.4Добавлен код континента (continent_code) с GeoIP Library 1.4.3 или более новыми.
1.0.3Добавлен трехбуквенный код страны (country_code3) и название страны (country_name).

Примеры

Пример #1 Пример использования geoip_record_by_name()

Выведет массив, содержащий запись о хосте example.com.

Результат выполнения данного примера:

User Contributed Notes 3 notes

I know this may be obvious to some but I thought I would post it anyway to help others. The GEOIP section of the PHP site is a bit limited in useful tips/documentation other than the initial functions and examples.

If you are trying to get information about the specific user visiting your site, you should use their IP address via the remote address in the GEOIP function. In addition here are some useful bits of code to pull certain information from the function.
# Collect a specific users GEOIP info
$info = geoip_record_by_name ( $_SERVER [ ‘REMOTE_ADDR’ ]);
print_r ( $info );

# To get the info from one specific field
$country = $info [ ‘country_name’ ];
echo $country ;

# To combine information from the array into a string
$info = implode ( «/» , $info );
echo $info ;
?>

Note on field in this array is NOT included, the connection speed of the user. To find the connection speed/connection type the visitor has, you can use the geoip_id_by_name() function. Lastly it is a good idea on whatever platform you are using GEOIP on to make sure it’s data is up-to-date. On most Linux/UNIX systems with terminal you can use «pear update-channels» and «pecl update-channels» commands to keep your libraries updated. This is a good idea because GEOIP databases and country/location codes often change over time.

I use this additional code in my error handler class to suppress «PHP Notice» send by the function geoip_record_by_name() in case of IP not found. No e-mails or echo on display is welcome for this notice in development environment.

public static function Handler($errNo, $errStr, $errFile, $errLine) <
$backtrace = ErrorHandler::GetBacktrace(2);
// detection of unwelcome PHP Notice and its ignoring.
if($errNo == E_NOTICE && preg_match(‘/^geoip_record_by_name.*Host.*not found$/’, $errStr)) <
return;
>

The rest of normal error handler code remains.

RedBeanPHP: Отличная ORM для PHP (примеры использования)

Содержание:

ORM или Object-relational mapping (рус. Объектно-реляционное отображение) — это технология программирования, которая позволяет преобразовывать несовместимые типы моделей в ООП, в частности, между хранилищем данных и объектами программирования. ORM используется для упрощения процесса сохранения объектов в реляционную базу данных и их извлечения, при этом ORM сама заботится о преобразовании данных между двумя несовместимыми состояниями. В данной заметке речь пойдёт о мощной ORM для PHP — RedBeanPHP. Заметка особенно будет полезна новичкам, материал изложен в виде краткого конспекта. Тем не менее, всегда можно «сходить» на официальный сайт и посмотреть, что там да как ☺

Установка

Создать файл composer.json с таким содержимым:

Из консоли выполнить:

Подключение

В корне проекта создать файл index.php , в нём подключить автозагрузчик композера autoload.php и подключиться к БД Mysql:

CRUD: Create (Создание записи)

CRUD: Read (Чтение)

Если нужно получить данные без каких-либо условий, то легче это сделать методами load() и loadAll()

Если по каким-то причинам вам понадобится именно массив данных, то на этот случай есть метод export() :

CRUD: Update (Обновление записи)

CRUD: Delete (Удаление)

Удалить запись с >

Удалить записи с >

Метод R::wipe() полностью очищает указанную таблицу:

Метод R::nuke() полностью очищает всю базу данных. Режим заморозки должен быть выключен:

Поиск данных: find(), findOne(), findAll()

Если вы не знаете идентификатор бина, вы можете искать бины, используя метод find() :

Если необходимо получить только одну запись, используем метод findOne() :

Если необходимо получить все данные без особых условий, используем метод findAll() :

Метод findLike()

Данный метод предназначен для поиска по записям (однако, в нём существует проблема с биндингом):

Построение запросов (Querying)

При использовании RedBeanPHP (как и любой другой ORM) не всегда можно ограничится простыми методами поиска (Finding). Часто существует необходимость сделать более сложный запрос, который сделать простыми методами крайне проблематично. Важно! Рассмотренные выше методы Finding необходимо применять, если требуется сделать простой запрос, без каких-либо сложных условий. В рассмотренных ниже примерах всегда возвращается массив данных (а не объекты-бины), поэтому это тоже является плюсом ☺

Метод exec()

Метод для произвольного SQL запроса (чаще всего применяется для добавления, изменения и удаления):

Метод getAll()

Вернёт массив данных (все записи/несколько по условию) из указанной таблицы:

Метод getRow()

Вернёт все записи, но выводит только одну. Рекомендуется добавлять LIMIT 1 , чтобы и запрашивалась тоже только одна запись:

Метод getCol()

Метод getCell()

Вернёт ячейку одной записи:

Метод getAssoc()

Чтобы получить ассоциативный массив с указанным столбцом ключа и значения, используйте:

Метод getInsertID()

Вернёт ID последней вставленной записи:

Методы convertToBean() и convertToBeans()

Конвертация массива записей в бины или один бин (convertToBean())

Работа с Базами Данных и их таблицами

Метод inspect() возвращает названия таблиц в БД. Если параметром передать название таблицы, то он вернёт все поля этой таблицы:

Транзакции

RedBeanPHP предлагает три простых метода для использования транзакций базы данных: begin() , commit() и rollback() . Использование:

Связи (отношения) в RedBeanPHP

One-to-many (связь один ко многим). Достанем из БД все книги, у которых category_ >

Many-to-one (связь Многие к одному). Достанет из базы название категории, с которой связана книга

Many-to-many (связь Многие к одному). Достанет из базы (из связующей таблицы) все книги этой категории:

Методы подсчёта (Counting)

Простой подсчёт элементов:

Подсчёт элементов связанных таблиц:

Логирование и отладка в RedBeanPHP

В данной заметке мы познакомились с одной из мощнейших ORM для PHP. Используя данную ORM можно значительным образом облегчить себе жизнь по работе с базами данных. Удачи!)

H ActiveRecord своими руками на PHP в черновиках Из песочницы

Доброго времени суток! Я работаю над веб-проектом X. Проект большой, сложный и перспективный. Но, как и в любом другом проекте, есть много кода, написанного наспех с пометкой «когда-нибудь исправлю».

Пришло время исправлять.

Читая очередной мануал, я обнаружил шаблон проектирования «Active Record». Простой запрос в Google, и вот уже подруга Википедия коротко и ясно рассказала обо всём (https://ru.wikipedia.org/wiki/ActiveRecord). Смысл шаблона прост: для работы с таблицами в базе данных решено было создать специальный класс, который бы выполнял все основные действия (CRUD).

Вот всё, что нужно для подключения: поместим в массив $dbConfig (тут будет 5 элементов):
host, user, pass, db, table.

Пусть функция setConfigDB заполнит нужными значениями $dbConfig.

Теперь создадим метод подключения к БД:

Тут все как в книжке. Единственное, что mysql_query(«SET NAMES cp1251»); позволит читать данные в нужной кодировке. База данных настроена на эту кодировку.
Я не стал выбирать какие-то особенные имена, не стал придерживаться именования CRUD (Create, Update, Delete), а писал как есть.
Для того чтобы вставить запись, будем использовать эту функцию:

Главное потом надо не забыть, что здесь в качестве параметров передаются массивы. Foreach работает с ними, а без него проблемно создать запрос с несколькими полями и соответствующими значениями. Параметр $key у нас принимает имена полей, параметр $value — значения, которые надо записать в соответствующие поля. В функции два цикла, сначала пишем все поля, а потом все значения. Пользуемся стандартными возможностями PHP, чтобы получить нужную нам строку. В конце подключаемся к БД и выполняем запрос. Подключение к БД скрыто, чтобы программист только лишь передал нужную информацию в метод.

Для чтения данных и таблицы будем использовать две функции selectAll() и select($fields). По смыслу их можно объединить в одну, но по факту проще создать две.

Так как инструкция SELECT вернет нам результат, то в return поместим $result = mysql_query($query);
Далее удаление.

Метод — одноразовый. Один вызов — удалена одна строка. Известно, что инструкция DELETE возвращает число удаленных строк, для удобства вернем их return $result = mysql_query($query);.
Теперь обновим наши записи в табличке:

Функция содержит 4 входных параметра $key, $value, $where_key, $where_value. Может показаться, что их слишком много, но с другой стороны инструкция UPDATE довольно подробная.

Так вот, $key=$value это то, что мы поместим на место старой записи, а $where_key и $where_value это то, где нам искать. То есть: находим строку с полем $where_key значение которого равно $where_value, в ней записываем значение $value в поле $key. Вроде сложно, но если прочесть команду в SQL, то сразу становиться понятным, что к чему.
Класс готов, теперь поработаем с экземпляром:

Создадим новый объект, запишем все необходимое для дальнейшей работы:

Далее вставим запись в табличку:

Не забываем, что в метод insert в качестве параметров передаются массивы.
Давайте теперь посмотрим, что у нас получилось в таблице:

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

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

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

В PHP 5.3 появился ActiveRecord аналогичный Ruby on Rails

Поиски решения активной записи в php были изнурительны до того момента, как один из источников в google не предложил вариант ActiveRecord аналогичный Ruby on Rails. Читатель заметит, что вышеупомянутые результаты слишком устаревшие и большая часть из них мало общего с действенностью.

В конце концов, PHP получит более надежный способ активной записи аналогичный способу применяемому в RoR. И, к счастью, это время настало! Спасибо PHP 5. 3 и его новым полезным функциям: схлопыванию, позднему статистическому связыванию и пространству имен.

Я со своим другом Каеном, внесли улучшения в раннюю версию на базе ORM, которую он написал до появления PHP 5. 3. Мы создали ActiveRecord вдохновленные Ruby on Rails и попытались сохранить его возможности, насколько это было возможно. Нашей основной целью в этом проекте – дать возможность PHP-разработчикам создавать крупные проекты с большей гибкостью.

Мы также надеемся что использование данного продукта подтолкнет PHP сообщество к дальнейшему осознанию всех замечательных преимуществ Ruby on Rails. Ладно , хватит крутиться вокруг да около, давайте перейдем к самому интересному!

Обзор ActiveRecord

Позвольте мне согласиться с тем фактом, что мы пытались сохранить сходство между нашим детящем и ActiveRecord на базе Ruby on rails, чтобы избежать головной боли и повысить работоспособность программиста. Сохраняя это сходство, мы постарались воссоздать многие функции. Вот список этих функций:

  • Методы поиска
  • Методы динамического поиска
  • Методы записи
  • Отношения
  • Верификация
  • Обратные вызовы
  • Сериализация
  • Поддержка различных драйверов
  • Другие параметры

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

Конфигурация

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

  • Установка типовой auto_load директории
  • Настройка соединений с вашей базой данных

Как только вы настроите два этих параметра ваша работа окончена. ActiveRecord заботится о вас и берет остальную часть работы на себя. Она не требует проводить какую либо дополнительную работу со схемами ваших yaml/xml файлов. Также запросы к базу данных для получения информации и кэш-файлов будет проходить без лишних вызовов для одной схемы.

Методы поиска

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

Методы динамического поиска

ActiveRecord на основе RoR расширяет функции использования поиска, позволяя динамически создавать методы основанные на атрибутивных именах. Это значит, вы с легкостью можете сделать запрос»find_by_attribute_name» без явного классового определения. Мы сделали это возможным с помощью использования волшебного метода в PHP 5.3: __callStatic() .

Методы записи

Какой смысл иметь объект, который инкапсулирует запись из БД, если вы не можете ничего сделать с этим?

Отношения

Объединения — сложная часть ActiveRecord. Они используют те же самые опции, что в RoR.

Верификация

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

Обратные вызовы

Обратные вызовы дают вам возможность управлять вашей моделью до/после какого-то события на протяжении ее существования. Вы можете выбрать методы, которые будут вызваны как callback до или после других методов примененных в модели. К сожалению, даже PHP 5.3 имеет ограничения — вы не можете иcпользовать callback в виде статических методов, они должны быть динамическими.

Сериализация

Поддержка различных драйверов

В настоящее время существует поддержка только для MySQL (через mysqli) и sqlite3. Однако мы надеемся ввести большее число драйверов в проект, что должно помочь в работе с такими БД как PostgresSQL и Oracle. Соедиение/адаптер — сделан так, что не возникнет никаких затруднений при создании большего числа драйверов, когда будет нужно.

Другие параметры

При декларировании модели вы также можете указать primary_key и table_name.
Защищенные/доступные определения уже доступны, так что вы можете справится со многими распространенными проблемами. Атрибуты могут быть псевдонимами, чтобы вам было легче получить доступ к ним через разные имена.

Будущее

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

Читать еще:  Php connect to mysql
Ссылка на основную публикацию
Adblock
detector