メール送信

use Cake\Mailer\Email;

設定ファイルにおけるdefault設定を使用
$email = new Email('default');
CakePHP インストール・設定」参照
$email
  ->setFrom(['me@example.com' => 'title'])
  ->setTo('yone@office-yone.com')
  ->setSubject('題名')
  ->send('本文');

reCAPTCHA認証

準備

キー取得

reCAPTCHAのサイト登録のページでキーを取得
https://www.google.com/recaptcha/admin


googleのアドレスでないといけない
xamppで実行する場合のアドレスは「127.0.0.1」
URLもlocalhostでなく127.0.0.1/~でないとエラーとなる
※xamppでもバーチャルホストにてドメインを設定した場合はそのドメインで使用可

実装

クライアント側

<html>
<head>
<script src="https://www.google.com/recaptcha/api.js" async defer></script>
<script>
 function validateRecaptcha ( code ) {
  if ( !!code ) {
   var form = document.querySelector(".recaptcha");
   form.removeAttribute('disabled');
  }
 }
</script>
</head>
<body>

<form action="server.php" method="post" enctype="multipart/form-data">
  <div
   class="g-recaptcha"
   data-callback="validateRecaptcha"
   キー取得で取得したSiteKeyを設定
   data-sitekey="XXXXXXXXXXXXXXXXXXXX">
  </div>

  <input name="test" value="test" />
  <input type="submit" name="my_submit" value="送信" id="btnSubmit"
   class="recaptcha" disabled />
</form>

</body>
</html>

サーバー側

<?php
クライアント側からのreCAPTCHAパラメータ(SiteKey)を取得
$recaptcha = htmlspecialchars($_POST['g-recaptcha-response'], ENT_QUOTES, 'UTF-8');

if(isset($recaptcha)){
 $captcha = $recaptcha;
}else{
 $captcha = "";
 echo "captchaエラー";
 exit;
}
キー取得で取得したSecretKeyを設定
$secretKey = "XXXXXXXXXXXXXXXXXXXX";

SiteKeyとSecretKeyを照合
$resp = @file_get_contents("https://www.google.com/recaptcha/api/siteverify?secret={$secretKey}&response={$captcha}");
$resp_result = json_decode($resp, true);

if(intval($resp_result['success']) !== 1) {
 echo('NG');
}else{
 echo('OK');
}

PHP Smarty

設定

ライブラリ

https://www.smarty.net/

配置

ライブラリ
smarty-X.X.X
 └demo
 └libs
  └Smarty.class.php
  └他
コンパイルファイル配置場所
compile
テンプレートファイル配置場所
template
 └test.tpl

テンプレート

※test.tpl
<!DOCTYPE html>
<html>
<head>
 <meta charset="UTF-8">
 <title>~</title>
</head>
<body>
 埋め込み用変数
 <p>{$val1}</p>
 <p>{$val2}</p>
</body>
</html>

テンプレート利用

※~.php
<?php
require_once '~/smarty-X.X.X/libs/Smarty.class.php';

$smarty = new Smarty();
テンプレートファイル配置場所指定
$smarty->template_dir = '~/template';
コンパイルファイル配置場所指定
$smarty->compile_dir = '~/compile';

テンプレートファイルの変数へ値を埋め込み
$smarty->assign('val1', 999);
$smarty->assign('val2', 'aaa');
描画
$smarty->display('test.tpl');

PostgreSQL バックアップ/リストア

バックアップ

スクリプト形式

pg_dump -Fp (オプション) > (出力先パス)

カスタム形式

pg_dump -Fc > (出力先パス)

共通オプション

テーブル名指定
-t (正規表現)
-t "tbl_*"

クリーンアップ(リストア前削除)
-c

リストア

スクリプト形式

psql < (入力先パス)

カスタム形式

pg_restore -d (db名) (入力先パス)

PostgreSQL コマンド

接続前

接続

psql -d (DB名) -U (ユーザ名) -h (ホスト名) -p (ポート番号)
psql -d testdb -U testuser -h localhost -p 5432

DB一覧

psql -l

外部スクリプト実行

psql (接続情報) -f "\~\test.sql"
接続と同時

接続後

切断

# \q

テーブル一覧

# \d
# \dt

標準出力先

show data_directory;

データベース作成

create database test;
create database test owner user;
create database test encoding 'UTF8' /'SJIS'

ユーザー作成

create user test;

外部スクリプト実行

\i test.sql
パスを"では囲まない

OSコマンド実行

\! ls
\! dir