Mam taki problem napisałem skrypt który tworzy sobie zadanie matematyczne dokładnie równanie typu 2 + 4 / 4 = i teraz problem w tym, że dla niektórych przypadków skrypt ten wywala błąd w pliku php takiej treśći.
[Sat Feb 06 15:50:05.600665 2016] [:error] [pid 29268] [client 127.0.0.1:39025] PHP Parse error: syntax error, unexpected '17' (T_LNUMBER) in /var/www/html/pamiec/arytmetyka.php(29) : eval()'d code on line 1, referer: http://127.0.0.1/pamiec/arytmetyka.php?dzialanie=3%20?%204%20*%204&wynik=19&znak=43&poziom=3
Co może być tego powodem
Tutaj jest kod php.
public function ustaw_znak($dzialanie,$ile_cyfr) {
$j = 0;
$ktory_znak = rand(1,$ile_cyfr-1);
$bool = true;
//print $ktory_znak;
for ($i=0;$i <= strlen($dzialanie);$i++) {
if ($dzialanie[$i] == "+" or $dzialanie[$i] == "-" or $dzialanie[$i] == "*" or $dzialanie[$i] == "/") $j++;
if ($ktory_znak == $j and $bool == true) {
$bool = !$bool;
$dzialanie[$i] = "?";
}
}
return $dzialanie;
}
public function stworz_zadania_aryt($ile_cyfr,$do_jakie_wart) {
$rand = 0;
$rand2 = 0;
$tablica[0] = 2;
$tablica[1] = 4;
$dzialanie = "";
$tablica[2] = 6;
$tablica[3] = 8;
$tablica[4] = 10;
for ($i=1;$i<=$ile_cyfr;$i++) $liczba[$i] = rand(1,$do_jakie_wart);
for ($i=1;$i <= count($liczba);$i++) {
$znak = rand(1,4);
if ($i != $ile_cyfr) {
if ($znak == 1) $znak = " + ";
else if ($znak == 2) $znak = " - ";
else if ($znak == 3) $znak = " * ";
else if ($znak == 4) $znak = " / ";
if ( $znak == " / " and ($liczba[$i] > 10 or $liczba[$i+1] > 10) ) {
$rand = rand(0,4);
$rand2 = rand(0,4);
$liczba[$i] = $tablica[$rand];
$liczba[$i+1] = $tablica[$rand2];
$dzialanie .= $liczba[$i] . $znak;
print "<font color=red>dupa</font>";
continue;
}
if ( $znak == " * " and ($liczba[$i] > 10 or $liczba[$i+1] > 10) ) {
$rand = rand(0,3);
$rand2 = rand(0,3);
$liczba[$i] = $tablica[$rand];
$liczba[$i+1] = $tablica[$rand2];
$dzialanie .= $liczba[$i] . $znak;
print "<font color=green>dupa</font>";
continue;
}
$dzialanie .= $liczba[$i] . $znak;
}
else {
$dzialanie .= $liczba[$i];
}
}
return $dzialanie;
}
if (isset($_GET["dzialanie"]) ) {
//if ($_GET["znak"] == "-") {
//print "sadasdasdad";
$znak = chr($_GET["znak"]);
print "<font color=red>$znak</font>";
//}
$dzialanie0 = str_replace("?",$znak,$_GET["dzialanie"]);
eval("\$wynik2 = $dzialanie0;");
$bool = false;
print "<font color=red>wynik = $wynik2<br>wynik2 = $_GET[wynik]</font>";
if ($wynik2 == $_GET["wynik"]) {
$bool = true;
}
}
$wynik = "";
$dzialanie = $zadanie->stworz_zadania_aryt($dane_poziomu[0],$dane_poziomu[1]);
eval("\$wynik = $dzialanie;");
print "<font color=gray>$dzialanie </font>";
if ($dane_poziomu[2] == 0) $dzialanie = $zadanie->ustaw_znak($dzialanie,$dane_poziomu[0]);
?>
<div id=glowna>
<div id=glowna2>
</div>
<div id=glowna3>
<?php
if ($dane_poziomu[2] == 0) {
print ("<div align=center><font class=strona>Co wstawisz w miejsce znaku zapytania</font>
<br>");
if ($bool == true and isset($_GET["wynik"]) ) print "<font color=blue>dobrze</font><br>";
else if ($bool != true and isset($_GET["wynik"]) ) print "<font color=blue>źle</font><br>";
$plus = ord("+");
$minus = ord("-");
$mnoz = ord("*");
$dziel = ord("/");
print ("<font class=strona2>$dzialanie" . " = " . $wynik . "</font><br>
<a class=znaki href=\"./arytmetyka.php?dzialanie=$dzialanie&wynik=$wynik&znak=$plus&poziom=$poziom\">+</a>  
<a class=znaki href=\"./arytmetyka.php?dzialanie=$dzialanie&wynik=$wynik&znak=$minus&poziom=$poziom\">-</a>  
<a class=znaki href=\"./arytmetyka.php?dzialanie=$dzialanie&wynik=$wynik&znak=$mnoz&poziom=$poziom\">*</a>  
<a class=znaki href=\"./arytmetyka.php?dzialanie=$dzialanie&wynik=$wynik&znak=$dziel&poziom=$poziom\">/</a>  <br>
<a onclick=\"window.close()\" class=zamknij>zamknij</a>
</div>");
}
else {
print ("<div align=center>");
if ( isset($_POST["wynik"]) and $_POST["wynik"] == $_POST["wynik2"] ) print "<font color=blue>dobrze</font>";
else if ( isset($_POST["wynik"]) and $_POST["wynik"] != $_POST["wynik2"] ) print "<font color=blue>źle</font>";
print ("<form action=./arytmetyka.php method=post id=aryt>
<font class=strona>Oblicz podane wyrażenie</font><br>");
print ("<font class=strona2>$dzialanie" . " = <input type=text size=3 name=wynik>
<input type=hidden name=wynik2 value=$wynik></font>
<input type=hidden name=poziom value=$poziom></font>
<a onclick=\"document.getElementById('aryt').submit();\" href=# class=strona>Sprawdź</a><br>
<a onclick=\"window.close()\" class=zamknij>zamknij</a>
</div>
</form>
" );
}