teratail header banner
teratail header banner
質問するログイン新規登録

質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.30%
CakePHP

CakePHPは、PHPで書かれたWebアプリケーション開発用のフレームワークです。 Ruby on Railsの考え方を多く取り入れており、Railsの高速性とPHPの機動性を兼ね備えています。 MVCやORMなどを「規約優先の考え方」で利用するため、コードを書く手間を省くことができます。 外部のライブラリに依存しないので、単体での利用が可能です。

Q&A

2回答

1024閲覧

セキュリティの関わる問題なので削除させていただきました。

amaguri

総合スコア227

CakePHP

CakePHPは、PHPで書かれたWebアプリケーション開発用のフレームワークです。 Ruby on Railsの考え方を多く取り入れており、Railsの高速性とPHPの機動性を兼ね備えています。 MVCやORMなどを「規約優先の考え方」で利用するため、コードを書く手間を省くことができます。 外部のライブラリに依存しないので、単体での利用が可能です。

0グッド

0クリップ

投稿2016/07/21 09:13

編集2018/06/18 09:41

0

0

セキュリティの関わる問題なので削除させていただきました。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

SOSを頂きましたが、amaguriさん自身で答えを述べていますよね。
あとは、
CommonComponent::CheckMatchDB()
CommonComponent::CheckMatchQuery()
をそれぞれ確認するだけです。

ちなみに

$check_cnt++; //$check_cntを1にする。

これは違います。
PHP: 加算子/減算子 - Manual

投稿2016/07/21 11:26

coba-coba

総合スコア1409

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

amaguri

2016/07/21 12:52

for文のループの詳細がイマイチつかめず。。 なんともというかんじです。。 $check_cnt++;の件 $check_cnt=0; $check_cnt++; とありましたが $check_cnt=1; につすというのはまちがいだったでしょうか??
coba-coba

2016/07/21 14:48

> for文のループの詳細がイマイチつかめず。。 > なんともというかんじです。。 すみません、何が分からないのかがよく分かりません。 もう少し具体的に何が引っかかっているのか教えてもらえますか。 > $check_cnt++;の件 > $check_cnt=0; > $check_cnt++; > とありましたが > $check_cnt=1; > につすというのはまちがいだったでしょうか?? またまた申し訳ないですが……、何を言っているか分かりません。笑 「$check_cnt++;」が示す意味は「$check_cnt=1;」と同じであるか、という意味でしょうか。 改めてコードを見たら $valid_cnt++;//$valid_cnt+1 とコメントしている行もありますね。 問題なかったかもしれません。
amaguri

2016/07/22 01:09

for ( $i=0; $i<count($results); $i++){} の文で for文 式1の$u_type=$results[$i]が0と時っていうのが$u_type=無効->type;となる時の意味がよくわからず 式2の$i<count($results)も$resultsのオブジェクトを数えて何しているのか? 式3の$u_type=$results[$i]が+1されて が$u_type=1->type; となるのがそもそも$results[$i]が$results[0]や$results[1]になったとき これは$results[0]が無効の時 $results[1]が有効の時なのか? そもそもこれは何のためのループなのか その辺踏まえてよくわからないです。。
coba-coba

2016/07/22 02:16

今回のamaguriさん自身のコメントを一度読み直して、修正してもらえますか? 意地悪で言うわけではないのですが、何をおっしゃっているのか分かりません…。 【分からない点】 1. 式1・式2・式3とはどれを指すのか(複数あって、どこのことを言っているのか分からない) 2. 「式1の$u_type=$results[$i]が0と時っていうのが$u_type=無効->type;となる時の意味がよくわからず」の部分 3. 「式3の$u_type=$results[$i]が+1されてが$u_type=1->type;となるのがそもそも$results[$i]が$results[0]や$results[1]になったときこれは$results[0]が無効の時 $results[1]が有効の時なのか?」の部分
amaguri

2016/07/22 07:10 編集

for ( $i=0; $i<count($results); $i++){のfor文の中で $i=0;の時 $u_type=$results[$i]->type; $u_db=$results[$i]->db; $i<count($results); の時 $u_type=$results[$i]->type; $u_db=$results[$i]->db; $i++; $u_type=$results[$i]->type; $u_db=$results[$i]->db; の時の動作が詳細な動きが理解できていません。 また、なぜループをしているかの理由もわからないです
amaguri

2016/07/22 07:08 編集

if ( substr($chk_ptn,0,1) == '!' ){ の '!'の意味もよくわからないです !は否定だと思うのですが。。 空白ではないよ という意味なら if ( !substr($chk_ptn,0,1) == '' ){ にすると思いますし、、
coba-coba

2016/07/22 08:05

やっていることは次のようなことです。 1.ユーザーと権限がセットになったリストを取得 2.EXPLAINファイルから取得したデータベース名とクエリ(クエリタイプ)を$resultsから1つずつ取り出す。 3.2のデータベース名とクエリが1のリストとマッチするかを調べ、マッチした数だけ$valid_cntに1を足す。(CommonComponent::CheckMatchDB()とCommonComponent::CheckMatchQuery()で何かを調べているが、何を調べているか不明なので、もしかしたらマッチしない数を$valid_cntで数えている可能性もあり。) 4.2と3の手順を$resultsの持つデータの数だけ繰り返す。(count($results)の分だけ繰り返す。) この流れを考えながらコードを見直してください。
coba-coba

2016/07/22 08:06

> if ( substr($chk_ptn,0,1) == '!' ){ > の '!'の意味もよくわからないです > !は否定だと思うのですが。。 substr($chk_ptn,0,1)が返す文字列と文字列としての'!'が一致するかを比較しています。
amaguri

2016/07/22 08:24

なるほど $resultsには複数データが入っている可能性があるのでそれを全部一個ずつ取り出して見ているということでしょうか!?
coba-coba

2016/07/22 11:36

そうです。
guest

0

ループの中の判定を外だししてみました。
少しは見やすくなったかな?

PHP

1 if (count($users) == 0) { 2 for ($i=0; $i<count($results); $i++) { 3 $check_cnt++; 4 $u_type = $results[$i]->type; 5 $u_db = $results[$i]->db; 6 if (CommonComponent::CheckMatchDB(DATABASE_PERMISSION, $u_db) != 0) { 7 continue; 8 } 9 if (CommonComponent::CheckMatchQuery($u_type, LDAP_AUTH) != 0) { 10 return 1; 11 } 12 $valid_cnt++; 13 } 14 } else { 15 for ($i=0; $i<count($results); $i++) { 16 $check_cnt++; 17 $u_type = $results[$i]->type; 18 $u_db = $results[$i]->db; 19 for ($j=0; $j<count($users); $j++) { 20 $u_auth = $users[$j]['Roles']['authority']; 21 $u_ptn = $users[$j]['Roles']['hive_database']; 22 if (CommonComponent::CheckMatchDB($u_ptn, $u_db) != 0) { 23 continue; 24 } 25 if (CommonComponent::CheckMatchQuery($u_type, $u_auth) != 0) { 26 return 1; 27 } 28 break; 29 } 30 $valid_cnt++; 31 } 32 }

// 最初の if文がうまくインデントできないなあ。

投稿2016/07/21 09:41

takasima20

総合スコア7468

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

amaguri

2016/07/21 12:54

お返事ありがとうございます。 解析していたのをかいてしまっていたのでごちゃごちゃしていましたよねすみません」
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.30%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問