PHPで次月、前月の出すときの注意点

PHPで次月や前月を抽出するときに注意するべき点。

私は下記の方法で処理してました。

■次月を出力

上記方法だと特定の日で予想と違う結果が返ってくる

1/30、1/31に処理を見ると結果は「3月」になってしまう。
「2月」が返ってきてほしいが…

1/30に見ると処理は今日の日付の”月”に+1するので「2/30」→「3/1」となり、
結果は「3月」となってしまう。

これを回避するために下記の処理にすること

しっかりと「01」と指定してあげることで回避できる。

CakePHP4 手動でパスワードチェックする方法

$this->Auth->identify();

上記を使うと送信されたデータとDBから抽出したデータをチェックするのを自動でやってくれます。
手動でやりたい場合は上記は使えません。

下記のコードで手動でチェックできます。

[CakePHP]バリデーションではまった話

CakePHP4のバリデーションではまった話

バリデーションのalphaNumericが日本語をはじかないというので
preg_matchで実装しようとしたら動作しなくて困った

最初は下記のように書いたら「The provided value is invalid」のエラーが発生

色々調べてみると・・・
https://www.php.net/manual/ja/function.preg-match.php

preg_matchの戻り値
マッチした場合は1
マッチしなかった場合は0
失敗した場合はfalse

そう。マッチしない場合はfalseではない。
なので上記に書いたコードだと動作しない。

下記のように書き換えて動作確認できた!

戻り値をifで判定してreturnでちゃんと戻す。

これで1日悩んでました。

Gitの認証をアクセストークンへ変更【Sourcetree】

2021年8月13日から変更になった仕様
アカウント、パスワードの廃止問題の解決方法

私はSourcetreeしか使ってませんが・・・

プッシュしようとすると下記のようなエラーが発生。
remote: Support for password authentication was removed on August 13, 2021. Please use a personal access token instead.

まずはGitHubでアクセストークンをゲットします。
https://github.com/

ログイン後、右上のアイコンから「Settings」へ

「Developer settings」へ移動

「Personal access tokens」へ移動

「Generate new token」へ移動

「Note」に分かりやすいようにメモを入力
「Select scopes」は「repo」を選択

「Generate token」をクリック

アクセストークンが表示されるので、それをコピーしてなくさないように別ファイルで保存します。

次はSourcetreeでの作業です。

一部サイトでURLにトークンを入れる方法を書いているところもありますが、
それは危険なのでマネしないでください。
海外のフォーラムでも「それは危険」と指摘されているようです。

以下が解決方法です。

下記ディレクトリに移動します。
C:\Users\****\AppData\Local\Atlassian\SourceTree

passwdファイルを編集します。

アカウントと暗号化されたパスワードの2行があるので、その2行を削除します。

Sourcetreeを起動します。
再度プッシュします。
アカウントとパスワードを聞いてくるので、パスワードの欄にトークンを入力します。

これでプッシュができるようになります。

[CakePHP]ダウンロード後にページをリロードしたい

データをダウンロード処理したときにフラグを立てるなど色々処理をしている。
ダウンロード後にリダイレクトかリロードをしたいと思った。

ダウンロードの処理でheaderを使っているのでリダイレクトのLocationが使えない。

そこでJSで別ウインドを開いて、そこにダウンロード処理を渡す。
その処理の後にページをリロードする処理をしてあげるとOK。

リダイレクトしたい場合はreloadのところをhrefにするとOK

郵便番号入力で住所を抽出してくれるJS

AjaxZip3の処理を変更した話
大変便利なライブラリ
https://github.com/ajaxzip3/ajaxzip3.github.io

下記のようにinputのonKeyUpを使った場合
意図しない動きをすることがあった。

郵便番号を前半、後半の二つに分けている。
前半3桁。後半4桁です。

前半3桁、後半4桁入力すると住所欄に住所が入力される。
というのは正常な動き。

これを下記の条件にすると動きが変わる

「全角入力モードにした状態で前半3桁に7桁の郵便番号を入力するとonkeyupが作動し住所が入力される。」

入力確定前にonkeyupが動作しています。
inputはmaxlengthで3にしているので3桁しか入力されない。

onKeyUpはやめてjQueryで制御することにする。

これで確定後の値で動作になるので意図した動きになりました。

【未解決】CakePHP4のログアウト時のセッション削除

CakePHP4でログイン機能Authのログアウト時にセッションが削除できない問題

未解決ですが情報記載します。

ログアウト処理時にセッションのdestroyを行うとログイン情報が削除できないのです。


$this->Auth->logout();
$this->session->destroy();

Auth->logoutのみ
 同列のセッション情報が生きている
session->destroyを追加
 Authのログイン情報が生きている

Auth->logoutはAuth配下のセッション情報は削除できるが、Authと同列のものは削除できていない。
そこで直接Session->destroyを行うと、同列のものは削除できたがAuthの情報は削除できずに残っていた。

調べてみても情報なし。
しょうがないのでdeleteで個別に削除


$this->Auth->logout();
$this->session->delete("Data");
$this->session->delete("HogeHoge");

ちなみにPHP関数でsession_destroyだとエラーでした。

CakePHP4のFormヘルパーでDivタグの削除

CakePHP4のフォームヘルパーでDIVが削除できなくて困った。
DIVのオプションがなくなったようです。

CakePHP3からなくなったのかな?
CakePHP3のやりかただと削除できなかったので、CakePHP4のマニュアルに載っているやり方で削除します。

フォームヘルパーのテンプレートで対応

マニュアル
https://book.cakephp.org/4/ja/views/helpers/form.html#formhelper

個別にできないのは結構不便。
他にやり方があるのだろうか・・・

プラグインJetpackのエラー

WordPressのプラグイン更新などしているとJetpackのエラーがでることが度々あった。

動作には問題なさそうだけど気になるので調べて見ました。

エラー内容は↓


Fatal error: Uncaught Error: Class 'Automattic\Jetpack\Connection\Tokens' not found in ****/wp-content/plugins/jetpack/vendor/automattic/jetpack-connection/src/class-client.php:75
Stack trace:
#0 ****/wp-content/plugins/jetpack/vendor/automattic/jetpack-connection/src/class-client.php(26): Automattic\Jetpack\Connection\Client::build_signed_request(Array, 'query('jetpack.syncAct...', Array)
#3 ****/wp-includes/class-wp-hook.php(287): Automattic\Jetpack\Sync\Actions::send_data(Array, 'deflate-json-ar...', 1614820658.9668, 'sync', 0.0076038837432861, 0.013982057571411, 5, '60403532e7074')
#4 **** in ****/wp-content/plugins/jetpack/vendor/automattic/jetpack-connection/src/class-client.php on line 75

更新していくとゴミコード?などがそのままになっていてエラーになるらしいです。
Jetpackを一旦削除して新規インストールを行うと上記エラーが解消されます。

contact form 7の警告を修正

メールフォームプラグインのcontact form 7 で送信ボタンを押すと下記の警告が発生

「Deprecated: get_option がバージョン 5.5.0 から非推奨になった引数付きで呼び出されました。オプションキー「blacklist_keys」は「disallowed_keys」に名前が変更されました。 in ****\wp-includes\functions.php on line 5061」

警告なので無視はできるけど、表示されたら気になってしまう!

ってことで修正。

「blacklist_keys」を使っちゃいけないよという警告だと思うので「blacklist_keys」を探してみる。

下記ファイルに発見!
\wp-content\plugins\contact-form-7\modules\disallowed-list.php

52行目

修正前
$mod_keys = trim( get_option( ‘blacklist_keys’ ) );

修正後
$mod_keys = trim( get_option( ‘disallowed_keys’ ) );

これで警告が消えました。
やったね!