February 2013

February 25, 2013

[CakePHP]コントローラに引数として記号を渡す


また備忘録的cakePHPメモ。

商品一覧があって、そこから商品詳細に飛びたい。

カテゴリ = car 
商品ID = 25
カテゴリ = car/subaru
商品ID = 32

変数に「/」があるパターンとないパターンが混在している場合。
1件目は詳細画面へのリンクを http://localhost/index/detail/car/25 として、コントローラ側で function detail($category = null,$sid = null) … で $category = "car"; $sid = "25"; と取得可能。

2件目も同様にリンクをはると、 http://localhost/index/detail/car/subaru/25 先ほどのfunctionでは当然ながら第2引数として「car」を取得してしまう。

http://localhost/index/detail/car%2Fsubaru/25 として、カテゴリの部分にエンコードかけてもダメ(404になった)。

だから、各コードにエンコードかけてGETパラメータで渡すことにした。
http://localhost/index/detail/?category=car%2Fsubaru&sid=32

コントローラ側で
function detail() …  
 if($this->params['url']['category']){ $cat = $this->params['url']['category']; }
 if($this->params['url']['sid']){ $sid = $this->params['url']['sid']; }
とすれば1件目も2件目もパラメータを取得可能で、 あとは適宜変更してDB等に問い合わせればOK。



xseraarcy at 22:00|PermalinkComments(0)TrackBack(0) 技術的&べんり帳 

February 18, 2013

xamppとskypeの共存

メモ的に。 

skypeを入れたらxamppの起動ができない。 逆も然り。

まぁ同時に使うこともあんまり無いけれど、 どうしたもんかなーと思ってgoogle先生に頼る。
xampp-portcheck.exeでチェック
 →80番ポートに"Skype"の文字。

あら、これでxampp起動できないのね。 

skypeのツール→詳細→接続 にある、 「上記のポートに代わり、ポート80番を使用」のチェックを外す。 
これで同時に起動OKでした。



xseraarcy at 22:00|PermalinkComments(0)TrackBack(0) 技術的&べんり帳 

February 11, 2013

gmailからMLへ投稿したメールが自分に届かないとか

日ごろ、gmailを経由してメールを受け取ってるのだけれど、
どうも自分がMLに対して送ったメールが届かない。
確かに送信ボックスには入ってるけど、送信されたのかどうか不安なので
thunderbirdでgmailを経由せずに受信すると、ちゃんと自分宛にも届いてる。
なんだかなーと思って調べてみた。

メーリングリストへ自分が送信したメールが自分に戻ってこない

仕様ですか。そうですか。

送信メールボックスにあるからいいじゃん!
というお話らしいですな。

便利なんだけどなー、gmail経由。
こういうことがあるので、ちょっと不安でthunderbirdと平行で使ってます
処理したメールかどうかがとっても管理しにくい。
なんとかならんものか。


xseraarcy at 22:00|PermalinkComments(1) 技術的&べんり帳 

February 04, 2013

PEAR :: Mail 設定のメモ

CakePHPで、画像をメール添付したかったため、PEAR::Mailを使う際に調べたメモ。

require_once("Mail.php");
require_once("Mail/mime.php");
$header['From'] = "info@example.net";
$header['To'] = "hogehoge@hogehoge.net";
$header['Bcc'] = "hoge_bcc@hogehoge.net";
$header['Subject'] = mb_encode_mimeheader('メールの件名ですよ~メールの件名ですよ~', 'JIS', 'B', "\r\n" , 9 );
$html_param['head_charset'] = "ISO-2022-JP";
$html_param['html_encoding'] = "ISO-2022-JP";
$html_param['html_charset'] = "UTF-8";
$recipients = array("hogehoge@hogehoge.net","hoge_bcc@hogehoge.net");
$html = "メールの本文";
$mime = new Mail_mime();
$mime->addHTMLImage(添付する画像の場所, 画像タイプ);
$mime->setHTMLBody($html);
$body = $mime->get($html_param);
$header = $mime->headers($header);
$mail = Mail::factory("smtp", array('host' => 'localhost'));
if($mail->send($recipients, $header, $body)){
 $this->log('メール送信成功しました');
}else{
 $this->log('メール送信失敗しました');
}

【ポイントその1】 画像を添付する場合、mb_send_mailが使えない(無理やり使う方法はあるけど)。
そのため、PEARのMailパッケージを使用。 画像タイプには、"image/jpeg"や"image/gif"等、送信する画像に見合ったものを指定。

【ポイントその2】 件名が長いとThunderbirdで途中(32バイト以上)から文字化けする。
これはThunderbirdが厳密なため? そのため一旦Subject迄で一行とし、その後を一行とみなすように変更。
対症療法的なのであまり推奨はしない。。もっと何かいい方法があれば

【ポイントその3】 Bcc、もしくはCcを設定したい場合、 $headers['Bcc']とか$headers['Cc']だけではheaderに書かれるだけで、 実際にはメールは送信されない。
「$recipients」配列に入れることで正常に送信されることを確認。

xseraarcy at 22:00|PermalinkComments(0)TrackBack(0) 技術的&べんり帳