Securityコンポーネント使ったらログインフォームだけが何故かblackholeに行ってしまう現象が発生。。
追跡してみるとフィールドをハッシュ化しているところがどうやら問題。
/lib/Cake/Controller/Component/SecurityComponent.php
line: 238
の $this->validatePost と $this->_validatePost($controller) をダンプしてみた
ところ true, false となっていた。
_validatePost 内を確認
line: 514 の前で
$token, $check をダンプしてみると中身が違う。。
$fieldListを確認してみるもちゃんと取得できている様子。。
何故だ。。。。
まさかとは思うけど発行側で??
と思って、
/lib/Cake/View/Helper/FormHelper.php
を今度はチェックしてみる。
どうやら
public function end($options = null)
で発行しているようなので、
line: 519
にある
$out .= $this->secure($this->fields);
の前で $this->fields を確認。
var_dump($this->fields);
空っぽ。。。
何で。。。
で、viewファイルをずっと眺めていると。。
$this->Form->create(...
$this->form->text(...
あれ。。 もしかしてformだといけてる風になる?? と思って修正。
$this->Form->create(...
$this->Form->text(...
無事動きましたとさ。。 form が何のために使えるのは調べてないけど、エラーにしてくださいよ。。
2014年4月24日木曜日
2014年4月3日木曜日
phpMyAdmin メニューにトリガが表示されない
phpMyAdmin を利用している時に権限があるはずなのに、メニューにトリガが表示されない現象が発生。
早速追跡~
Menu.class.php の _getTableTabs() を見てみるとどうやら、
の部分でfalseが返っている。
次に Util.class.php の currentUserHasPrivilege を見ると
早速追跡~
Menu.class.php の _getTableTabs() を見てみるとどうやら、
PMA_Util::currentUserHasPrivilege(
'TRIGGER',
$this->_db,
$this->_table
)
の部分でfalseが返っている。
次に Util.class.php の currentUserHasPrivilege を見ると
if ($db !== null) {
// need to escape wildcards in db and table names, see bug #3566
// (wildcard characters appear as being quoted with a backslash
// when querying TABLE_SCHEMA.SCHEMA_PRIVILEGES)
$db = str_replace(array('%', '_'), array('\%', '\_'), $db);
/*
* This is to take into account a wildcard db privilege
* so we replace % by .* and _ by . to be able to compare
* with REGEXP.
*
* Also, we need to double the inner % to please sprintf().
*/
$query .= " AND '%s' REGEXP"
. " REPLACE(REPLACE(TABLE_SCHEMA, '_', '.'), '%%', '.*')";
$schema_privileges = $GLOBALS['dbi']->fetchValue(
sprintf(
$query,
'SCHEMA_PRIVILEGES',
$username,
$priv,
self::sqlAddSlashes($db)
)
);
if ($schema_privileges) {
return true;
}
} else {
// There was no database name provided and the user
// does not have the correct global privilege.
return false;
}
ここでtrueが返ってくるはずが返ってこない。。
どうやら
$db = str_replace(array('%', '_'), array('\%', '\_'), $db);
でDB名に % _ が入っている場合にエスケープするみたい。
コメントアウトを見てみると英語は解らないけど、どうやら
LIKE検索などする時の問題に対応するために行っている(MYSQLの問題?)
何かあったなそんなのが。。
結局、DB名を変更して無事解決でした。
2014年3月27日木曜日
FacebookページIDを調べる方法
auの Facebookページ のURLは
https://www.facebook.com/aubyKDDI
です。
この Facebookページ の ID を確認するには
http://graph.facebook.com/[username]
つまり
http://graph.facebook.com/aubyKDDI
にアクセスする。
するとJSON形式で帰ってくる値の中に id が含まれているので、それが FacebookページID となる。
http://graph.facebook.com/[username]
https://www.facebook.com/aubyKDDI
です。
この Facebookページ の ID を確認するには
http://graph.facebook.com/[username]
つまり
http://graph.facebook.com/aubyKDDI
にアクセスする。
するとJSON形式で帰ってくる値の中に id が含まれているので、それが FacebookページID となる。
http://graph.facebook.com/[username]
Facebook API フレンドのアイコン画像
Facebook API を利用してフレンド一覧でcoverで取得できると思ったのに。。
me/friends?fields=id,name,cover
取れなかったよ。。
で調べたらIDだけあれば取れるみたい。。
https://graph.facebook.com/[userId]/picture?type=large
me/friends?fields=id,name,cover
取れなかったよ。。
で調べたらIDだけあれば取れるみたい。。
https://graph.facebook.com/[userId]/picture?type=large
2014年1月11日土曜日
CakePHP2 Shell 実行時にモデルでエラーが発生する
/app/Console/Command 内に **Shell.php ファイルを作成して
uses にモデルを追加したところで試しに
$this->out('Hello');
でも出力しようと試したところで、下記のようなエラーが発生。
Fatal error: Class 'I18n' not found in /***/***.php on line 462
Fatal Error Error: Class 'I18n' not found in [/***/***.php, line 462]
モデルの中を全てコメントアウトすると表示されなかったので、
メソッド毎に徐々にコメントアウトを解除すると、 afterFind が原因である事が判明。
誤:
public function afterFind($results) {}
正:
public function afterFind($results, $primary = false) {}
上記修正で解決。
uses にモデルを追加したところで試しに
$this->out('Hello');
でも出力しようと試したところで、下記のようなエラーが発生。
Fatal error: Class 'I18n' not found in /***/***.php on line 462
Fatal Error Error: Class 'I18n' not found in [/***/***.php, line 462]
モデルの中を全てコメントアウトすると表示されなかったので、
メソッド毎に徐々にコメントアウトを解除すると、 afterFind が原因である事が判明。
誤:
public function afterFind($results) {}
正:
public function afterFind($results, $primary = false) {}
上記修正で解決。
登録:
投稿 (Atom)