Hola. Estoy creando un generador de números primos. Resulta que las funciones no reciben las variables globales. (No me regañéis por tener un bucle infinito al final. (es para que esté generando números primos siempre))
Código PHP:
<?php
define('INSIDE' , true);
include ('numbers.php');
include ('lastnumber.php');
$number = $lastnumber + 2;
function prime($num){
global $numbers;
$cont = 1;
foreach ($numbers as $num => $prime){
if($num % $prime == 0){
$cont++;
}
if ($cont > 2){
return false;
break;
}
}
if($cont==2){
return true;
} else {
return false;
}
}
function writting ($resp, $number){
global $primenumbers, $lastprime;
if ($resp == true) {
$handle = fopen("numbers.php", "rb");
$contents = stream_get_contents($handle);
fclose($handle);
$replacement = str_replace($primenumbers." => ".$lastprime, $primenumbers." => ".$lastprime.",", $content);
$replacement2 = str_replace(");?>", "", $content);
$newprimes = $primenumbers +1;
$fp = fopen('numbers.php', 'w');
fwrite($fp, "".$contents."\n");
fwrite($fp, "".$newprimes." => ".$number."\n");
fwrite($fp, ");?>\n");
fclose($fp);
$fp2 = fopen('lastnumber.php', 'w');
fwrite($fp2, "<?php\n");
fwrite($fp2, " if(!defined(\"INSIDE\")){die(\"Intento de Hackeo\");}\n");
fwrite($fp2, " \$lastnumber = ".$number.";\n");
fwrite($fp2, " \$primenumbers = ".$newprimes.";\n");
fwrite($fp2, " \$lastprime = ".$number.";\n");
fwrite($fp2, "?>");
fclose($fp2);
echo "".$number."<br>";
} else {
$fp2 = fopen('lastnumber.php', 'w');
fwrite($fp2, "<?php\n");
fwrite($fp2, " if(!defined(\"INSIDE\")){die(\"Intento de Hackeo\");}\n");
fwrite($fp2, " \$lastnumber = ".$number.";\n");
fwrite($fp2, " \$primenumbers = ".$primenumbers.";\n");
fwrite($fp2, " \$lastprime = ".$lastprime.";\n");
fwrite($fp2, "?>");
fclose($fp2);
}
}
if ($_GET['mode'] == "show"){
include('numbers.php');
foreach ($numbers as $num => $prime){
echo "".$prime."<br>";
}
exit();
}
for ($i = 1; $i <= 2;){
$resp = prime($number);
writting ($resp, $number);
if ($resp == true){
require('numbers.php');
}
$number++;
}
?>
El lastnumber.php:
Código PHP:
<?php
if(!defined("INSIDE")){die("Intento de Hackeo");}
$lastnumber = 3;
$primenumbers = 3;
$lastprime = 3;
?>
Y el numbers.php:
Código PHP:
<?php
if(!defined("INSIDE")){die("Intento de Hackeo");}
$numbers = array(
1 => 1,
2 => 2,
3 => 3
);?>