【PHP】WebAPIを叩くときにcURL関数を利用する
概要
WebAPIをcURL関数を利用し、実行する方法の簡単な説明
cURLとは
PHPで外部のサイトにアクセスして様々な情報を取得したいときに有効なのがcURL関数です。
他にHTTPリクエストで情報を取るのには、file_get_contentsという関数もあります。
実装方法
GETメソッドの実行を行いGoogle Books APIから書籍情報を取得します。
例
<?php // Google Books API $url = 'https://www.googleapis.com/books/v1/volumes?q='.$hoge; $ch = curl_init(); //開始 curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'GET'); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); // 証明書の検証を行わない curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); // curl_execの結果を文字列で返す $response = curl_exec($ch); $result = json_decode($response, true); curl_close($ch); //終了
cURL関数の利点として、リクエストヘッダーを変えたりするなど、
リクエスト方法をカスタマイズすることが可能です。
以上です。
リファレンス
PHP: cURL 関数 - Manual
【GitHub】GitHubのIssueと紐付けて、ソース管理
作業の流れ
Issue毎にブランチを切って作業を行います。
※cloud9上で作業を行います。
techacademy.jp
1.作業前に準備
cloud9上のターミナルでコマンドを入力していきます。
・手元のGitのブランチをmasterに切り替える
git checkout master
・GitHubにあるソースコードをダウンロードするためにgit fetchコマンドを利用する
git fetch origin
・ダウンロードされたGitHub上のブランチのmasterという名前のブランチを手元のmasterに取り込むためにgit mergeコマンドを実行します
git merge origin/master
準備完了です。
3.ブランチを作成
これから追加する機能とか既存のソースコードの修正についてはGit上で専用のブランチを作成します。
以下のコマンドを実行すると、feature/sample_testという名前のブランチが作成されて、かつそのブランチに切り替わります。
git checkout -b feature/sample_test
ブランチが切り替わったら、ソースの修正や機能追加などを実施していきます。
4.コミット
ソースの修正が終了したら、コミットします。
コミットする前にaddを実行します。
git add .
以下のコマンドで修正したソースをローカルリポジトリにコミットします。
// コメントを書いた後に、スペース、#1でIssue番号と紐付ける git commit -m "コメント箇所 #1"
【FuelPHP】PHPMailerを使ってGmailのSMTP経由でメールを送信する
1.PHPMailerをcomposerでインストール
composer.jsonに下記の行を追加します。
{ "require": { "phpmailer/phpmailer": "~5.2" ← 追加する行 }, }
追加したら、composerをアップデートして、インストールします。
そうするとvendorディレクトリ配下にphpmailerディレクトリが追加されます。
下記参考
packagist.org
2.設定
下記のように記述します。
<?php $to = 'sample@test.com'; // 宛先 $subject = "メールの件名"; $body = "メール本文"; $from = "from@test.com"; // 送信元 $smtp_user = "gmailアカウント@gmail.com"; $smtp_password = "gmailのパスワード"; $mail = new PHPMailer(); $mail->IsSMTP(); $mail->SMTPDebug = 1; // debugging: 1 = errors and messages, 2 = messages only $mail->SMTPAuth = true; $mail->CharSet = 'UTF-8'; $mail->SMTPSecure = 'tls'; $mail->Host = "smtp.gmail.com"; // 外部SMTPサーバーのホスト名(gmail) $mail->Port = 587; // 外部SMTPのポート番号 $mail->IsHTML(false); $mail->Username = $smtp_user; // gmailのアカウント名 $mail->Password = $smtp_password; // gmailのパスワード $mail->SetFrom($smtp_user); $mail->From = $from; // Fromのメールアドレス $mail->Subject = $subject; // 件名 $mail->Body = $body; // 本文 $mail->AddAddress($to); // Toのメールアドレス if( ! $mail -> Send() ){ $message = "Message was not sent<br/ >"; $message .= "Mailer Error: " . $mail->ErrorInfo; } else { $message = "Message has been sent"; } return $message;
以上で、送信ができます。
対処法
メールが送信できない時の対処法です。
1.「安全性の低いアプリのアクセス」をオンにする
こちらにアクセスして、「オンにする」を選択します。
https://www.google.com/settings/security/lesssecureapps
2. https://accounts.google.com/DisplayUnlockCaptcha よりGoogleアカウントへのアクセスを許可する
【FuelPHP】セッションをDBで管理
概要
データベースでセッション管理するための設定をしていきます。
管理方法はいくつかありますが、今回はデータベースで管理します。
1.設定
セッションクラスは、 fuel/core/config/session.php 設定ファイルで設定されています。
そのファイルをコピーして、fuel/app/config/ 配下にコピーします。
この設定で上書きが可能になります。
2.設定ファイルの修正
<?php return array( // cookieからdbに変更 'driver' => 'cookie', → 'db',
3.セッション管理用のテーブルを作成
次のoilコマンドをターミナル上で入力します。
$ php oil r session:create
セッションを管理するためのテーブルが自動で作成されます。
生成されるテーブル定義
CREATE TABLE `sessions` ( `session_id` varchar(40) NOT NULL, `previous_id` varchar(40) NOT NULL, `user_agent` text NOT NULL, `ip_hash` char(32) NOT NULL, `created` int(10) unsigned NOT NULL, `updated` int(10) unsigned NOT NULL, `payload` longtext NOT NULL ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
以上でセッションがデータベースで管理されるようになりました。
【FuelPHP】Presenterでtemplateを利用
概要
PresenterでTemplateを利用します。
Templateの利用方法は以下の記事を参考にしてみて下さい。
wakuwakupush.hatenablog.com
コントローラーにファイルを作成して、Templateを継承します。
<?php class Controller_Welcome extends Controller_Template { public function action_index() { $this->template->title = 'title'; $this->template->content = Presenter::forge('welecome/index'); } }
Templateのプロパティ$This->templateはViewインスタンスになります。
結果、Templateの中に、Presenterを通して、welecome/indexの内容が埋め込まれます。