Всем привет! В этой статье мы будем обновлять наш twitter статус с помощью PHP (Фреймворк Codeigniter) и сервиса “Twitter API”. Рекомендую вам следовать шаг за шагом, чтобы не запутаться и во всем разобраться. Нужно сказать, что при написании статьи использовалась программа: CodeIgniter PHP Framework 1.7.1. Что ж поехали!
Настройка CodeIgniter
Для начала, нам необходимо установить некоторые настройки умолчания в разделе настроек codeigniter. Откройте файл system/application/config/autoload.php и измените следующую строку:
на:
С помощью этого параметра мы будем осуществлять автозагрузку базы данных. Далее откройте файл database.php и измените параметры соединения с базой данных на ваши: имя базы данных, пользователь, пароль. В качестве названия мы будем использовать twitter_api. Теперь откройте файл config.php и измените параметр base_url на путь к вашей папке с codeigniter. Моя папка называется twitter_api. Это моя системная папка. Мой параметр выглядит таким образом:
Заполнение базы данных
Так как мы будем работать с базой данных, нам необходимо иметь некоторые данные в базе, чтобы иметь возможность их использовать. Откройте phpmyadmin или вашу систему управления базами данных и создайте новую базу с именем ci_twitter_api. Отлично, теперь мы создадим новую таблицу, используя следующий
Нажмите кнопку подтверждения и ваш запрос будет выполнен. Теперь ваша структура параметров доступа к twitter аккаунту будет выглядеть таким образом:
Создание модели
Для этого перейдите в папку system/application/models и создайте новый файл с именем twitter_model.php.
Для начала, мы объявим две глобальные переменные в самом верху.
$accounts_table – содержит имя таблицы, которую мы только что создали. $update_url – это адрес, который мы будем использовать для изменения нашего статуса. Если twitter поменяет этот адрес, вам необходимо будет также поменять его в этой переменной, так как этот адрес будет основой нашего приложения.
Далее, мы создадим наш первый метод, который просто возвратит активный аккаунт пользователя, который хранится в бд. Для определения активности мы будем использовать строку active и значение 1. Мы добавили этот параметр, потому что некоторые люди имеют несколько twitter аккаунтов. Ниже код метода:
В этом методе, для удобства, мы используем класс active_records для получения активного аккаунта и возвращения избранной строки.
Далее, мы создадим наш главный метод, который будем изменять twitter статус. Он будет использовать наш пароль, имя пользователя, и конечно же сообщение которое мы будем отправлять для обновления статуса. Кроме этого, он будет определять HTTP_CODE, который будет возвращен от twitter и будет сообщать нам о результате выполнения обновления статуса.
На первый взгляд, код может показаться сложным, но это не так, он прост для понимания. Наиболее важная часть метода, та где мы используем cURL для связи с Twitter. Это отличная библиотека, для того, чтобы отправлять и получать данные из twitter.
Теперь рассмотрим подробнее, curl_init инициализирует сессию и принимает URL, как параметр – в нашем случае это url для обновления twitter статуса, который предоставляется сервисом Twitter API.
С помощью curl_setopt, мы устанавливаем некоторые необходимые опции для передачи данных.
CURLOPT_POST – мы устанавливаем значение «1», для того чтобы HTTP запрос, был аналогичен запросу посылаемому из HTML формы.
CURLOPT_POSTFIELDS – этот параметр содержит данные, которые нам необходимо отправить. В нашем случае это ‘status=’ и наше сообщение. Также мы должны использовать функцию urlencode, для того, чтобы иметь возможность использовать спецсимволы в нашем сообщении, такие как ‘%&/” .
CURLOPT_RETURNTRANSFER – этот параметр должен быть равен «1», это важно, потому что, мы будем получать ответ в виде строки, которая будет содержать информацию об успешности обновления twitter статуса.
CURLOPT_USERPWD – этот параметр предназначен для аутентификации. Он просто содержит наш twitter пароль и имя пользователя в формате: username:password.
После установки CURLOPT параметров, мы выполняем отправку с помощью функции curl_exec() и получаем обратный ответ с помощью curl_getinfo(CURLINFO_HTTP_CODE). Как вы уже поняли, HTTP_CODE сообщает нам об успешности выполнения запроса. Если код равен «200», это значит, что все работает и статус обновлен. В нашем методе, при получении ответа 200, мы обновляем запись в базе данных и возвращаем TRUE, в противном случае возвращаем FALSE.
В завершения нашей модели, мы создадим еще один, последний, метод. Он будет получать наше последнее сообщение из базы данных, это необходимо для вывода его в виде (view).
Этот метод достаточно простой. Он выбирает из БД строку last_message, активного аккаунта. И возвращает ее в конвертированном виде с помощью htmlspecialchars, для замены некоторых символов HTML сущностями. Вот мы и закончили писать модель для обновления twitter статуса с помощью PHP. Теперь приступим к следующему шагу.
Создание контроллера
Сейчас перейдите в папку system/application/controllers и создайте новый файл с именем twitter.php.
Давайте добавим в него несколько строк:
Это простой конструктор, который будет загружать нашу модель (twitter_model). Теперь, перейдем к созданию index() метода:
В этом методе, мы передаем простой текст, имя пользователя активного twitter аккаунта и последнее его сообщение в массиве $data.
Благодаря нашей модели, нам очень просто получать информацию об активном пользователе и его статусе. В этом и есть
Теперь, закончим создание контроллера, создадим метод update:
Если понимаете весь код данного метода, отлично можете следовать к следующему шагу. Если нет, давайте разберем код поэтапно, он будет повторяться, но так будет понятнее о чем идет речь.
С помощью $this->input->post(‘submit’), определяем факт подачи запроса из формы. Далее загружаем библиотеку валидации форм (form_validation). Устанавливаем ограничения на сообщение от 5 до 140 символов, удаляем пробелы с помощью функции trim, также устанавливаем поля required, чтобы исключить возможность получения пустого сообщения. Функция set_rules, имеет два параметра: первый – это имя нашего поля сообщения указанного в главном виде, второй – это имя пользователя, которое вставляется в сообщение ошибки (будет понятнее, когда мы создадим вид).
После установки параметров валидации, запускаем валидацию $this->form_validation->run(), которая возвращает истину или ложь. В случае FALSE запускаем наш index() метод. Он будет отображать сообщение об ошибке, когда мы создадим виды.
Рассмотрим следующий фрагмент кода:
Благодаря нашей модели, мы с легкостью получаем имя пользователя и пароль twitter аккаунта, активного пользователя. Используя $this->twitter_model->update_status(), мы собственно отправляем новый статус, как помните, в этот метод необходимо передать имя пользователя, пароль и сообщение. Если статус обновлен успешно, мы перенаправляем методом redirect(), используя url helper. Если, что то не так, мы выводим ошибку и загружаем виды, которые мы создадим в следующем шаге.
Создаем виды
Для полноценной работы нашего PHP приложения, нам необходимо создать виды, для этого перейдите в папку system/application/views и создайте следующие файлы:
- header.php
- footer.php
- index.php
- error.php
header.php – содержит основную информацию и метатеги, подключает css стиль, и открывает главные див блоки:
Мы используем функцию base_url(), для указания пути к нашему css файлу, который мы создадим в следующем шаге.
footer.php – просто содержит все закрывающие теги:
index.php – это страница, на которой будут происходить главные действия приложения:
Все переменные используемые в этом виде, передаются через index() метод нашего контроллера. В дополнение, мы используем form helper для создания html форм. Помните, ранее упоминалось, что сообщение об ошибке, будет выводится в этом виде. form_error(‘message’) – будет осуществлять это. Ниже форм, мы будем выводить последнее сообщение, которое отправил активный пользователь.
error.php – будет использоваться, как отдельный файл ошибки, для вывода сообщения в случае невозможности обновления статуса в twitter.
Создание CSS файла
Для того, чтобы сделать наше приложение более красивым, мы добавим css код стиля. Зайдите в папку system/ и создайте папку css. В этой папке создайте файл style.css и вставьте в него следующий код:
Код кроссбраузерный и в этом его преимущество.
Источник: sitear.ru