Tag Archive for php

Cake.php セッションのDB格納

ここが分かりやすかった

http://c-brains.jp/blog/wsg/10/06/02-201208.php

このエントリーをはてなブックマークに追加
はてなブックマーク - Cake.php セッションのDB格納
Share on Facebook
Bookmark this on Yahoo Bookmark
Bookmark this on Livedoor Clip
Share on FriendFeed
[`tweetmeme` not found]
[`grow` not found]

Cake.php Twitterログインを利用するまで(1)

TwitterとのOAuth認証をつかった連携でいくつか躓いたので、覚書。

【やりたいこと】「Twitterでログイン」を用意してOAuth認証を行う
http://d.hatena.ne.jp/hagimi/20091123/p2

■twitter.com側のリダイレクトによるセッション切れが問題(セキュリティレベルをlowにして解決)
http://d.hatena.ne.jp/megane_bomb/20100510/1273503562
http://planetcakephp.org/aggregator/items/1917-cakephp%E3%83%AA%E3%83%80%E3%82%A4%E3%83%AC%E3%82%AF%E3%83%88%E3%81%99%E3%82%8B%E3%81%A8%E3%82%BB%E3%83%83%E3%82%B7%E3%83%A7%E3%83%B3%E3%81%8C%E5%88%87%E3%82%8C%E3%82%8B

■オリジナルのセッションタイムを設ける方法
http://www.mrk.jp/taxonomy/term/72

いやー、無駄な時間使った。

このエントリーをはてなブックマークに追加
はてなブックマーク - Cake.php Twitterログインを利用するまで(1)
Share on Facebook
Bookmark this on Yahoo Bookmark
Bookmark this on Livedoor Clip
Share on FriendFeed
[`tweetmeme` not found]
[`grow` not found]

Cake.phpのデータの渡し方

データの渡し方で少し躓いたから、書いておく。

index.ctp から、
add.cpt へフォームを使ってデータを渡す時、

index.ctp では、Testのテーブルに値を入れるときに、
echo $form->create(null,array(‘type’=>’post’,’action’=>’./add’));
echo $form->hidden(‘Test.id’,array( ‘value’ => ‘1’ ));
echo $form->hidden(‘Test.flag’,array( ‘value’ => ‘1’ ));
echo $form->submit(“フラグ立てて追加”);
echo $form->end();
とかにして、

add.ctp では、controller内で、下記のようにする。
※Test2のテーブルの項目を、Testのテーブルを追加すると同時に、
同一ページに表示させる場合、data[‘Test’][‘id’]←ここに躓いた。( ‘ つけてなかった)
function add() {
if (!empty($this->data)) {
$id = $this->data[‘Test’][‘id’];
$this->set(‘data’, $this->Test2->read(null, $id));

$this->Test->create();
if ($this->Test->save($this->data)) {
$this->Session->setFlash(__(‘The mk user accept has been saved’, true));
} else {
$this->Session->setFlash(__(‘The mk user accept could not be saved. Please, try again.’, true));
}
}
}

このエントリーをはてなブックマークに追加
はてなブックマーク - Cake.phpのデータの渡し方
Share on Facebook
Bookmark this on Yahoo Bookmark
Bookmark this on Livedoor Clip
Share on FriendFeed
[`tweetmeme` not found]
[`grow` not found]

Cake.phpのプラグイン集

プラグインは沢山知っておいたほうが良いですよね。

綺麗にまとめられてました。メモ。

■アップロード
http://www.zontheworld.com/blog/archives/111

■twitter連携
http://fuettc.com/wordpress/?p=439

■ログイン系
http://d.hatena.ne.jp/jonosuke/20100315/p1
初期設定されているURLの変更
http://cho-co.be/blog/cakephp/cakephp-auth-url/

■メール送信


http://hal456.net/qdmail/

■いろいろ
http://1-byte.jp/2010/09/06/introduce_cakephp_plugins/

このエントリーをはてなブックマークに追加
はてなブックマーク - Cake.phpのプラグイン集
Share on Facebook
Bookmark this on Yahoo Bookmark
Bookmark this on Livedoor Clip
Share on FriendFeed
[`tweetmeme` not found]
[`grow` not found]

mixiアプリの外部サーバー連携(PHPの場合)

mixiアプリを作っていて、外部サーバーとの連携で嵌ったのでメモ。

署名についてよく分からなかった。
結局はOAuth.phpを使って、呼び出し先のphpに
署名を入れておけばいいだけの話だったが。

mixiアプリと外部サーバーとの関係図
e6a78be68890

1.mixiアプリ(javascript)から、
OpenSocialの外部連携用APIを用いて接続を試みる。

ソース

var callback = function(res) {
 // ★コールバック用の処理★
};
var url = "★Pathを入れてください★";
var postData = {param2: "value2"};
var params = {};
params[gadgets.io.RequestParameters.REFRESH_INTERVAL] = 0;
params[gadgets.io.RequestParameters.METHOD] = gadgets.io.MethodType.POST;
params[gadgets.io.RequestParameters.POST_DATA] = gadgets.io.encodeValues(postData);
// ★書名付きには、下記1行が必要★
params[gadgets.io.RequestParameters.AUTHORIZATION] = gadgets.io.AuthorizationType.SIGNED;
gadgets.io.makeRequest(url, callback, params);

2.呼び出されるサーバサイド(php)に署名付きリクエストの検証を行う内容を載せる

ソース

require_once("OAuth.php");

class MixiSignatureMethod extends OAuthSignatureMethod_RSA_SHA1 {
  protected function fetch_public_cert(&$request) {
  return <<< EOD
-----BEGIN CERTIFICATE-----
MIICdzCCAeCgAwIBAgIJANCWpLIspxwbMA0GCSqGSIb3DQEBBQUAMDIxCzAJBgNV
BAYTAkpQMREwDwYDVQQKEwhtaXhpIEluYzEQMA4GA1UEAxMHbWl4aS5qcDAeFw0x
MDAzMjMwODE1NTlaFw0xMjAzMjIwODE1NTlaMDIxCzAJBgNVBAYTAkpQMREwDwYD
VQQKEwhtaXhpIEluYzEQMA4GA1UEAxMHbWl4aS5qcDCBnzANBgkqhkiG9w0BAQEF
AAOBjQAwgYkCgYEAtbq5Rns5IEktXldZ+37Fjlavnuc4JuwrD4F+4NQwVwVtR5yw
Vg10EanXWSGIAbUFx6hlppYOb0x/3PBMG80643LmXSJmvv4ViRUBl2Ys9Ie2L/D9
KVQXDWgJjxBGqo5MO6rA/Ip78kbiNbIQJUIJtbuJZWL3LMVe6mpIO2SUi1UCAwEA
AaOBlDCBkTAdBgNVHQ4EFgQU8bp8/6lmt5L8em6dZyoGciUUmuUwYgYDVR0jBFsw
WYAU8bp8/6lmt5L8em6dZyoGciUUmuWhNqQ0MDIxCzAJBgNVBAYTAkpQMREwDwYD
VQQKEwhtaXhpIEluYzEQMA4GA1UEAxMHbWl4aS5qcIIJANCWpLIspxwbMAwGA1Ud
EwQFMAMBAf8wDQYJKoZIhvcNAQEFBQADgYEApalbBgXxnLJW8fM6W7E7GAE4QZbE
lvYqvtQSxwacGYoqF2FW1zrBkmTB12LTddFU01pqDaeels3Ru5TNOnTIJemFWW0D
viKtu9GqsrOye6AZR+XA5Iy/vq3EV1TCGuDNmhJaHAiLeYuLbEqmvH7/l9xNsafH
IpqnsHwF1pm0bTY=
-----END CERTIFICATE-----
EOD;
  }
}

//Build a request object from the current request
$request = OAuthRequest::from_request(null, null, array_merge($_GET, $_POST));

//Initialize the new signature method
$signature_method = new MixiSignatureMethod();

//Check the request signature
@$signature_valid = $signature_method->check_signature($request, null, null, $_GET["oauth_signature"]);

//Build the output object
$payload = array();
if ($signature_valid == true) {
  $payload["validated"] = "Success! The data was validated";
} else {
  $payload["validated"] = "This request was spoofed";
}

//Add extra parameters to help debugging
$payload["query"] = array_merge($_GET, $_POST);
$payload["rawpost"] = file_get_contents("php://input");

//Return the response as JSON
print(json_encode($payload));

OAuthのコードは下記からDL
http://oauth.googlecode.com/svn-history/r526/code/php/OAuth.php

詳しくは、下記
http://developer.mixi.co.jp/appli/pc/lets_enjoy_making_mixiapp/require_servers

このエントリーをはてなブックマークに追加
はてなブックマーク - mixiアプリの外部サーバー連携(PHPの場合)
Share on Facebook
Bookmark this on Yahoo Bookmark
Bookmark this on Livedoor Clip
Share on FriendFeed
[`tweetmeme` not found]
[`grow` not found]