Autor | Zpráva | ||
---|---|---|---|
Ford Profil |
#1 · Zasláno: 6. 11. 2008, 22:28:49 · Upravil/a: Ford
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 |
#2 · Zasláno: 6. 11. 2008, 23:25:16
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 :-) |
||
Časová prodleva: 15 let
|
0