Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] Funkcja eval
Forum PHP.pl > Forum > Przedszkole
Webmasterr
Co robię źle?

  1. <form action="?" method="post">
  2.  
  3. <input type="text" name="licz"/>
  4. <input type="submit"/>
  5.  
  6. </form>
  7.  
  8. <br />
  9. <br />

  1. <?php
  2. if (isset($_POST['licz']))
  3. {
  4. eval($_POST['licz']);
  5. }
  6. ?>


Wyświetla mi błąd: Parse error: syntax error, unexpected $end in /var/www/virtual/prezenty.c0.pl/l.php(14) : eval()'d code on line 1
markonix
Błąd wynika z wpisywanej treści.
Poza tym eval przy formularz naraża Twoją aplikacje na spore niebezpieczeństwo.
Mephistofeles
Nie używaj eval, jeśli chcesz zrobić kalkulator (tak podejrzewam?) zainteresuj się np. ONP.
Spirit86
  1. eval('<?= '.$_POST['licz']. ' ?>');


a jak ktoś w zmiennej licz wpisze np echo join(file('index.php'));

?
Webmasterr
Filtrowanie danych.

A jak zrobić żeby było np. 5+2+5|2, gdzie 5|2 to 5 do potęgi 2?

Bo resztę mam (oczyszczanie ze spacji, filtrowanie danych, wykonywanie mnożenia, dzielenia, dodawania, odejmowania, usuwanie znaku = z samego końca).
Wicepsik
  1. echo preg_replace('#(\d+)\|(\d+)#', 'pow(\\1,\\2)', '45|6');
Webmasterr
Cytat(Wicepsik @ 15.11.2010, 15:47:04 ) *
  1. echo preg_replace('#(\d+)\|(\d+)#', 'pow(\\1,\\2)', '45|6');



A kolejność wykonywania działań? Będzie zachowana?
Mephistofeles
Potęgę się zapisuje raczej jako ^. 5|2 to bardziej, że 2 jest podzielne przez 5 winksmiley.jpg.
Webmasterr
No dobra. Ale w takim razie według parsera 2^2^2 == 6 .
Chyba preg_replace źle działa.

Odnawiam
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.