管理画面へのアクセスをIPで制限

CakePHPで開発してて、管理画面(admin)へのアクセスはIPで制限したいな

という場合の設定方法

昔、componentとか駆使して設定したことがありますが、もっと簡単な方法がありました。
htaccessを使う方法です。

/webroot/admin のディレクトを作ります。

そのadminディレクトリにhtaccessを置きます。

特定のURLで404エラー!

CakePHPで開発中、ある特定のURLの場合のみ404エラーが発生しました。

一意のURLを生成するためにbase64_encodeなどを駆使して生成したURLで発生。

色々調べてみると…

base64の使用文字
「a-zA-Z0-9+/」
この最後の「/」が問題のようだ。
urlencodeして使用していたけど×

mod_rewriteでURLに「%2F(スラッシュをurlencodeした文字)」が入っていると404を返すらしい。

それを解決するには、「AllowEncodedSlashes On」にすると解決できるそうだ。
これはデフォルトだとOffになっているため、先に%2Fをスラッシュとして認識し、URLが見つからないと404を返すと。。

んじゃ、Onにして解決だね!

と言いたいところだけど、それはちょっと難しい。

これはApacheの設置httpd.confなどで設定するものらしい。
htaccessでは解決できない。
レンタルサーバーなどでは簡単に変更できないので詰んでしまう・・・・

ということで、私は単純にqueryでgetとして送信することで回避させました。

https://zero-one-x.com/xxxx%2Fxxx

↓↓↓↓

サイト

PostgreSQLのWhrere時の型チェックの厳密化

CakePHPでDBはPostgreSQLのサイトがある。
そちらを移転作業したときに起きた問題

動作チェック中に下記のエラーが発生

HINTから情報を検索するとPostgreSQLのバージョンで検索(Where)のキャスト(型)のチェックが厳密化されたようです。

今回はPostgreSQL7.4.23 → 9.2.10

厳密化は8.3からのようです。
キャストの厳密化とは検索するときにフィールドの型を厳密にチェックするようです。
今までのバージョンは型を自動で変換してくれていたようですが、8.3からはそれを行わないとのこと

それらがNGとのこと

私のプログラムのエラーはdate型にLIKE検索をしているのがNGでした。

対策としてはFunctionとCastを作成してそれで型の変換をさせる方法があるようですが、
次の移転時にまた困るような気がしたので、今回はプログラム側の修正を行いました。
(プログラムの修正箇所が少なかったため)

CakePHPを使っているのですが下記の修正ではエラーでした。

array(“date::text”=>”2017-11%”)

ということで、ちゃんと関数で変換します。

エラーなく検索結果が返ってきたらOK

CakePHP Strict Standardsエラーの消し方

サーバー移転時に起きたエラー
PHP5.3→5.6になったのが原因なのかな。

CakePHPのバージョンが1.2.5

PHP5.4からエラーレベルE_ALLにE_STRICTが含まれたのが原因です。

CakePHPはプログラム上でerror_reportingを行っているので、php.iniやhtaccessで変更しても×なのです。
修正するにはCakePHPのプログラムを直すということになります。

修正するのに若干手間がかかるので、私は下記の対応をしました。

CakePHPのバージョンアップ

1.2.5 → 1.2.18

バージョンアップの方法はcakeフォルダをまるごとごっそり入れ替えるだけです。

これでエラーがなくなりましたとさ。

Ktai Library for CakePHP1.2の絵文字変換時の文字化け修正

CakePHP 1.2.18

携帯の絵文字変換のコンポーネント、ヘルパーで「Ktai Library for CakePHP1.2」を使っていました。
サーバー移転をしたときに動作しなくなったので、その修正記録

Ktai Libraryのバージョンは0.2.0
(2017/11時点の最新版は0.4.2です。)

auでの絵文字変換がうまくいかない。
バージョンアップも考えたが、色々変更点があって修正対応に時間がかかりそうだったため
0.2.0を修正することにした。

処理の流れとしては下記のような感じ

1.docomoの絵文字を退避
2.文字コード変換
3.docomoの絵文字をauのバイナリ絵文字へ変換

文字コードの変換はうまくいっているが絵文字でNGで文字化け

PHPの文字コード設定は下記
ソースはUTF-8
表示はSJIS

vendors/ecw/lib3gk.php
ソースを追ってみる。

755行目あたり

出力がUTF-8、KDDIなら処理になっている。
こちら側の出力はSJIS
フィーチャーフォンはUTF-8表示は一部端末のみ

ということでこちらを修正(2箇所)

これで絵文字も表示されるようになった。