Autor Zpráva
Ford
Profil
Dobrý večer. Mám funkci, která kreslí graf pomocí teček. Způspb určování X a Y je následující:

for($x=-8;$x<=8;$x+=1) {
   $y = 2*$x-1;
   if (isset($y) AND isset($x)) {
      echo "[".$p.",".$y."]<br>";
      imagestring($im,5,$x,$y,".",$red);
   }
}


Takto vše funguje a funkce se vykreslí.

Tohle je ovšem k ničemu (zadávat rovnici manuálně), chci to utvořit tak, že rovnice funkce se přidá text inputem.

Udělal jsem to podobným způsobem:

echo "y = ";
echo "
   <form>
      <input type='text' name='myInput'>
      <input type='submit' name='submit' value='Jedem!'>
   </form>
";
if isset($_POST['submit']) {
$theInput = $_POST['myInput']; //
for($x=-8;$x<=8;$x+=1) {
   $y = $theInput;
   if (isset($y) AND isset($x)) {
      echo "[".$p.",".$y."]<br>";
      imagestring($im,5,$x,$y,".",$red);
   }
}
...
}


Tato funkce se ve většině případů vykreslí ŠPATNĚ - jako čára totožná s osou X. Zvláštní je, že pokud zadám do inputu na první místo číslo (př. 3*sin($x)/2*cos($x)) -> výsledkem je čára rovnoběžná s osou X posunutá na ose Y o +3. První šíslo je bráno, zbytek ignorován.

Problém je jednoznačně v části $y = $theInput;, protože při manuálním zadávání kód funguje. Tuší někdo, jak problém vyřešit?
Alphard
Profil
takhle to nepůjde, je to bráno jako normální string, muselo by to být v eval(), to má ale bezpečnostní rizika

PS: jestli budete dělit, pozor na dělení 0 :-)

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0