【備忘録】CakePHP2で言語切り替え

今まで、日本語サイトばっかりだったから、国際化対応って初めてなんです。

CakePHP2は国際化の仕組みを持っているようですが、今回は言語によって入力フィールドやデザインも変えたいので結局独自方式ですることにしました。CakePHP2の国際化

 

 

 

1.先ずは言語を取得しないとね
言語の取得はパラメータで取得しSessionに入れるだけ。言語パラメータがなかったらデフォルトをセットする。

2.切り替え対象は、HTMLとメールテンプレートなのでViewフォルダにja,enフォルダを作る。

View/Controller/ja
View/Controller/en

3.renderで表示

$this->render($this->name . '/' . lang . '/' . $this->action)

HTMLとメールテンプレートは、これで良いけど。入力エラーやメール件名をどうしようかな?これは、CakePHP2の国際化を使った方が良さそう。でも結局、今持ってるメッセージ配列を言語で分けるように変更。

'MessageID' =>array('ja' =>'テスト', 'en' =>'TEST')

【備忘録】International Telephone Input 国際電話対応入力フィールド

プライベートでは絶対使わない国際電話。今回訳あって国際電話対応の入力フィールドが必要で調べたら、

https://intl-tel-input.com
便利なものを発見。

こんな感じで、国際電話番号が取得できる。

<link rel="stylesheet" href="path/to/intlTelInput.css">

<input type="tel" id="phone">

<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script src="path/to/intlTelInput.js"></script>
<script>
  $("#phone").intlTelInput();
  var $phone = $("#phone").intlTelInput("getNumber"); //国際電話番号を取得
</script>

【備忘録】AWS CodeCommitとSourceTree

GitHubを使いたいので調べてみたら、AWSでCodeCommitがあったので決定。
でもAWS初心者なのでGitHubに辿り着くまでが手間取った。

【AWS】
・AWSアカウントの作成
・CodeCommitを申し込み
・IMAユーザを作成する
・IMAユーザへCodeCommitへのFull Access権限を与える
・IMAユーザのgit認証情報を作成する

【CodeCommit】
・IMAユーザでログインし直す
・リポジトリを作成する
・空ブランチを作成する

【SourceTree】
・空ブランチをCronする。この時、git認証情報が聞かれる。
・空ブランチにソースを登録して、Commit=>Pushする。(masterの出来上がり)

後は、作業ブランチを作成し作業するだけ。

やっと出来たよ。

とりあえず終わり。50歳のシステムエンジニア頑張ったよ

2月のひと月で作り変えを頼まれたサイトもようやく終わり。後はデザインの取り込みが終われば納品と搭載。
さすがに、副業にしては規模が大きかった。

作り変えに困った点
・仕様書がない。(これは通常のこと。あっても更新されてないこともあるしね)
・操作的にちょっと(とらえず現仕様に忠実に)
・フレームワークを使っていない。(c言語でCGIを作った頃を思えば、たいしと事ないか)
・セキュリティ問題ありあり

結局、CakePHPを使って100%作り変え。PHPも数年ぶりだったから最初は戸惑ったけど、やはりフレームワークは楽。制御を考えずに処理ロジックだけ書けば動く。データベースもModelを作ればselect/insert/update/deleteもできる。お蔭でなんとかひと月で作り変えも無事納品が出来そうです。

50歳のシステムエンジニア頑張ったよ

【備忘録】OWASPで脆弱性チェック

Thanks.

OWASP Zed Attack Proxy (ZAP)で脆弱性検査する方法

Web系の仕事をメインでやっていたころは、お客が用意してくれたアップスキャンで脆弱性チェックをしていたけど、今回は無料のOWASPを使いました。アップスキャンのように操作を記録できるからログイン後の画面をチェック出来て安心。

今やってるプログラムの副業が結構大変

1年前に造られたPHPプログラムのメンテナンスを引き受けたのだが、SQLインジェクション対策なし、クロスサイト対策なし、CSRF対策なしと、おまけに10年前のPHPの作り方でHTMLにもろにPHPが組み込まれている。

お客に、「残念ですが全て使えませんよ。」と伝え作り変えることを提案し、この2月中に作り変えることになったのだが工数はスタートアップと言うことで大幅値引きしたのだが、規模はそれなりにある。

【備忘録】CakePHP2 Modelを使用した登録

 

Thanks.

CakePHPのModelで、既定のプライマリキーのデフォルトカラム名「id」を別のカラム名に変更したい

idをPrimaryKeyではなく別の意味で使っていると、単純にこれだけだと登録されずに更新になる。
$this->Model->create();
$this->Model->save();

Model中に
public $primaryKey = ‘no’;
or
public $primaryKeyArray = array(‘id’, ‘no’);
でPrimaryKeyを変更すれば大丈夫。

【備忘録】CakePHP2 PHPUnitインストール

 

Thanks.
https://qiita.com/t_kamata/items/59bda5df9d9949bcef25

・composer.json作成後、インストール
composer install

なんだ、このエラー?ext-domを要求してるから調べるとphp-xmlが必要らいしい。
phpunit/phpunit 3.7.10 requires ext-dom * -> the requested PHP extension dom is missing from your system.

・php-xmlのインストール
yum install –enablerepo=remi,remi-php56 php-xml

・app/Config/bootstrap.php
require_once APP . DS . ‘Vendor’ . DS . ‘PHPUnit’ . DS . ‘autoload.php’;
//CakePlugin::load(‘DebugKit’);
CakePlugin::loadAll();

・動作確認
https://192.168.0.10/test.php

【備忘録】CakePHP2 CookieとSession

Thanks.

CakePHPでのSessionとCookie設定でブラウザ終了後もセッションを継続する方法

 

‘Session’ => [
‘defaults’ => ‘php’,
‘cookie’ => ‘cookie_name’, // 任意の文字列
‘timeout’ => 259200, // 180days
‘cookieTimeout’ => 259200, // 180days
‘autoRegenerate’ => false, // 自動でセッションを再生成するのをやめる
‘checkAgent’ => false, // trueにすると毎回セッションが切れることがある
‘ini’ => array(
‘session.cookie_lifetime’ => 15552000, //180days
‘session.gc_divisor’ => 15552000,
‘session.gc_maxlifetime’ => 15552000, //180days
),
‘use_cookies’ => 1, // SessionをCookieにも保存する
‘cookie_lifetime’ => 15552000 //180days
],