Ver Mensaje Individual
  #1 (permalink)  
Antiguo 18/09/2009, 11:03
Razican
 
Fecha de Ingreso: enero-2008
Mensajes: 37
Antigüedad: 18 años, 9 meses
Puntos: 0
No consigo hacer funcionar mi programa

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
);?>