baserproject / basercms

baserCMS : Based Website Development Project
http://basercms.net
Other
165 stars 126 forks source link

シリアライズされたデータをbase64形式で格納することについて #1761

Open yama opened 2 years ago

yama commented 2 years ago

概要

https://github.com/baserproject/basercms/blob/basercms-4.5.2/lib/Baser/Lib/BcUtil.php#L273-L283 DBに格納されているはずの文字列が見つからず、処理を追ってみるとデータが base64形式でエンコードされていることが分かりました。 昔よくあったマルチバイト起因のデータ破損を防ぐための処理だと思いますが、 最近のサーバ環境なら問題ないかなと・・ 今後はシリアライズされたデータをそのまま格納するとよいのではと思いますが、 いかがでしょう? 既存のデータの互換性については、コロンを含むかどうかで処理を分けると いいかと思います。

(追記) json形式なら壊れにくいと思いますが、いかがでしょうか?この部分の処理が 追加された2014年頃はjsonはPHPが少し古いと使えないことがあったので 敬遠されていたと思いますが、今なら問題ないかと・・

kaburk commented 2 years ago

base64形式のエンコードは色々面倒ですし、JSONとかにしたいですね!

yama commented 2 years ago

json関数が使えるようになったのはPHP5.2あたりで、PHP5.3で安定して使えるようになったと思います。 当時はPHPのアップデートを敬遠する人が多くて、たぶん仕方なくこうしたんですね。 対応するとしたらアップデート処理に仕込んでデータを変換するといいと思います。 これを改善するとDBを直接開いて問題点を調べたりできるし、めっちゃ便利になると思います。

gondoh commented 2 years ago

http://project.e-catchup.jp/issues/5484 ここの変更っぽいですねー