いろいろPHP~備忘録~

読者です 読者をやめる 読者になる 読者になる

いろいろPHP ~備忘録~

PHP関連の備忘録

【PHP】WebAPIを叩くときにcURL関数を利用する

PHP API

概要

 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

参考URL
qiita.com
qiita.com

【GitHub】GitHubのIssueと紐付けて、ソース管理

GitHub

作業の流れ

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

準備完了です。

2.GitHubでIssueを登録

f:id:takahiro0078:20170125172437p:plain

赤の四角で囲っている番号を使用して、Gitでプッシュする際にIssueと紐付けます。

3.ブランチを作成

これから追加する機能とか既存のソースコードの修正についてはGit上で専用のブランチを作成します。

以下のコマンドを実行すると、feature/sample_testという名前のブランチが作成されて、かつそのブランチに切り替わります。

git checkout -b feature/sample_test

ブランチが切り替わったら、ソースの修正や機能追加などを実施していきます。

4.コミット

ソースの修正が終了したら、コミットします。
コミットする前にaddを実行します。

git add .

以下のコマンドで修正したソースをローカルリポジトリにコミットします。

// コメントを書いた後に、スペース、#1でIssue番号と紐付ける
git commit -m "コメント箇所 #1"


5.プッシュ

最後にリモートリポジトリにコミットした内容をプッシュします。

git push origin feature/sample_test

これでGitHub上に修正した内容が反映されていたらOKです。

【FuelPHP】PHPMailerを使ってGmailのSMTP経由でメールを送信する

FuelPHP PHP

概要

外部のSMTP経由でメールを送信します。
今回は、GmailSMTPPHPライブラリ(PHPMailer)を利用します。

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で管理

FuelPHP PHP

概要

データベースでセッション管理するための設定をしていきます。
管理方法はいくつかありますが、今回はデータベースで管理します。

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を利用

FuelPHP PHP

概要

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の内容が埋め込まれます。