月別アーカイブ: 2013年8月

【cakePHP】SSLと非SSLが共存するサイト

ひとつのサイトの中にSSLページと非SSLページを混ぜる場合は注意が必要です。

http://book.cakephp.org/2.0/ja/development/sessions.html
に書かれてあるように、session.cookie_secureをfalseにしないとcookieが継続できません。

SSLページから他のページに飛ぶときに、相対リンクだとやはりSSLのかかったページにとびます。暗号化通信を解除しようと思うとhttp://から始まる絶対リンクで書かないといけません。
これを相対リンクのままにして強制的にhttpかhttpsに振り分けるようにしたやり方も書いときます。

config/route.phpでsslディレクトリ以下へのアクセスはpssl/を省いたコントローラ・アクションにアクセスし、パラメータsslを入れるよう設定。

AppControllerでアクセスのたびに環境変数のHTTPSとパラメータsslを比べてリダイレクトし直しています。

【シェルプログラミング】Basic認証をかけるシェルプログラム

開発途中のサイトで検索エンジンに補足されたり、一般のお客様に知らずにユーザー登録されたりしないよう、BASIC認証をかけることがそこそこあるんですが、毎回やり方を調べるのが面倒なのでシェルプログラムにしました。

そんなにシェルプログラムに慣れてるわけではないなか、すんごく簡単に作ったので変なところがあるかもしれませんが、今度BASIC認証かける時にも使えるよう、備忘録代わりに書いておきます。

認証をかけたいファイル名(index.htmlとかautorize_*とか)とユーザー名を入力して、パスワードを入力するとカレントディレクトリの.htaccessに設定を追加して.htpasswdファイルを作成します。
ファイル名を省略すると、カレントディレクトリ以下が対象になります。

既にhtpasswdがある場合は上書きになるので注意。.htaccessには追記です。重複登録は考慮していないので内容をみて分からない人は普通に登録したほうが無難。
.htaccessの隠蔽とかやろうと思ったけど試したサーバーでは既にみれなくなっていたのでやっていません。

【Facebook for PHP SDK】ログアウトの仕方

自分のFacebook連携アプリからログアウトするだけでなく、Facebookからもログアウトする方法です。
複数のFacebookアカウントを切り替えてテストしたりする場合に必要なんですが、なかなか正しいやり方を書いているものがなくて苦労しました。

$facebook->destroySession()を使うわけですが、Facebookログアウト後に呼び出すところがポイントです。

calePHPのサンプルコードですが、cakePHPでなくてもほとんど同じです。
getLogoutUrl()のnextパラメータにFacebookのセッションを破棄するページのURLを入れています。

参考:http://stackoverflow.com/questions/8405729/facebook-php-sdk-caching-user