Posts tagged URL
OpenPNE 特定ページを SSL で接続する
3OpenPNE で個人情報などを送信するようなフォームや管理画面を SSL で接続する方法です。
SSL を使用するように設定を変更する
openpne/config.phpの以下の行を変更
特定ページを SSL で接続するように設定
define('OPENPNE_USE_SSL_PARAM', false);
をdefine('OPENPNE_USE_SSL_PARAM', true);
に変更
これだけで特定ページが SSL で接続されるようになります。
SSL を使用したいアクションを追加する
デフォルトで SSL 接続されるようになっているページ以外も SSL 接続にしたい場合は
$GLOBALS['_OPENPNE_SSL_REQUIRED'] = array( 'pc' => array( 'page_o_regist_prof', 'page_o_regist_prof_confirm', 'do_o_regist_prof', 'page_o_regist_intro', 'page_o_ri', 'page_o_regist_end', 'page_h_config_prof', 'page_h_config_prof_confirm', 'do_h_config_prof', 'page_h_config_ktai', 'do_h_config_ktai_send', ), 'ktai' => array( 'page_o_login', 'do_o_login', 'do_o_easy_login', 'page_o_login2', 'do_o_update_ktai_address', 'page_o_regist_pre', 'page_o_regist_input', 'do_o_insert_c_member', 'page_o_regist_end', 'page_o_password_query', 'do_o_password_query', 'page_h_config_prof', 'do_h_config_prof_update_c_member', 'page_h_config_easy_login', 'do_h_config_easy_login', 'page_h_config_mail', 'do_h_config_mail_insert_c_ktai_address_pre', 'page_h_pc_send', 'page_h_pc_send_confirm', 'do_h_pc_send_insert_c_pc_address_pre', 'page_h_config_password_query', 'do_h_config_password_query_update_password_query', 'page_h_config_password', 'do_h_config_password_update_password', ));
となっているところに SSL 接続したいアクションを追加していく。
例えば、携帯ではリマインダーは SSL 接続になりますが PC では SSL 接続ではありません。
そこで PC でも SSL にしたい場合は上の pc の配列にリマインダーのアクションの “page_o_password_query” を追加します。
これで http://www.example.com/?m=pc&a=page_o_password_query という URL は自動的に
https://www.example.com/?m=pc&a=page_o_password_query へリダイレクトされます。
注意点は上記の URL からフォームが送信される ?m=pc&a=do_o_password_query というURL も SSL にする必要があります。
これをしないとフォームの画面は SSL でも送信先が SSL ではなくなってしまいます。
PC 用のリマインダーを SSL にする場合は “page_o_password_query” と “do_o_password_query” の2つを追加する必要があるということです。
確認画面が入るフォームなどではフォーム画面表示アクション、確認画面表示アクション、実行アクションと3つ追加する必要があります。
ユーザに SSL を使用するか選択させるアクションの追加
ユーザが SSL を使用するか選択できるリストというのもあります。
$GLOBALS['_OPENPNE_SSL_SELECTABLE'] = array( 'pc' => array( 'page_h_config', 'do_h_config_1', 'do_h_config_2', 'do_h_config_3', 'page_o_login', 'page_o_tologin', 'do_o_login', ), 'ktai' => array( 'page_h_config', ));
このリストに追加するとフォームの右上やリンクの下に SSL 用のリンクが表示されユーザが SSL の使用をするか選択することができます。
CakePHP 携帯でセションを有効にする
2CakePHP で携帯サイトの開発をしています。
ドコモなどはクッキーが使用できないのでセションID を URL で引き継がないといけないのですが、PC サイトではクッキーでセションID を保持したいところです。
携帯サイトと PC サイトが共存しているときの携帯用のビューを表示させる方法は下記が参考になります。
CakePHP 携帯用ビューを表示する | Shin x blog
また、携帯でのアクセス時にクッキーを使用せずにセション を保持するのは下記が参考になります。
Docomoとセッション フォーラム – CakePHP Users in Japan
私は上記の方法に
ini_set('session.use_trans_sid', 1);
を入れて使用しています。
全てのリンク、フォームにセションID が付加されるので便利です。
ただリダイレクトするときだけ、
$this->redirect('/controller/action/'.session_name().'='.session_id());
のようにセションIDを入れました。
あとビューを書くときに覚えておくとよいのが、ini_set(‘session.use_trans_sid’, 1); を指定したときにリンクを http:// から始まる URL を書くとセションID は当然ですが付加されません。相対パス、絶対パスなどの自サイト内へのリンクのみセションIDが付加されます。
自サイト内のリンクに http:// から書くとセションID が付かないのではまらないように。
BIALETTI Mukka Express ムッカカプチーノメーカー
1誕生日プレゼントにカプチーノメーカーをもらいました。
普通のエスプレッソメーカーに一緒にミルクも入れられてエスプレッソとミルクフォームを同時に作る感じです。
作るのに少しコツがいるのでまだたまに失敗しますが、おいしいカプチーノが簡単に作れます。
うちは IH ですが真ん中が IH ではなく熱くなるやつ(なんていうのか分からない。。。)なのでそこで使用しています。
できたカプチーノは下のような感じです。
本当は2カップ分できるのですが、写真のアマゾンのマグカップは大きいので2カップ分入ってしまいました。
お勧めは楽天で売っているペアのマグカップとコーヒー豆がセットになったセットです。
しかもアマゾンよりも安いですよ!
BIALETTI Mukka Express ムッカカプチーノメーカー(牛柄)2カップ用&ペアマグカップソーサー2客セット&自家焙煎珈琲
OpenPNE 画像を色々なサイズで表示する
1以前書いたエントリ「OpenPNE 画像の保存、表示方法 」で、OpenPNE にアップロードした画像の表示方法を紹介しました。
表示方法は下記のとおりです。
<img src=&qt;({t_img_url filename=$pet.image1 w=180 h=180})&qt;>
しかし、この方法では 240×240 のような画像が表示できませんでした。
ソースを追ってみると設定ファイルで許可するサイズを設定するところがありました。
openpne/config.php
$GLOBALS['_OPENPNE_IMG_ALLOWED_SIZE'] = array('76x76', '120x120', '180x180');
この配列に ’240×240′ を追加すれば 縦か横の長い方が 240px の写真が表示できます。
また、
$GLOBALS['_OPENPNE_IMG_ALLOWED_SIZE'] = array();
のように空の配列にすれば制限がなくなり、自由に大きさを指定できます。
ただ、制限はかけておいた方がいいでしょう。
OpenPNE PHP で作成したプログラムを組み込む
1OpenPNE PHP で作成したプログラムを組み込むときのメモです。
基本的に、/openpne/webapp_ext/ 以下に追加するファイルを置きます。
URLのパターン
OpenPNE の URL は下記のようになります。
- ?m=pc&a=page_hoge_foo
- ?m=pc&a=do_hoge_foo
携帯だと m=ktai とかになりますが、今回はPC のみ考えます。
page_hoge_foo のパターンはページを表示する
do_hoge_foo のパターンはモデルに対して処理を行う
page_hoge_foo でモデルに対して処理を行うこともできるが
MVC の意味がないかも。
?m=pc&a=do_hoge_foo のURL を追加する
/openpne/webapp_ext/modules/pc/do 以下に
hoge_foo.php を作成
hoge_foo.php
class pc_do_hoge_foo extends OpenPNE_Action { function execute($requests) { // ここに処理を書く } }
/openpne/webapp_ext/modules/pc/validate/do 以下に
hoge_foo.ini を作成
例えば ?m=pc&a=do_hoge_foo&id=10&no=20 のように id, no を GET で渡したい場合は
[id] type = "int" required = 1 [no] type = "int" required = 1
のように定義する。
こうしておくと do/hoge_foo.php 内で
$id = $requests["id"];
のようにバリデーションを通して値を取得できる。
?m=pc&a=page_hoge_foo のURL を追加する
/openpne/webapp_ext/modules/pc/page 以下に
hoge_foo.php を作成
hoge_foo.php
class pc_page_hoge_foo extends OpenPNE_Action { function execute($requests) { // ここに処理を書く } }
/openpne/webapp_ext/modules/pc/validate/page 以下に
hoge_foo.ini を作成
中身は do_hoge_foo の場合と同じ。
その他
/openpne/webapp_ext/lib
クラスファイルなどを置きました
自分で作成クラスをインクルードしたいときは /openpne/webapp_ext/lib
からインクルードします。
OpenPNE 画像の保存、表示方法
2OpenPNE で写真のアップロード機能を作成していて調べたことをまとめておきます。
画像を保存するテーブル c_image
OpenPNE では画像をDB に保存しています。保存するテーブル名は c_image です。
このテーブルにはプロフィール写真や日記の写真、スキンの画像などが保存されるようです。
CREATE TABLE c_image ( c_image_id int(11) NOT NULL auto_increment, filename text NOT NULL, bin longblob NOT NULL, r_datetime datetime NOT NULL default '0000-00-00 00:00:00', `type` text, PRIMARY KEY (c_image_id), KEY filename (filename(100)) ) ENGINE=MyISAM DEFAULT CHARSET=utf8;
- filename
- 画像のファイル名、任意につけていいみたいですが、プロフィール写真だと
m_2_1188204858.jpg
という感じです。
最初の 「m 」はたぶんプロフィール写真を表す文字、
次の「2」はプロフィール写真のNo(2番目にアップした写真)
次の10桁の数字は多分 time() 関数で取得したアップロードした時間 - bin
- base64_encode した画像ファイルのバイナリデータ
- type
- 画像のタイプ( jpg | gif | png )
- r_datetime
- 登録日時
表示方法
c_image テーブルに格納した画像を表示するHTML
<img src="/img.php?filename=m_2_1188204858.jpg&w=180&h=180&m=pc">
Smarty のタグで書くと
<img src="({t_img_url filename=$pet.image1 w=180 h=180})">
filename に c_image.filename を指定して、
w, h に幅と高さの最大値を指定する。
幅と高さは最大値を超えると自動的にリサイズする。
その他
c_image に画像を保存しておくと管理画面からアップロードされた写真をすべて管理することができるので、SNS を運営する上で便利だと思います。
ソフトバンク端末から mailto で件名と本文を入れる
1携帯サイトを作成していて mailto リンクで件名と本文を指定するのに下記のように指定します。
<a href="mailto:メールアドレス?subject=件名&body=本文">
※件名と本文は URL エンコードする必要があります。
しかしソフトバンクの3GC 端末で件名と本文の日本語がメーラに渡せないという現象がありました。
そこで、日本語を UTF-8 に変換してから URL エンコードすると渡せるようになりました。
HTML ソース自体は Shift-JIS です。
ソフトバンクの開発資料を見直したのですが、そういう記述は見つけられませんでした。
どこかに書かれているのでしょうか?
それとももっとうまいやり方があるのかなぁ。
optionタグを選択不可にする disabled 属性を IE6 でも有効にする方法
0optionタグを選択不可にする disabled 属性で紹介したように option タグに disabled 属性を指定することにより選択不可にすることができるのですが、IE6 では選択できてしまいます。
JavaScript で解決する方法です。
Select, Option, Disabled And The JavaScript Solution
上記の参考サイトに詳しくやり方が書かれていますので、簡単に手順だけ紹介。
- 参考サイトの「Implementing」にある download リンクより JavaScript コード(select-option-disabled-emulation.js)をダウンロード
- select-option-disabled-emulation.js を適当な場所に保存
- html 内で select-option-disabled-emulation.js を読み込む
- 選択不可にしたい option タグに disabled 属性を指定する
DHTML で解決する方法です。
これは上記参考サイトの補足で紹介されていたサイトです。
apptaro’s blog: Emulating Disabled Options in IE with DHTML Behaviors
こちらも上記URL に詳しいやり方が書かかれていますので、簡単にご紹介。
- 参考サイトの中央よりやや下にある Download よりファイル一式をダウンロード
- 適当な場所に css, htc ファイルを保存
- html で上記 css を読み込む
- 選択不可にしたい option タグに disabled 属性を指定する
これで IE6 でも option タグの disabled 属性が使えるようになりました。