2015-01-21 5 views
0

저는 CakePHP에 상당히 익숙하며이를 수행하는 방법을 고민하고 있습니다. IP 주소를 할당하는 것에 대한 설명이있는 테이블에 IP 주소를 저장해야합니다. 먼저 IP 범위를 만듭니다. 192.168.0.1/255.255.255.0 이것은 문제가되지 않지만 IP 범위가 다른 테이블의 모든 IP 주소를 만들길 원합니다. (ip2long로 저장)CakePHP IP 범위 생성

Ip_Ranges : (ip2long로 저장)

Id, Network,  Subnet,  Description 
1 , 192.168.0.0, 255.255.255.0, Internal Range 

Ip_Addresses는 :

Address,  Subnet,  Description 
192.168.0.1, 255.255.255.0, 
192.168.0.2, 255.255.255.0, 
192.168.0.3, 255.255.255.0, 
192.168.0.4, 255.255.255.0, 
192.168.0.., 255... 

당신은 그림을 얻는다!

코드 지금까지 : 그래서

public function add() { 
    $this->IpRange->create(); 
    if ($this->IpRange->save($this->request->data)) { 
     $ip = ip2long($this->request->data['IpRange']['Network']); 
     $nm = ip2long($this->request->data['IpRange']['Subnet']); 
     $nw = ($ip & $nm); 
     $bc = $nw | (~$nm); 

     while($ip <= $bc){ 
      //What should go here to save the $ip??? 

      $ip++; 
     }    
     $this->Session->setFlash(__('The IP Range has been saved.')); 
     return $this->redirect(array('action' => 'index')); 
    } else { 
     $this->Session->setFlash(__('The IP Range could not be saved. Please, try again.')); 
    } 
} 

당신은 간단한 양식이 저장되어있는 IP 범위를 만들어 볼 수 있지만이 저장할 때 나는 붙어 곳입니다 ip_addresses 테이블을 채울 필요로 .

어떻게해야합니까? 나는 잠시 보았을 뿐이고 브로드 캐스트 주소에 도달 할 때까지 네트워크 주소를 ++로 가정하지만 cakephp와 while 루프가 익숙하지 않은 대신 대체 테이블에 저장합니다.

도움이 될 것입니다.

+0

서브넷이 실제로 바이너리 연산이기 때문에 이진 연산자를 사용하십시오 (잘못된 경우 올바른 주소를 지정하십시오). 그래서 1에서 255로 이동하여 (lastIPByte & lastSubnetByte) – ToBe

+0

과 일치하는 것을 삽입하십시오. while 문에서 데이터를 얻는 방법은 ip_addresses 테이블에 저장하는 것이 가장 큰 문제입니다. 자세한 내용을 표시하도록 수정하겠습니다. –

+1

관련 데이터를 저장하는 방법을 책에서 확인하십시오. 자세한 내용은 여기에서 설명합니다. http://book.cakephp.org/2.0/en/models/saving-your-data.html – burzum

답변

0

분할 넷 마스크, IP 주소를 추가하는 반복 횟수 설정 값에 따라 다름?