ウェブサービス「30日ブログ」を公開しました。

念願だったウェブサービスの公開にこぎつけました。
30日ブログ(30daysBlog.com)
30日のテーマを決めてブログを書こうというサービスです。
まだ仮公開で調整しながらの運用ですが、良かったらご利用ください。
30日ブログ(30daysBlog.com)
30daysblog.png

裏テーマとしては自己管理ができない自分に必要だったので。
日々の記録をつけながら、色々な目的・目標を達成していきたいと思っています。
それにしても、ウェブに関わる仕事をしてるとはいえ、エンジニアでもない小生がここまでの機能を実装したサービスを開発できるとは思わなかった。
フレームワーク「CakePHP」の威力は絶大です。
参考
初心者がCakephpをやる件(これまでの経緯)

Cakephpで日本語メール送信(パスワード再発行)

初心者がCakephpをやる件で、ユーザーのパスワード再発行機能を作成しました。
参考・・・というかコピペさせて頂いたのはこちら。
「パスワードを忘れた方は」を実装したい(CakePHP修行 #22) | IDEA*IDEA
ただ、メール送信はmb_send_mail関数ではなく、Cakephpのコンポーネントとして外部ライブラリのQdmail(日本語メール送信)、Qdsmtp(外部SMTPサーバでメール送信)を利用しました。
参考:cakePHP メール送信はもうこれでいいでしょ – LoveIT – 安江ブログ
(このメールデータを生成する方法がうまくいかなかったので少し改変)
これで日本語環境もばっちり。なおかつメールのテンプレートとして、Cakephpのレイアウト、エレメントを利用できます。
以下手順とソースコード。

続きを読む

Cakephp・AuthComponentでusersの値を取得する際の注意

初心者がCakephpをやる件で以前にAuthComponentを実装しました(参考:CakePHPのAuthComponent実装+ブラウザ閉じても認証保持)。
DBにusersテーブルを作成しusernameとpasswordフィールドがあれば、それを使用して簡単にユーザー認証が作れてしまいます。
さらにログイン後には、
$this->Auth->user('username');
で簡単にusersの特定の値を取得できます。
ただし1点、注意が必要なことがありました。
それはログイン後にusersテーブルをUPDATEした場合は、$this->Auth->user()で値を取得しても、それはログイン時点のものになります。
例えば「usersテーブルにあるnicknameフィールドを取得する」場合。
$this->Auth->user('nickname');
上記ではログイン後にnicknameを変更しても反映されません。
(ログイン後に「ようこそ○○さん」のような表示をしている場合、ニックネームを変更しても反映されずに「あれ?」となる)
回避方法は以下の2点。

続きを読む

Cakephpのよく使う処理をまとめる

初心者がCakephpをやる件、ガシガシと進めています。
難しい処理は後回しにしてDBの出入力を中心に目標の7割方できてきました。
DBに関わる処理はselect、insert、deleteなど限られるわけですが、あちこちからコピペしたためか、全体的に記述が統一されていません。
ここで復習を兼ねて全ソースを見直し、整理して自分なりの構文をまとめてみました。

●値の取得(複数)

条件に合致した値を取得してviewに渡す処理。
$cond = array('post.user_id' => $this->Auth->user('id'));
$data = $this->Post->findAll($cond, null, 'Post.created desc');
$this->set("data", $data);

・findAll(条件式,取得フィールド(nullで全て),取得順序)
・例はAuthComponentでログインしたユーザーと同じidのPostデータを取得。
なお上2行はこっちでも同じ処理。わかりやすいかもしれない。
$data = $this->Post->findAllById($this->Auth->user('id'), null, 'Post.created desc');
findAllByIdAndPasswordというand条件にしても直感的でわかりやすい。

●値の取得(1件のみ)

条件に合致した値を1件のみ取得する。パラメタを指定してのedit、deleteのときによく使う。
function edit($id){
$this->Post->id = $id;
$data = $this->Post->read();

なお上2行はこっちでも同じ処理。わかりやすいかもしれない。
$data = $this->Post->findByid($id);

●DBへのデータ保存

insertのとき
$data = array(
'Post' => array(
'title' => $this->data['Post']['title'],
'body' => $this->data['Post']['body'],
'post_date' => $this->data['Post']['post_date'],
)
);
$this->Post->save($data)

updateのとき
$data = array(
'Post' => array(
'title' => $this->data['Post']['title'],
'body' => $this->data['Post']['body'],
'post_date' => $this->data['Post']['post_date'],
)
);
$this->data['Post']['id'] = $id;
$this->Post->save($data)

updateのときはidを指定する。
また更新する値だけを$dataに記述しないと、任意の値を書き換えられることになるのでセキュリティ的に問題あり。
色々と試行錯誤してきたけど、難しいことしなければこれだけで済むのか・・・。
ソースコードの見直し(リファクタリング)も楽だったし。
cakephpすげー。

PHP開発環境にEclipseをセットアップ

初心者がCakePHPを学ぶ件、今回は開発環境について。
これまではお手軽な開発環境「PHPエディタ」を使用していました。
PHPエディタ – フリーのwindows用php統合開発環境 – phpspot
インストールや設定もわかりやすく良かったのですが、新規ファイル作成をする際はPHPエディタ上で行わなければならないという欠点がありました。
また、もう少しプロっぽい開発環境を使ってみたくもあり代表的なPHP統合開発環境を調べてみました。
PHP開発ツール 比較調査 – KABOSU
商用、無料を含めた開発ツールが比較されています。
こちらで無料かつオススメとされていたPDT(Eclipse PHP Development Tools)にチャレンジします。

続きを読む

  • 他のブログ

    育児で買ったモノたち
  • Twitter

  • 最近の投稿

  • 最近のコメント

  • はてなブックマーク

  • RSS購読

    RSS Feed RSS - 投稿

  • カテゴリー

  • 月別

  • カレンダー

    2017年5月
    « 3月    
    1234567
    891011121314
    15161718192021
    22232425262728
    293031  
  • プロフィール


    健康・医療系の出版社でウェブに関わる営業企画と浅い技術。Webディレクター?
  • キーワード検索