だ。ログ。

開発とかスノボとかやきうとか。

PHP

Lavavel5.4にした際にインストールにハマる

元々EC-CUBE用に構築したCentOS6.9で、phpは5.6.3が入っていた事もあるがLaravel5.4にアップデートすると PHPのバージョンを7にしてください。ってな事でcomposer updateすると怒られる。とりあえず、remiが入っている状態で以下のインストールを実行 $ yum …

CentOS6でlaravelのインストールパスを通す

laravelのリファレンスを観ていて laravel new hoge とコマンドを通すも、コマンドが通ってない。と言われて怒られる。 .bash_profileにパスを通さなければならない。 $echo 'export PATH="$HOME/.composer/vendor/bin:$PATH"' >> ~/.bash_profile $source ~…

laravelの公開ディレクトリ

この頃触ってるlaravel composer create-project laravel/laravel fugafuga --prefer-dist fugafugaと言うプロジェクトを作った後にここに公開ディレクトリを設定して、コントローラが動かないミスをしばしば起こす。 正しくは /fugafuga/public/ publicディ…

EC-CUBE3で自作のSQLクエリを発行する

基礎的な部分ではあるが、EC-CUBE3はフレームワークで作らられている為、どうしてもちょっとした変更が難しい。 特にSQLクエリ部分は色々な部分に根をはってしまっている為、どうしてもSQLは単発で動かしたいと言う事が多い。 SQLの知識さえあれば、ある程度…

EC-CUBE3のテンプレート内のループ数を取得する

普段のphpだと for($i=0;$i<=$loop;$i++){ echo $i; } で済むのだが、EC-CUBEはPHPコードをテンプレートに書くと基本NG。 じゃあどうやってループ数を取得するか。 {% for Product in pagination %} {{ loop.index }} {% endfor %} あらかじめ予約語があるの…

EC-CUBE3のfaviconを変える

/src/Eccube/Resource/template/default/default_frame.twig を変えられない事もあると思うので。 ##場所 /html/template/default/img/common/favicon.ico これを変更する。 ただし、管理画面のfaviconは別途であり ##場所 /template/admin/assets/img/favic…

EC-CUBE3のページ管理のdescriptionの文字数を変更する

EC-CUBEの管理画面からページ管理を行った際にSEO対策で行うdescriptionの文字上限数が少ないと結構指摘される。 あまり長すぎてもSEO上良い影響はないとと思うが流石にデフォルトの50文字だと短すぎる。 ここはPOSTした際にコンフィグファイルを観るので、…

WAFを経由したらIPが複数に。

セキュリティの観点と導入が簡易に出来ると言う事からWAFを導入する機会が増えてきている。 特に管理画面等をIPアドレスで絞った場合に起こりうる事だが、サーバー変数をREMOTE_ADDRから取っていると 111.222.333.444, 123.456.789.120 と言った形で前がアク…

いちいちPHPからCSVにデータをエクスポートする際の文字コード変換を使うのが面倒くさい

タイトル通り。 本当に面倒くさい。古いシステムだと全てのカラムにmb_comvert_encodingが書いてあり人的なミスでエンコードを忘れやすい。 ふと調べていたが、ファイルに保存する際にこれにした方が楽。 fp = fopen('hogehoge.csv', 'w'); stream_filter_pr…

EC-CUBE3のClassErrorを解消する。

自分で新たに作ったClassファイルが有り、コントローラに記述をする。 $Sender = new \Eccube\Sender\Sendar(); $Sender->setRequest(array("order_id"=>$orderId)); $Sender->sendData(); 自分が作ったのは商品購入 ShoppingController.phpの商品購入コンバ…

EC-CUBE3にエディタをインストールする

どうしてもECサイトの運営はhtmlタグは怖いって言う人が多い。 エディタとか入れれない?と言うオーダーは結構来る。 一番簡単なのはckEditor、EC-CUBEにかぎらず自分はコレを入れる事が多い。 Wysiwygのプラグインwww.ec-cube.net が無料であるので、改造す…

EC-CUBE3で既存入力項目の入力不可を実装する

個人情報変更でよく使う手段として、メアドとパスワードは一旦登録したら変更出来ないようにしたい。 という事もあるので、html要素にdisabledを入れて入力制御する。 パスワード変更を不可にしてみる。/src/Eccube/Form/Type/Front/EntryType.php #変更前 -…

EC-CUBE3のブロックに動的要素を与える

EC-CUBEの強みの一つはパーツをブロック毎に作り、どのページにもはめ込む事が視覚的に出来る。 結構要望として貰う例として、ヘッダ部分に永続的に現在何個の商品が入っているか。と言う事を出したいと言う要望が多い。 特にデフォルトのEC-CUBEのパーツを…

EC-CUBE3がELB配下のEC2サーバーにある場合の管理ページのアクセス制限を行う

かなり限定的な構成ではあるがELBの下にEC2にEC-CUBE3がインストールされている。 しかもELBにSSLをインストールしているSSL Terminationを利用している場合 そのままEC-CUBEをインストールし、管理画面のアクセス制限をしてもアクセス制限が出来ない。過去…

EC-CUBE3のindex_dev.phpで出る変数 is not definedの消し方

これはtwigに設定された変数すべてに言えるのだが、変数が未定義で同一のテンプレートを使った場合によく見かける。 別にエラーではないし、他にデバッグしたい事があるのに、index_devでこのエラーを指摘されてよくイラつく。例 コントローラ return $app->…

EC-CUBE3のデバイス判定

いつも忘れるので書いておく。 {% if app['mobile_detect'].isMobile %} スマホ、タブレット {% else %} PC {% endif %} スマホ、タブでスタイルを変更する事が多いのでtwigの機能で持っているisMobileを使う。 この他に isTabletなんてものもある。

youtube埋め込みタグのレスポンシブ対応

あまりcssとhtmlに詳しくないので、とりあえずコピペできるようにする。 <div> <iframe src="//www.youtube.com/embed/hogehogehoge" frameborder="0" width="560" height="315" allowfullscreen></iframe> </div> iframeの典型的な埋め込みコード、このままコピペすればyoutube自体は参照が可能。 ただし、スマホで観た場合はiframeのサイズになってしまうので横幅がはみ出してしまいレスポンシ…

EC-CUBE3で現在のページを調べる

共通ヘッダーだけど見出しだけ変えたい。とか有るので結構必要となる「現在のページ」 $_SERVERから見るだけでなくEC-CUBEの機能でも備えている。 $request = $app['request_stack']->getMasterRequest(); $now_page = $request->attributes->get('_route');…

EC-CUBE3でHTMLタグを使う

よく忘れる。 ページに設定された変数で特にありがちなのはフリーエリア部分。 そのままだとHTMLタグの囲み文字が&から始まる文字列に変換される。 {{ Product.free_area }} これを {{ Product.free_area|raw }} とrawurlencodeを設定するとHTMLタグが適用さ…

AWSのELBにSSLをインストールして、EC2にEC-CUBE3をインストールして運用するとSSLがおかしくなるはなし

図のようにシングルだろうが複数台構成だろうが構わないが、ELB上にSSL証明書をインストールするSSL Terminationと言う技法でELBまではSSL、そこから先は非SSLとして通信すると言うやり方が今のトレンドらしい。この状況でEC-CUBE3をインストールすると問題…

EC-CUBE3のデータコミットタイミング

ちゃんとコアプログラムを読んでいない自分が悪いが、EC-CUBE標準の使い方をした場合のデータベースのコミットはページが遷移した後になる。 何が言いたいかと言うと、コントローラ上で処理が完了してリダイレクトの前に一旦ブレイクポイントを置いてデータ…

EC-CUBE3のログイン後のリダイレクト先を変える

どうもリダイレクト先を /src/Eccube/Controller/Mypage/ 内のコントローラで探してもリダイレクト先の記述がない。 じゃあどこでリダイレクトさせているのか。と悩んでいたがなんと 色々なりダイレクトページソースを観てみると <input type="hidden" name="_target_path" value="{{ targetPath }}" /> こやつ!!!ログインフォ…

EC-CUBE3の会員のパスワード文字数の上限と下限を変える

パスワードの文字数がデフォルトでは8文字~32文字と長め。 別に32文字のままにしておいても問題はないが短くしたいな。と思って調査。 まずはEC-CUBEの会員登録画面を覗いて【半角英数記号】でgrepしてみる。/src/Eccube/Form/Type/RepeatedPasswordType.ph…

EC-CUBE3のパスワードの平文化

【注意】セキュリティ上非常によろしくないので非推奨 EC-CUBE3のパスワードを平文化させておきたい。と言う要望を結構もらう。 あまりと言うか本当にマズい。それも現在まで稼働しているシステムの場合、データがハッシュ化されていてそのパスワードが全て…

preg_splitのセパレート分割

データベース上の1つのカラムに複数のデータを格納する場合、開発のお作法とかもあるがセパレートを入れて分割させる事がある。 代表的な所で言うと縦棒(|)なんかが代表的。 この縦棒、preg_splitで分割する際に無意識に $arr_split = preg_split("/|/",$…

EC-CUBE3でカートに入った商品のIDを取得する

カートに入った商品別に何かしらのメッセージを出す。または割引する。色んな部分で今カートに入っている商品情報をデータとして取得したい場面は多い。 IDから商品情報を取得するので、カート内に存在する商品IDを取り出す為にはどうするか。 //変数自体は…

EC-CUBE3で値引きをする

一番てっとり早いのは無料プラグインで配布されているクーポンコードプラグインを利用する。 → https://www.ec-cube.net/products/detail.php?product_id=1069 ロックオンが作っているのでまず間違いがない。無料、大半はこれで事足りてしまう。ただし、これ…

EC-CUBE3のCSVの新規出力データを作成し画面上でダウンロードできるようにする

CSVファイルで取り込んで連動する。多分今後もなかなかこの手法から脱却するのは難しいと思う。 各システムがその他の事を考えていないし、連動するシステムを想定した作りなんてしない。 だからCSVであればエクスポート可能だよーとしておけば、あとは運用…

EC-CUBEにPOSTしたデータを取得する

他サイトとEC-CUBEの連動をしたい。特に要望として挙がるのはSSO関連部分。 ただ、EC-CUBEの仕様上セッションジャックやクロスサイトスクリプティングの問題からSSO自体はコアをいじれば出来るけど、相当手間が掛かる。 まずは第一段階として、他サイトからP…

EC-CUBE3購入画面の文字化け

EC-CUBE3の支払い方法部分の改造をしていた時のこと。 商品をカートに入れる ログイン/非ログインで操作を続ける 支払い方法ページを表示する ここにjsで任意の文字列を表示させようとした際に、jsのデバッグの為にソースコードを開くと文字列が全てURLエン…