Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [php] Problem z funkcją eval()
Jarod
post
Post #1





Grupa: Zarejestrowani
Postów: 1 190
Pomógł: 27
Dołączył: 23.04.2005

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


Mam dwa pliki:

data.class.php
  1. <?php
  2.  
  3. class Data
  4. {
  5. public $sMessage;
  6. private $sSecret;
  7.  
  8. public function __construct($sInput)
  9. {
  10. echo '<br/><br/><b>Odpaliłem konstruktor klasy Data()...</b>';
  11. $this->sMessage = $sInput;
  12. }
  13.  
  14. public function setSecret()
  15. {
  16. $this->sSecret = md5($this->sMessage);
  17. }
  18.  
  19. public function getSecret()
  20. {
  21. return $this->sSecret;
  22. }
  23.  
  24. public function getMessage()
  25. {
  26. return $this->sMessage;
  27. }
  28. }
  29.  
  30. $oData = new Data('Tajny string...');
  31. $oData->setSecret();
  32. echo '<br/>Message: ' . $oData->getMessage();
  33. echo '<br/>Secret: ' . $oData->getSecret()
  34.  
  35. ?>


oraz index.php
  1. <?php
  2.  
  3. // data.class.php
  4. if (file_exists('data.class.php'))
  5. {
  6. if ($rHandle = @fopen('data.class.php', 'r'))
  7. {
  8. if (flock($rHandle, LOCK_SH))
  9. {
  10. $sFile = htmlspecialchars(fread($rHandle, filesize('data.class.php')));
  11. flock($rHandle, LOCK_UN);
  12. }
  13.  
  14. fclose($rHandle);
  15. }
  16. }
  17.  
  18. $sText = $sFile;
  19.  
  20. // base64_encode()
  21. $sText = base64_encode($sText);
  22. $sText = base64_decode($sText);
  23.  
  24.  
  25. eval($sText);
  26.  
  27.  
  28. ?>


Wywołując funkcję eval() dostaję błąd. W którym miejscu popełniam błąd?
Natomiast coś takiego
  1. <?php
  2. eval("echo \"a\";");
  3. ?>
działa bez problemu..
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
nospor
post
Post #2





Grupa: Moderatorzy
Postów: 36 559
Pomógł: 6315
Dołączył: 27.12.2004




Cytat
Uważałem, że osoba próbująca pomóc sprawdzi kod, który podałem.
Ale po co ktos ma sprawdzac wlasnorecznie twoj kod i marnowac przy tym swoj czas, skoro wystarczy ze podasz komunikat bledu i juz wszystko jasne?

A teraz do rzeczy: wywal te htmlspecialchars() Przeciez to ci zamienia takie rzeczy jak > na encje, ktore sa bledem dla parsera php.

Cytat
Wiem o tym doskonale, ale chcę trochę utrudnić a na szybkości dużo nie stracę.
Przy skrypcie typu Hello World z dwoma odwiedzinami dziennie to moze i faktyczne strata nie bedzie duza (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg)
Go to the top of the page
+Quote Post
Jarod
post
Post #3





Grupa: Zarejestrowani
Postów: 1 190
Pomógł: 27
Dołączył: 23.04.2005

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


Cytat(nospor @ 21.02.2008, 10:12:58 ) *
A teraz do rzeczy: wywal te htmlspecialchars() Przeciez to ci zamienia takie rzeczy jak > na encje, ktore sa bledem dla parsera php.

Wywaliłem, ze skryptu data.class.php usunąłem <?php i ?> i otrzymuję błąd:
Cytat
"Parse error: parse error, unexpected $end, expecting ',' or ';' in D:\WWW\X\index.php(49) : eval()'d code on line 32"


Jako ciekawostkę podam, że jak wklepiesz na stronie http://www.php-einfach.de/php_code_verschluesseln.php
mój kod i skopiujesz wygenerowanego evala to także nie działa.

Cytat(nospor @ 21.02.2008, 10:12:58 ) *
Przy skrypcie typu Hello World z dwoma odwiedzinami dziennie to moze i faktyczne strata nie bedzie duza (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg)

Chcę sprawdzić jak to wpłynie na wydajność bo nigdy nie sprawdzałem. Liczę się ze spadkiem wydajności. Jestem ciekawy jak wypadają pod tym względem rozwiązania takie jak ioncube.

pzdr
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: 3.10.2025 - 01:01