Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP][MySQL]eval()pomoc w uzyciu
Toskan
post
Post #1





Grupa: Zarejestrowani
Postów: 39
Pomógł: 0
Dołączył: 4.09.2012

Ostrzeżenie: (0%)
-----


Witam
Nie wiem czy jestem jakims szczegolnym przypadkiem ale jak zwykle nie moge czegos zrobic:/
w bazie chce zapisac dzialania na zmiennych np
  1. $zmienna['a']-$zmienna['b']

wiec zapisuje je jako varchar(60) utf8_general_ci
w skrypcie wpisuje np
  1. $zmienna1 = $zmienna['pole w bazie'];
  2. eval('echo $zmienna1');

wyswietla to jednak tekst
probowalem tez
  1. $zmienna1=$zmienna['pole w bazie']; //jednak tu pole w bazie to <?php $zmienna['a']-$zmienna['b'] ?>
  2. eval('?> echo $zmienna1 <?php');

jednak po tym strona sie rozwala a nie ma zadnego efektu a nawet tekstu
szukalem czytalem ale ja musze miec chyba czarno na bialym co ma byc gdzie i jak ma byc zapisane:/
Prosze o pomoc:)


@edit
Jest mi to potrzebne do gry z pokemonami,ktore maja swoje posuniecia a posuniecia maja bardzo ale to bardzo rozne uzycie wiec zadna tablica sie do tego nie nada
moze i jest cos zle ale zaczynam zabawe dopiero:)
zabawe z tym zaczalem juz dosc dawno ale mialem dluga przerwe wlasnie przez te posuniecia:(

Ten post edytował Toskan 25.10.2012, 18:00:02
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
jaslanin
post
Post #2





Grupa: Zarejestrowani
Postów: 511
Pomógł: 143
Dołączył: 13.03.2010
Skąd: Jasło

Ostrzeżenie: (0%)
-----


lepiej napisz w nowym wątku z czym masz problem bo takie rozwiązanie jest bardzo złe i sugeruje błędne zaprojektowanie aplikacji.

ale jak już chcesz to trzeba to robić tak:

  1. <?php
  2.  
  3. $zmienna = array();
  4.  
  5. $zmienna['a'] = 5;
  6. $zmienna['b'] = 2;
  7.  
  8. $eval = <<<'END'
  9.   $zmienna['a'] + $zmienna['b']
  10. END;
  11. eval('echo '.$eval.'; ');


stringu przechowywanego w bazie jako:

Kod
<?php $zmienna['a']-$zmienna['b'] ?>


prosto do eval nie wstawisz bo musisz usunąć znaki początku i końca kodu by zostało tylko:

Kod
$zmienna['a']-$zmienna['b']
Go to the top of the page
+Quote Post
Toskan
post
Post #3





Grupa: Zarejestrowani
Postów: 39
Pomógł: 0
Dołączył: 4.09.2012

Ostrzeżenie: (0%)
-----


Cytat(jaslanin @ 25.10.2012, 18:40:26 ) *
lepiej napisz w nowym wątku z czym masz problem bo takie rozwiązanie jest bardzo złe i sugeruje błędne zaprojektowanie aplikacji.

ale jak już chcesz to trzeba to robić tak:

  1. <?php
  2.  
  3. $zmienna = array();
  4.  
  5. $zmienna['a'] = 5;
  6. $zmienna['b'] = 2;
  7.  
  8. $eval = <<<'END'
  9.   $zmienna['a'] + $zmienna['b']
  10. END;
  11. eval('echo '.$eval.'; ');


stringu przechowywanego w bazie jako:

Kod
<?php $zmienna['a']-$zmienna['b'] ?>


prosto do eval nie wstawisz bo musisz usunąć znaki początku i końca kodu by zostało tylko:

Kod
$zmienna['a']-$zmienna['b']

gdzies juz zakladalem temat do czego mi to ale dodam edycje
hmm nie o to mi chodzi co napisales:)
funkcja eval() ma podobno generowac php z tekstu a to wlasnie jest mi potrzebne bo innego wyjscia nie widze
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 5.10.2025 - 02:54