![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 213 Pomógł: 0 Dołączył: 7.07.2011 Ostrzeżenie: (0%) ![]() ![]() |
Witam!
Czytałem dzisiaj trochę w internecie, że Eval jest niby wolniejszy 20 krotnie niż "create_function", no i wbijam sobie w manuala: http://php.net/manual/en/function.create-function.php Ale nadal nie wiem jak zmienić:
Aby było "create_function". Chyba że źle wyczytałem i nie mogę użyć tej funkcji zamiast Evala? A jeżeli nie, to jaki kod zamiast mojego musiałbym użyć aby to 'działało' ? Pozdrawiam! Ten post edytował Weles 27.08.2012, 17:52:37 |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 2 885 Pomógł: 463 Dołączył: 3.10.2009 Skąd: Wrocław Ostrzeżenie: (0%) ![]() ![]() |
|
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 318 Pomógł: 76 Dołączył: 27.12.2011 Skąd: Dąbrowa Górnicza Ostrzeżenie: (0%) ![]() ![]() |
Wydaję mi się, że zawartość zmiennej $page['tresc_pl'] posiada w sobie jakieś skrypty i dlatego używa on funkcji eval()
|
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 97 Pomógł: 15 Dołączył: 12.08.2012 Skąd: Zabrze Ostrzeżenie: (10%) ![]() ![]() |
|
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 1 447 Pomógł: 191 Dołączył: 26.03.2008 Ostrzeżenie: (0%) ![]() ![]() |
Chyba powinnno być :
a nie tak:
No.. ale mogę się mylić, bo jeszcze nie doszedłem w swoim kursie php jak się rozpoczyna i kończy skrypt php (IMG:style_emoticons/default/tongue.gif) |
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 318 Pomógł: 76 Dołączył: 27.12.2011 Skąd: Dąbrowa Górnicza Ostrzeżenie: (0%) ![]() ![]() |
No.. ale mogę się mylić, bo jeszcze nie doszedłem w swoim kursie php jak się rozpoczyna i kończy skrypt php (IMG:style_emoticons/default/tongue.gif) Widocznie w twoim kursie zapomnieli wspomnieć jak działa funkcja eval(), więc poczytaj o niej w manualu i może domyślisz się dlaczego jest tak a nie inaczej (IMG:style_emoticons/default/smile.gif) Jeśli do eval() potrzebujesz wprowadzić zwykły kod HTML musisz zakończyć skrypt znakami ?>. Przykład: jest niczym innym jak: więc jeśli chcesz wprowadzić HTML co da nam efekt . Ale i tak polecam manual, bo nie sądzę, że zrozumiesz o co mi chodzi (IMG:style_emoticons/default/biggrin.gif) |
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 213 Pomógł: 0 Dołączył: 7.07.2011 Ostrzeżenie: (0%) ![]() ![]() |
W zmiennej w evalu mam skrypty w PHP pobierane z Bazy Danych.
Więc jak to po co mi funkcja Eval? ^.^ Czy jest po prostu jakiś szybszy/lepszy zamiennik tej funkcji? Pozdrawiam! |
|
|
![]()
Post
#8
|
|
Grupa: Zarejestrowani Postów: 97 Pomógł: 15 Dołączył: 12.08.2012 Skąd: Zabrze Ostrzeżenie: (10%) ![]() ![]() |
W zmiennej w evalu mam skrypty w PHP pobierane z Bazy Danych. Więc jak to po co mi funkcja Eval? ^.^ Czy jest po prostu jakiś szybszy/lepszy zamiennik tej funkcji? Pozdrawiam! Lub system szablonów. |
|
|
![]()
Post
#9
|
|
Grupa: Zarejestrowani Postów: 213 Pomógł: 0 Dołączył: 7.07.2011 Ostrzeżenie: (0%) ![]() ![]() |
|
|
|
![]()
Post
#10
|
|
Grupa: Zarejestrowani Postów: 280 Pomógł: 20 Dołączył: 12.12.2007 Skąd: 127.0.0.1 Ostrzeżenie: (0%) ![]() ![]() |
|
|
|
![]()
Post
#11
|
|
Grupa: Zarejestrowani Postów: 2 885 Pomógł: 463 Dołączył: 3.10.2009 Skąd: Wrocław Ostrzeżenie: (0%) ![]() ![]() |
W zmiennej w evalu mam skrypty w PHP pobierane z Bazy Danych. Więc jak to po co mi funkcja Eval? ^.^ Czy jest po prostu jakiś szybszy/lepszy zamiennik tej funkcji? Pozdrawiam! Proponuję zmienić podejście i całkowicie przeprojektować aplikację. Trzymanie skryptów w bazie i wykonywanie ich za pomocą eval to potencjalne zaproszenie do skorzystania z otwartej furtki dla atakującego i proszenie się o problemy. |
|
|
![]()
Post
#12
|
|
Grupa: Zarejestrowani Postów: 213 Pomógł: 0 Dołączył: 7.07.2011 Ostrzeżenie: (0%) ![]() ![]() |
Proponuję zmienić podejście i całkowicie przeprojektować aplikację. Trzymanie skryptów w bazie i wykonywanie ich za pomocą eval to potencjalne zaproszenie do skorzystania z otwartej furtki dla atakującego i proszenie się o problemy. Korzystam z evala 2 lata i od tego czasu jakoś żadnych problemów nie miałem, więc pierdoły że Eval to zło, to czyste bzdury jak dla mnie :f Po prostu trochę jest wolne i to mnie wkurza. A trzymać kod PHP w bazie bardzo lubię, ponieważ sobie napisałem odpowiedni edytorek i mogę w każdej chwili edytować i dodawać nowe podstrony bez edycji czego kolwiek, a gdyby nie kod w bazie, to bym musiał się bawić w fopen i tego typu rzeczy, a tak jest dużo.. hmm.. ciekawiej (IMG:style_emoticons/default/tongue.gif) A skoro jakaś funkcja istnieje (czyli do czytania skryptów PHP z bazy) to jest ona do użytku, co innego gdyby takiej funkcji nie było (IMG:style_emoticons/default/tongue.gif) Pozdrawiam. @2UP: EDIT: Próbowałem chyba na kilkanaście sposobów i cały czas jak nie błąd zewnętrzny serwera, to brak całkowicie tekstu. Ten post edytował Weles 28.08.2012, 18:57:02 |
|
|
![]()
Post
#13
|
|
Grupa: Zarejestrowani Postów: 2 885 Pomógł: 463 Dołączył: 3.10.2009 Skąd: Wrocław Ostrzeżenie: (0%) ![]() ![]() |
Korzystam z evala 2 lata i od tego czasu jakoś żadnych problemów nie miałem, więc pierdoły że Eval to zło, to czyste bzdury jak dla mnie :f Po prostu trochę jest wolne i to mnie wkurza. A trzymać kod PHP w bazie bardzo lubię, ponieważ sobie napisałem odpowiedni edytorek i mogę w każdej chwili edytować i dodawać nowe podstrony bez edycji czego kolwiek, a gdyby nie kod w bazie, to bym musiał się bawić w fopen i tego typu rzeczy, a tak jest dużo.. hmm.. ciekawiej (IMG:style_emoticons/default/tongue.gif) A skoro jakaś funkcja istnieje (czyli do czytania skryptów PHP z bazy) to jest ona do użytku, co innego gdyby takiej funkcji nie było (IMG:style_emoticons/default/tongue.gif) Pozdrawiam. @2UP: EDIT: Próbowałem chyba na kilkanaście sposobów i cały czas jak nie błąd zewnętrzny serwera, to brak całkowicie tekstu. Proponuję poświęcić kilka minut, wklepać w wujka google "php eval vulnerability" i nie zarzucać mi wypisywania bzdur na forum. To, co opisałeś to jest według mnie sztuka dla sztuki, bo nie jest to nic, czego normalnym (każdym) edytorem tekstowym nie można byłoby zrobić (mam na myśli edycję kodu php), a tylko powodujesz same straty: 1) zupełnie zbędny dodatkowy narzut żądań które lecą do bazy 2) spadek wydajności (sam przyznałeś, że eval jest powolny), poza tym po co wyciągać kod php z bazy, jeśli od tego są skrypty php? może w takim razie w ogóle zrezygnujesz ze skryptów php, przecież wszystko można wyciągnąć z bazy i jednym evalem wykonać jeden wielki kod? 3) narażenie aplikacji na potencjalne niebezpieczeństwo (tzw. eval injection, patrz użycie eval) 4) o złych praktykach programistycznych nie wspominając (tak, użycie eval właśnie jest taką złą praktyką) |
|
|
![]()
Post
#14
|
|
Grupa: Zarejestrowani Postów: 97 Pomógł: 15 Dołączył: 12.08.2012 Skąd: Zabrze Ostrzeżenie: (10%) ![]() ![]() |
Dodając do tego, że to wszystko można uzyskać dużo lepiej, buforując dane, funkcje podałem w moim pierwszym poście w tym temacie.
Każde wystąpienie eval() da się zastąpić porządniejszym kodem. A trzymać kod PHP w bazie bardzo lubię, ponieważ sobie napisałem odpowiedni edytorek i mogę w każdej chwili edytować i dodawać nowe podstrony bez edycji czego kolwiek, a gdyby nie kod w bazie, to bym musiał się bawić w fopen i tego typu rzeczy, a tak jest dużo.. hmm.. ciekawiej (IMG:style_emoticons/default/tongue.gif) A skoro jakaś funkcja istnieje (czyli do czytania skryptów PHP z bazy) to jest ona do użytku, co innego gdyby takiej funkcji nie było (IMG:style_emoticons/default/tongue.gif) Ad. 1. Ta, a obrona przed hakerami, którzy uzyskali dostęp do systemu jest taka fascynująca, ciekawa. Ach ta adrenalina! Ad. 2. Było też register_globals, magic quotes, safe mode, mysql_* i wiele innych. To czemu Ci źli ludzie je deprecjonują? Ten post edytował pamil 28.08.2012, 19:59:48 |
|
|
![]()
Post
#15
|
|
Grupa: Zarejestrowani Postów: 590 Pomógł: 107 Dołączył: 25.10.2011 Ostrzeżenie: (0%) ![]() ![]() |
A trzymać kod PHP w bazie bardzo lubię, ponieważ sobie napisałem odpowiedni edytorek i mogę w każdej chwili edytować i dodawać nowe podstrony bez edycji czego kolwiek, a gdyby nie kod w bazie, to bym musiał się bawić w fopen i tego typu rzeczy, a tak jest dużo.. hmm.. ciekawiej (IMG:style_emoticons/default/tongue.gif) No i nie zapominajmy o gigantycznej wartości edukacyjno-poznawczej takiego kodu: mamy tu klasyczny przykład rekurencji: kod PHP służy do oczytywania z bazy danych kodu PHP, za pomocą którego to kodu będziemy odwoływali sie do bazy i zapisywali dane - oczywiście jednocześnie z kodem PHP, którym to kodem będziemy te dane obrabiać... No, muszę powiedzieć, że można byłoby nawet potraktować to jako dość oryginalne podejście do filozofii obiektowej, dziedziczenia, polimorfizmu i takich tam. No i cały PHP Core team w zasadzie już jest bezrobotny - polimorfizm klas PHP w bazie danych SQL (IMG:style_emoticons/default/smile.gif) Czy naprawdę nie przyszło Ci na myśl, że odczytywanie czegokolwiek z bazy i potraktowanie tego eval()-em to niepotrzebne katowanie bazy danych i interpretera PHP? Swoją drogą, zupełnie z ciekawości: jak masz zorganizowaną tę bazę tego Twojego kodu PHP, w sensie takim: ile kodu (najmniej) może zwrócić jedno zapytanie do bazy? Znak? Linię? Funkcję? Moduł? |
|
|
![]()
Post
#16
|
|
Grupa: Moderatorzy Postów: 15 467 Pomógł: 1451 Dołączył: 25.04.2005 Skąd: Szczebrzeszyn/Rzeszów ![]() |
Cytat Korzystam z evala 2 lata i od tego czasu jakoś żadnych problemów nie miałem, więc pierdoły że Eval to zło, to czyste bzdury jak dla mnie :f Po prostu trochę jest wolne i to mnie wkurza. Bo akcelerator nie ma możliwości zoptymalizowania tego kodu. Cytat A skoro jakaś funkcja istnieje (czyli do czytania skryptów PHP z bazy) to jest ona do użytku, co innego gdyby takiej funkcji nie było Wiesz, wprowadzono niedawno goto w PHP, a jakoś nikt normalny z tego nie korzysta. |
|
|
![]()
Post
#17
|
|
Grupa: Zarejestrowani Postów: 1 447 Pomógł: 191 Dołączył: 26.03.2008 Ostrzeżenie: (0%) ![]() ![]() |
Cytat . Ale i tak polecam manual, bo nie sądzę, że zrozumiesz o co mi chodzi hehe, faktycznie brzmi jak wykład z fizyki kwantowej. Tak prawdę mówiąc, nie miałem okazji używać funkcji eval(), więc jak to z tymi tagami jest o tym nie widziałem. Teraz zerknąłem do manuala i już wiem. Na podstwie tego stwierdzam, że moje przypuszczenia miały sens. Bo skoro (tak jak napisałeś) wyświetla to samo co : to wnioskuję, że taki kod :
wyświetla to samo co :
Co jest nieprawidłowe, bo to wyświetli zawartość skryptu (czyli echo "tekst" zamiast text). Przypuszczam, że autor chcę wykonać skrypt, a nie go wyświetlić (inaczej nie używał by evala) Ten post edytował peter13135 29.08.2012, 18:02:26 |
|
|
![]()
Post
#18
|
|
Grupa: Zarejestrowani Postów: 318 Pomógł: 76 Dołączył: 27.12.2011 Skąd: Dąbrowa Górnicza Ostrzeżenie: (0%) ![]() ![]() |
hehe, faktycznie brzmi jak wykład z fizyki kwantowej. Tak prawdę mówiąc, nie miałem okazji używać funkcji eval(), więc jak to z tymi tagami jest o tym nie widziałem. Teraz zerknąłem do manuala i już wiem. Na podstwie tego stwierdzam, że moje przypuszczenia miały sens. Bo skoro (tak jak napisałeś) wyświetla to samo co : to wnioskuję, że taki kod :
wyświetla to samo co :
Co jest nieprawidłowe, bo to wyświetli zawartość skryptu (czyli echo "tekst" zamiast text). Przypuszczam, że autor chcę wykonać skrypt, a nie go wyświetlić (inaczej nie używał by evala) Cóż, faktycznie poraża mnie twoja inteligencja, żeby nie zrozumieć "wykładu z fizyki kwantowej". Ciężko się domyśleć, że skoro użył: to zmienna zawiera jakiś kod HTML oraz skrypty. Może nie jest to dobry sposób, ale jeśli chce to niech używa. Obstawiam że zmienna $page['tresc_pl'] zwraca np: Wykaż trochę wyobraźni zanim zaczniesz prawić morały. |
|
|
![]()
Post
#19
|
|
Grupa: Zarejestrowani Postów: 1 447 Pomógł: 191 Dołączył: 26.03.2008 Ostrzeżenie: (0%) ![]() ![]() |
Akurat w tym temacie na każdym kroku kreuję się na osobę, która dopiero co czepiła się kursu PHP i nie ma ten ten temat większego pojęcia. Na podstawie czego wywnioskowałeś, że prawię morały ?
Jeśli przedszkolak w przedszkolu pyta się przedszkolanki "czemu ten kotek ma futerko w centki, czyżby zmieniał się w tygrysa ?" to znaczy, że prawi morały, czy może po prostu czegoś nie wie i chcę się dowiedzieć ? |
|
|
![]() ![]() |
![]() |
Aktualny czas: 23.08.2025 - 23:45 |