Dzień dobry,
kolejny raz zwracam się do Was z prośbą pomocy, ponieważ uaktualnianie kodu ponownie mnie przerosło :c. Funkcja, z którą ma problem, to funkcja która sprawdza poprawność wpisanego adresu IP. Zacząłem pracować z takim kodem:
function sprawdz_poprawnosc_ip($ip,$a){
$ip=trim($ip);
switch($a)
{
case "4":
if(strlen($ip) < 7)
return false;
if(!ereg("\.",$ip))
return false;
if(!ereg("[0-9.]{". strlen($ip) ."}",$ip))
return false;
$ip_array = split("\.",$ip);
if (count($ip_array) != 4)
return false;
break;
case "2":
if(strlen($ip) < 3)
return false;
if(!ereg("\.",$ip))
return false;
if(!ereg("[0-9.]{". strlen($ip) ."}",$ip))
return false;
$ip_array = split("\.",$ip);
if (count($ip_array) != 2)
return false;
break;
}
//192.168.x.2-254
for($i=0;$i<count($ip_array);$i++){
if((!is_numeric($ip_array[$i])) || (($ip_array[$i] < 0) || ($ip_array[$i] > 254)))
return false;
}
return true;
}
Po researchu udało mi się go przerobić do takiego momentu, że debug PHP nie wywala mi żadnych błędów w kodzie:
function sprawdz_poprawnosc_ip($ip,$a){
$ip=trim($ip);
switch($a)
{
case "4":
if(strlen($ip) < 7)
return false;
if(!preg_match("/./",$ip))
return false;
if(!preg_match("/[0-9.]{". strlen($ip) ."}/",$ip))
return false;
$ip_array = explode("\.",$ip);
if (count($ip_array) != 4)
return false;
break;
case "2":
if(strlen($ip) < 3)
return false;
if(!preg_match("/./",$ip))
return false;
if(!preg_match("/[0-9.]{". strlen($ip) ."}/",$ip))
return false;
$ip_array = explode("\.",$ip);
if (count($ip_array) != 2)
return false;
break;
}
//192.168.x.2-254
for($i=0;$i<count($ip_array);$i++){
if((!is_numeric($ip_array[$i])) || (($ip_array[$i] < 0) || ($ip_array[$i] > 254)))
return false;
}
return true;
}
Niestety przy wpisywaniu danych na stronie (adres IP, nazwa, opis etc.) w tabelce z adresem IP wywala mi błąd "źle", który jest opisany tutaj:
case "ip_apka";
if($wartosc!=""){
if(sprawdz_poprawnosc_ip($wartosc,4)){
$con = mysqli_connect('localhost', 'xxx', 'xxx', 'xxx');
$pytam="SELECT * FROM apki_dane WHERE $nazwa='$wartosc' ";
$odpow=mysqli_query($con, $pytam);
if(mysqli_num_rows($odpow)==0){
$pytam1="SELECT * FROM users_ip WHERE ip_usera='$wartosc' GROUP BY ip_usera";
$odpow1=mysqli_query($con, $pytam1);
if(mysqli_num_rows($odpow1)==0){
$zap.="$nazwa='$wartosc',";
$tabela_bledy.="|";
}else{
$A=1;
$tabela_bledy.="już jest jako ip_usera|";
}
}else{
$wynik=mysqli_fetch_array($odpow);
$A=1;
$tabela_bledy.="już jest :$wynik[adres]|";
}
}else{
$A=1;
$tabela_bledy.="źle|";
}
}else{
$tabela_bledy.="brak|";
$A=1;
}
break;
case "opis":
$zap.="$nazwa='$wartosc',";
$tabela_bledy.="|";
break;
Miałby ktoś może jakiś pomysł, bo wszystkie moje kombinacje niestety nie dały efektu, a było ich sporo.