mamanybono
Öğrenci
- Katılım
- 15 Eylül 2012
- Mesajlar
- 9
- Reaksiyon puanı
- 0
- Puanları
- 0
Merhabalar,
Şu anda CIDR formatındaki bi ip listesini veritabanına yazacak bi kod yazamaya çalışıyorum. Kodun bi parçası aşağıdaki gibi, bu aşağıdaki kodla şunu yapmaya çalışıyorum CIDR formatondaki(5.2.80.0/21 5.11.128.0/17) ip listesinden, her 3 üncü noktanın ve "/" karekterinin ve "boşluk" karekterinin yerini bi dizinin içine atmaya çalışıyorum. Kodları bi kaç kez kontrol ettim doğru mantıkla işliyolar gibi gözüküyor. Fakat bahsettiğim dizinin ilk bi kaç elemanını yazdırdığımda sırasıyla şu sonuçlar ortaya çıkıyor, 7,9,23 ve sonraki rakamalarda da yer yer yanlışlıl oluyor. Bu arada bu CIDR listesini bi text dökümanından kopyalayıp php sayfası üzerinde olan textarea özelliğiyle alıp $country_ip_range değişkenine ulaştırıyorum. Kodlarda hata bulamadım bende text dökümanının içini inceledim, şöyle bişey yaptım imleci text içeriğinin en başına getirdim, klavyedeki sağ ok tuşuyla tek tek atlamaya başladım, bütün karekterleri tek tuşlamayla atlıyorken boşlul karekterini 2 kez tuşlamayla atlıyor, txt dökümanındamı sorun var yoksa koddamı anlıyamadım. İlgili txt dökümanını http://www.ipaddresslocation.org/ip_ranges/get_ranges.php adresinden, alt tarafta bulunan country sekmesini turkey, output sekmesinide CIDR, seçerek elde edebilirsiniz. Yardımcı olursanız çok sevinirim. Teşekkürler.
$dot=0;
$reference_points=array();
$reference_points_index=1;
for($i=1;$i<=strlen(trim($country_ip_range));$i++){
if(substr(trim($country_ip_range),$i-1,1)=='.' && $dot<3){
$dot=$dot+1;
if($dot==3){
$reference_points[$reference_points_index]=$i;
$dot=0;
$reference_points_index=$reference_points_index+1;
}
}elseif(substr(trim($country_ip_range),$i-1,1)=='/'){
$reference_points[$reference_points_index]=$i;
$reference_points_index=$reference_points_index+1;
}elseif(substr(trim($country_ip_range),$i-1,1)==" "){
$reference_points[$reference_points_index]=$i;
$reference_points_index=$reference_points_index+1;
}
}
Şu anda CIDR formatındaki bi ip listesini veritabanına yazacak bi kod yazamaya çalışıyorum. Kodun bi parçası aşağıdaki gibi, bu aşağıdaki kodla şunu yapmaya çalışıyorum CIDR formatondaki(5.2.80.0/21 5.11.128.0/17) ip listesinden, her 3 üncü noktanın ve "/" karekterinin ve "boşluk" karekterinin yerini bi dizinin içine atmaya çalışıyorum. Kodları bi kaç kez kontrol ettim doğru mantıkla işliyolar gibi gözüküyor. Fakat bahsettiğim dizinin ilk bi kaç elemanını yazdırdığımda sırasıyla şu sonuçlar ortaya çıkıyor, 7,9,23 ve sonraki rakamalarda da yer yer yanlışlıl oluyor. Bu arada bu CIDR listesini bi text dökümanından kopyalayıp php sayfası üzerinde olan textarea özelliğiyle alıp $country_ip_range değişkenine ulaştırıyorum. Kodlarda hata bulamadım bende text dökümanının içini inceledim, şöyle bişey yaptım imleci text içeriğinin en başına getirdim, klavyedeki sağ ok tuşuyla tek tek atlamaya başladım, bütün karekterleri tek tuşlamayla atlıyorken boşlul karekterini 2 kez tuşlamayla atlıyor, txt dökümanındamı sorun var yoksa koddamı anlıyamadım. İlgili txt dökümanını http://www.ipaddresslocation.org/ip_ranges/get_ranges.php adresinden, alt tarafta bulunan country sekmesini turkey, output sekmesinide CIDR, seçerek elde edebilirsiniz. Yardımcı olursanız çok sevinirim. Teşekkürler.
$dot=0;
$reference_points=array();
$reference_points_index=1;
for($i=1;$i<=strlen(trim($country_ip_range));$i++){
if(substr(trim($country_ip_range),$i-1,1)=='.' && $dot<3){
$dot=$dot+1;
if($dot==3){
$reference_points[$reference_points_index]=$i;
$dot=0;
$reference_points_index=$reference_points_index+1;
}
}elseif(substr(trim($country_ip_range),$i-1,1)=='/'){
$reference_points[$reference_points_index]=$i;
$reference_points_index=$reference_points_index+1;
}elseif(substr(trim($country_ip_range),$i-1,1)==" "){
$reference_points[$reference_points_index]=$i;
$reference_points_index=$reference_points_index+1;
}
}