저는 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 루프가 익숙하지 않은 대신 대체 테이블에 저장합니다.
도움이 될 것입니다.
서브넷이 실제로 바이너리 연산이기 때문에 이진 연산자를 사용하십시오 (잘못된 경우 올바른 주소를 지정하십시오). 그래서 1에서 255로 이동하여 (lastIPByte & lastSubnetByte) – ToBe
과 일치하는 것을 삽입하십시오. while 문에서 데이터를 얻는 방법은 ip_addresses 테이블에 저장하는 것이 가장 큰 문제입니다. 자세한 내용을 표시하도록 수정하겠습니다. –
관련 데이터를 저장하는 방법을 책에서 확인하십시오. 자세한 내용은 여기에서 설명합니다. http://book.cakephp.org/2.0/en/models/saving-your-data.html – burzum