回答編集履歴

6

修正

2016/07/13 01:29

投稿

coba-coba
coba-coba

スコア1409

test CHANGED
@@ -96,7 +96,7 @@
96
96
 
97
97
  // SQLの用意
98
98
 
99
- $sql = "SELECT start, last FROM ips AS Ip WHERE INET_ATON(?) between INET_ATON(start) and INET_ATON(end)";
99
+ $sql = "SELECT start, last FROM ips AS Ip WHERE INET_ATON(?) between INET_ATON(start) and INET_ATON(last)";
100
100
 
101
101
 
102
102
 

5

修正

2016/07/13 01:29

投稿

coba-coba
coba-coba

スコア1409

test CHANGED
@@ -42,7 +42,7 @@
42
42
 
43
43
  'INET_ATON(start) <=' => sprintf("%u", ip2long($this->getAccessIp())),
44
44
 
45
- 'INET_ATON(end) >=' => sprintf("%u", ip2long($this->getAccessIp()))
45
+ 'INET_ATON(last) >=' => sprintf("%u", ip2long($this->getAccessIp()))
46
46
 
47
47
  ]
48
48
 

4

修正

2016/07/12 19:30

投稿

coba-coba
coba-coba

スコア1409

test CHANGED
@@ -1,6 +1,6 @@
1
1
  CakePHP2ですよね。
2
2
 
3
- 2通りの方法でコードを載せるので、コントローラーにそのままコピペして試してみてください。
3
+ 3通りの方法でコードを載せるので、コントローラーにそのままコピペして試してみてください。
4
4
 
5
5
  indexアクションにしているので、重複する場合は適宜変更してください。
6
6
 
@@ -11,6 +11,68 @@
11
11
  ---
12
12
 
13
13
  方法その1
14
+
15
+ ```PHP
16
+
17
+ // IpsController
18
+
19
+
20
+
21
+ // テスト用に固定のIPを返す
22
+
23
+ public function getAccessIp() {
24
+
25
+ return '203.0.113.1';
26
+
27
+ }
28
+
29
+
30
+
31
+ // メインの処理
32
+
33
+ public function index() {
34
+
35
+ // データの取得
36
+
37
+ $ips = $this->Ip->find('first',[
38
+
39
+ 'conditions' => [
40
+
41
+ 'and' => [
42
+
43
+ 'INET_ATON(start) <=' => sprintf("%u", ip2long($this->getAccessIp())),
44
+
45
+ 'INET_ATON(end) >=' => sprintf("%u", ip2long($this->getAccessIp()))
46
+
47
+ ]
48
+
49
+ ]
50
+
51
+ ]);
52
+
53
+
54
+
55
+ // $ipsが空なら該当なし、そうでなければ該当あり
56
+
57
+ if (empty($ips)) {
58
+
59
+ debug("範囲内のIPアドレスに該当しませんでした。");
60
+
61
+ } else {
62
+
63
+ debug("範囲内のIPアドレスに該当しました。");
64
+
65
+ }
66
+
67
+ }
68
+
69
+ ```
70
+
71
+
72
+
73
+ ---
74
+
75
+ 方法その2
14
76
 
15
77
  ```PHP
16
78
 
@@ -64,7 +126,7 @@
64
126
 
65
127
  ---
66
128
 
67
- 方法その2
129
+ 方法その3
68
130
 
69
131
  ```PHP
70
132
 

3

修正

2016/07/12 19:22

投稿

coba-coba
coba-coba

スコア1409

test CHANGED
@@ -1,6 +1,6 @@
1
1
  CakePHP2ですよね。
2
2
 
3
- 3通りの方法でコードを載せるので、コントローラーにそのままコピペして試してみてください。
3
+ 2通りの方法でコードを載せるので、コントローラーにそのままコピペして試してみてください。
4
4
 
5
5
  indexアクションにしているので、重複する場合は適宜変更してください。
6
6
 
@@ -11,68 +11,6 @@
11
11
  ---
12
12
 
13
13
  方法その1
14
-
15
- ```PHP
16
-
17
- // IpsController
18
-
19
-
20
-
21
- // テスト用に固定のIPを返す
22
-
23
- public function getAccessIp() {
24
-
25
- return '203.0.113.1';
26
-
27
- }
28
-
29
-
30
-
31
- // メインの処理
32
-
33
- public function index() {
34
-
35
- // 結果の取得
36
-
37
- $ips = $this->Ip->find('first',[
38
-
39
- 'conditions' => [
40
-
41
- 'and' => [
42
-
43
- 'start <=' => $this->getAccessIp(),
44
-
45
- 'last >=' => $this->getAccessIp()
46
-
47
- ]
48
-
49
- ]
50
-
51
- ]);
52
-
53
-
54
-
55
- // $ipsが空なら該当なし、そうでなければ該当あり
56
-
57
- if (empty($ips)) {
58
-
59
- debug("範囲内のIPアドレスに該当しませんでした。");
60
-
61
- } else {
62
-
63
- debug("範囲内のIPアドレスに該当しました。");
64
-
65
- }
66
-
67
- }
68
-
69
- ```
70
-
71
-
72
-
73
- ---
74
-
75
- 方法その2
76
14
 
77
15
  ```PHP
78
16
 
@@ -126,7 +64,7 @@
126
64
 
127
65
  ---
128
66
 
129
- 方法その3
67
+ 方法その2
130
68
 
131
69
  ```PHP
132
70
 

2

追記

2016/07/12 18:44

投稿

coba-coba
coba-coba

スコア1409

test CHANGED
@@ -1,12 +1,16 @@
1
1
  CakePHP2ですよね。
2
2
 
3
- シンプルなコードを載せるので、コントローラーにそのままコピペして試してみてください。
3
+ 3通りの方法でコードを載せるので、コントローラーにそのままコピペして試してみてください。
4
4
 
5
5
  indexアクションにしているので、重複する場合は適宜変更してください。
6
6
 
7
7
  それと、テーブル名はipsにしています。
8
8
 
9
9
 
10
+
11
+ ---
12
+
13
+ 方法その1
10
14
 
11
15
  ```PHP
12
16
 
@@ -28,11 +32,121 @@
28
32
 
29
33
  public function index() {
30
34
 
31
- // ビューを使わない
35
+ // 結果の取得
32
36
 
33
- $this->autoRender = false;
37
+ $ips = $this->Ip->find('first',[
38
+
39
+ 'conditions' => [
40
+
41
+ 'and' => [
42
+
43
+ 'start <=' => $this->getAccessIp(),
44
+
45
+ 'last >=' => $this->getAccessIp()
46
+
47
+ ]
48
+
49
+ ]
50
+
51
+ ]);
34
52
 
35
53
 
54
+
55
+ // $ipsが空なら該当なし、そうでなければ該当あり
56
+
57
+ if (empty($ips)) {
58
+
59
+ debug("範囲内のIPアドレスに該当しませんでした。");
60
+
61
+ } else {
62
+
63
+ debug("範囲内のIPアドレスに該当しました。");
64
+
65
+ }
66
+
67
+ }
68
+
69
+ ```
70
+
71
+
72
+
73
+ ---
74
+
75
+ 方法その2
76
+
77
+ ```PHP
78
+
79
+ // IpsController
80
+
81
+
82
+
83
+ // テスト用に固定のIPを返す
84
+
85
+ public function getAccessIp() {
86
+
87
+ return '203.0.113.1';
88
+
89
+ }
90
+
91
+
92
+
93
+ // メインの処理
94
+
95
+ public function index() {
96
+
97
+ // SQLの用意
98
+
99
+ $sql = "SELECT start, last FROM ips AS Ip WHERE INET_ATON(?) between INET_ATON(start) and INET_ATON(end)";
100
+
101
+
102
+
103
+ // SQLの実行と結果取得
104
+
105
+ $ips = $this->Ip->query($sql, [$this->getAccessIp()]);
106
+
107
+
108
+
109
+ // $ipsが空なら該当なし、そうでなければ該当あり
110
+
111
+ if (empty($ips)) {
112
+
113
+ debug("範囲内のIPアドレスに該当しませんでした。");
114
+
115
+ } else {
116
+
117
+ debug("範囲内のIPアドレスに該当しました。");
118
+
119
+ }
120
+
121
+ }
122
+
123
+ ```
124
+
125
+
126
+
127
+ ---
128
+
129
+ 方法その3
130
+
131
+ ```PHP
132
+
133
+ // IpsController
134
+
135
+
136
+
137
+ // テスト用に固定のIPを返す
138
+
139
+ public function getAccessIp() {
140
+
141
+ return '203.0.113.1';
142
+
143
+ }
144
+
145
+
146
+
147
+ // メインの処理
148
+
149
+ public function index() {
36
150
 
37
151
  // ipsテーブルから全データ取得
38
152
 

1

追記

2016/07/12 18:20

投稿

coba-coba
coba-coba

スコア1409

test CHANGED
@@ -1,8 +1,10 @@
1
1
  CakePHP2ですよね。
2
2
 
3
- シンプルなコードを載せるので、そのままコピペして試してみてください。
3
+ シンプルなコードを載せるので、コントローラーにそのままコピペして試してみてください。
4
4
 
5
5
  indexアクションにしているので、重複する場合は適宜変更してください。
6
+
7
+ それと、テーブル名はipsにしています。
6
8
 
7
9
 
8
10
 
@@ -25,6 +27,12 @@
25
27
  // メインの処理
26
28
 
27
29
  public function index() {
30
+
31
+ // ビューを使わない
32
+
33
+ $this->autoRender = false;
34
+
35
+
28
36
 
29
37
  // ipsテーブルから全データ取得
30
38