I have the following code snippet in a function and I get undefined variable error. Does anyone know how to end this error? I'm initializing it with null
, even then the error appears.
Notice: Undefined variable: stringMascaraBin in C: \ xampp \ htdocs \ calculator-ip \ calculator-ip.php on line 284
At the time of returning the variable $stringMascaraBin
.
function exibe_mascara() { //função pra exibir informações da máscara original da rede
$mascara_bin = array("", "", "", ""); //array pra máscara em binário
$conta_octeto = 0; //variável para contar os octetos da máscara
$conta_bit = 0; // variável pra contar os bits da máscara
if ($_POST["mascara"] >= 8 && $_POST["mascara"] <= 30 || valida_mascara_decimal()) { //condição pra validar o que o cara digitou
if ($_POST["mascara"] >= 8 && $_POST["mascara"] <= 30) { //condição p testar se a máscara está em notação CIDR
for ($j = 0; $j < $_POST["mascara"]; $j++) { //laço para acrescentar "1" na máscara de acordo com a máscara CIDR
$mascara_bin[$conta_octeto] = $mascara_bin[$conta_octeto] . "1";
$conta_bit++;
if ($conta_bit == 8 || $conta_bit == 16 || $conta_bit == 24) {//condição pra incrementar o octeto
$conta_octeto++;
}
}
$limite = 32 - $_POST["mascara"]; //conta pra saber quantos bits sobraram pra host
for ($i = 0; $i < $limite; $i++) { //laço para acrescentar os bits de host, os zero's.
$mascara_bin[$conta_octeto] = $mascara_bin[$conta_octeto] . "0";
$conta_bit++;
if ($conta_bit == 8 || $conta_bit == 16 || $conta_bit == 24) {//condição pra incrementar o octeto
$conta_octeto++;
}
}
echo"<br>";
echo"Máscara em binário: ";
for ($i = 0; $i < count($mascara_bin); $i++) {//exibir a máscara em binário
echo $mascara_bin[$i];
}
echo"<br>";
echo"Máscara em notação CIDR: /".$_POST["mascara"]."<br>";
echo"Máscara em decimal: ";
$mascara_decimal = array("", "", "", "");//array pra máscara em decimal
for ($i = 0; $i < 4; $i++) {//laço pra exibir a máscara em decimal
echo bindec($mascara_bin[$i]);
$mascara_decimal[$i] = bindec($mascara_bin[$i]);
if ($i < 3) {
echo".";
}
}
//separa os octetos em arrays
$octeto1 = str_split($mascara_bin[0]);
$octeto2 = str_split($mascara_bin[1]);
$octeto3 = str_split($mascara_bin[2]);
$octeto4 = str_split($mascara_bin[3]);
//chamada da função wildcard
echo "<br> Wildcard binário: ";
$octeto1_wil = wildcard($octeto1);
echo ".";
$octeto2_wil = wildcard($octeto2);
echo ".";
$octeto3_wil = wildcard($octeto3);
echo ".";
$octeto4_wil = wildcard($octeto4);
echo "<br>";
//inicializando as strings para os octetos
$stringArrayF1 = null;
$stringArrayF2 = null;
$stringArrayF3 = null;
$stringArrayF4 = null;
//transformando os arrays de octetos wildcard em strings
foreach ($octeto1_wil as $stringArray1) {
$stringArrayF1 = $stringArrayF1 . $stringArray1;
}
foreach ($octeto2_wil as $stringArray2) {
$stringArrayF2 = $stringArrayF2 . $stringArray2;
}
foreach ($octeto3_wil as $stringArray3) {
$stringArrayF3 = $stringArrayF3 . $stringArray3;
}
foreach ($octeto4_wil as $stringArray4) {
$stringArrayF4 = $stringArrayF4 . $stringArray4;
}
$aux = 0; //variável pra mudar a posição do vetor endereço
$endereco_ip = explode(".", $_POST["endereco"]); //tirar os pontos do endereço digitado
echo "Endereço de Broadcast: ";
//chamada da função de broadcast
broadcast($stringArrayF1, $endereco_ip, $aux);
$aux++;
broadcast($stringArrayF2, $endereco_ip, $aux);
$aux++;
broadcast($stringArrayF3, $endereco_ip, $aux);
$aux++;
$ultimo_octeto = broadcast($stringArrayF4, $endereco_ip, $aux); //armazena o ultimo octeto de broadcast numa variavel
echo "<br>Último IP válido: ";
$aux = 0;
//chamada da função de ultimo ip valido
UltimoIpValido($stringArrayF1, $endereco_ip, $aux, $ultimo_octeto);
$aux++;
UltimoIpValido($stringArrayF2, $endereco_ip, $aux, $ultimo_octeto);
$aux++;
UltimoIpValido($stringArrayF3, $endereco_ip, $aux, $ultimo_octeto);
$aux++;
UltimoIpValido($stringArrayF4, $endereco_ip, $aux, $ultimo_octeto);
}
if (valida_mascara_decimal()) { //chama a função de validar pra saber se está no formato correto
$mascara_decimal = array("", "", "", ""); //array pra mascara em decimal
$mascara_decimal = explode(".", $_POST["mascara"]); //adicionando a máscara digitada ao array de mascara decimal sem os pontos
$mascara_binario = array("", "", "", "");//cria array pra mascara em binario
echo "Máscara em decimal: ";
echo $_POST["mascara"]."<br>";//exibe a mascara em decimal
echo "Máscara em binário: ";
for ($i = 0; $i < 4; $i++) {//laço pra transformar de decimal pra binario e armazenar no array mascara binario
$mascara_binario[$i] = str_pad(decbin($mascara_decimal[$i]), 8, "0", STR_PAD_LEFT); //transforma a posição i da mascara em decimal em binario e armazena na posição i da mascara em binário e adiciona 0 a esquerda caso o numero em binario n tenha preenchido bits
if ($i < 4 && $i > 0) {
echo"."; //coloca os pontos nos octetos
}
echo $mascara_binario[$i]; //exibe a mascara binario
}
//separa os octetos em arrays
$octeto1 = str_split($mascara_binario[0]);
$octeto2 = str_split($mascara_binario[1]);
$octeto3 = str_split($mascara_binario[2]);
$octeto4 = str_split($mascara_binario[3]);
//chama função pra saber quais bits estão setados
$bit_setado_octeto1 = verificarBit($octeto1);
$bit_setado_octeto2 = verificarBit($octeto2);
$bit_setado_octeto3 = verificarBit($octeto3);
$bit_setado_octeto4 = verificarBit($octeto4);
//chama a função wildcard e adiciona o retorno numa variável
echo "<br> Wildcard binário: ";
$octeto1_wil = wildcard($octeto1);
echo ".";
$octeto2_wil = wildcard($octeto2);
echo ".";
$octeto3_wil = wildcard($octeto3);
echo ".";
$octeto4_wil = wildcard($octeto4);
//inicializa as strings com null
$stringArrayF1 = null;
$stringArrayF2 = null;
$stringArrayF3 = null;
$stringArrayF4 = null;
//transforma os arrays dos octetos em strings
foreach ($octeto1_wil as $stringArray1) {
$stringArrayF1 = $stringArrayF1 . $stringArray1;
}
foreach ($octeto2_wil as $stringArray2) {
$stringArrayF2 = $stringArrayF2 . $stringArray2;
}
foreach ($octeto3_wil as $stringArray3) {
$stringArrayF3 = $stringArrayF3 . $stringArray3;
}
foreach ($octeto4_wil as $stringArray4) {
$stringArrayF4 = $stringArrayF4 . $stringArray4;
}
echo "<br>";
$aux = 0;
$endereco_ip = explode(".", $_POST["endereco"]); //armazena na variavel endereço ip o que foi digitado pra usar na função broadcast
echo "Endereço de Broadcast: ";
//chama a função broadcast passando os parâmetros pedidos
broadcast($stringArrayF1, $endereco_ip, $aux);
$aux++;
broadcast($stringArrayF2, $endereco_ip, $aux);
$aux++;
broadcast($stringArrayF3, $endereco_ip, $aux);
$aux++;
$ultimo_octeto = broadcast($stringArrayF4, $endereco_ip, $aux); //armazena o último octeto em broadcast numa variavel ultimo octeto
echo "<br>Último IP válido: ";
//chama a função de ultimo ip valido
$aux = 0;
UltimoIpValido($stringArrayF1, $endereco_ip, $aux, $ultimo_octeto);
$aux++;
UltimoIpValido($stringArrayF2, $endereco_ip, $aux, $ultimo_octeto);
$aux++;
UltimoIpValido($stringArrayF3, $endereco_ip, $aux, $ultimo_octeto);
$aux++;
UltimoIpValido($stringArrayF4, $endereco_ip, $aux, $ultimo_octeto);
//soma a quantidade de bit setado de cada octeto pra mostrar a mascara em notação CIDR
$cidr = $bit_setado_octeto1 + $bit_setado_octeto2 + $bit_setado_octeto3 + $bit_setado_octeto4;
echo "<br>Máscara em notação CIDR: " . $cidr;
$stringMascaraBin = null; //inicializa a variavel de string da mascara binario
foreach ($mascara_binario as $stringMascara) { //transforma em string o array de mascara binario
$stringMascaraBin = $stringMascaraBin . $stringMascara;
}
}
} else {
echo "Formato de máscara inválido!";
}
return $stringMascaraBin; //retorna a string da mascara em binario
}