Zobacz temat
Błąd: Notice: unserialize w submissions.php z katalogu admina
|
|
Wooya |
Dodany dnia 18.03.2005 14:35:36
|
Zaawansowany Postów: 1449 Pomógł: 22 Data rejestracji: 30.01.2005 15:40 |
Spotkał się ktoś z takim blędem, że nie wyświetla zawartości nadesłanego przez uzytkownika materiału? Wsykakuje błąd przy funkcji unserialize(). Oblukałem kod i wszystko wygląda ok.... Hmmmm.... Znam fusiona niemal na wylot, ale tutaj zglupialem... W 4.01 tego nie bylo. Przykładowy listing bledu z php: Edytowane przez Pieka dnia 13.11.2009 18:43:50 ... Pomagam tylko przy najnowszych wersjach PHP-Fusion ... |
|
|
Wścibski Gość |
Dodany dnia 25.11.2024 04:44:35
|
Pan Kontekstualny Postów: n^x Data rejestracji: Zawsze |
|
IP: localhost | |
SebaZ |
Dodany dnia 18.03.2005 15:49:28
|
Zaawansowany Postów: 1598 Pomógł: 2 Data rejestracji: 10.11.2004 22:39 |
a zmieniałeś coś w definicjach i przypisywaniu wysyłanych danych do zmiennych
Zadawanie pytań na forum to nie jest prawo, to jest przywilej, którego każdy może być pozbawiony jeżeli nie będzie umiał z niego korzystać. Nie wymagaj więc natychmiastowej odpowiedzi.
|
|
|
Wooya |
Dodany dnia 19.03.2005 17:07:34
|
Zaawansowany Postów: 1449 Pomógł: 22 Data rejestracji: 30.01.2005 15:40 |
SebaZ napisał(a): a zmieniałeś coś w definicjach i przypisywaniu wysyłanych danych do zmiennych Na poczatku (na potzreby mojej wersji PHP Fusion Multilanguage Support) tak. Ale pozniej sprawdzilem na oryginalnym 5.01 i to samo. Dziwne. Ale coz, bede patrzal dalej... ... Pomagam tylko przy najnowszych wersjach PHP-Fusion ... |
|
|
BlackDog |
Dodany dnia 19.03.2005 19:25:22
|
Początkujący Postów: 116 Data rejestracji: 06.03.2005 17:28 |
więc tak IMHO to jeżeli nie widzisz zadnego błędu w pliku submission.php w katalogu admina, a mimo to błąd wyskakuje, to musi to z czegoś wynikać i musi mieć jakąś przyczynę - wystarczy tylko ją znaleźć. Więc pomyślmy logicznie - ogólnie patrząc, plik submissions.php służy do wyświetlania w panelu admina nadesłanych przez usera materiałów - linków, newsów , artykułów i ewentualnego ich opublikowania lub usunięcia nadesłane przes usera materiały znajdują się w tablicy fusion_submisions. plik submisions.php ma za adanie odczytać te dane z tej tablicy - wszystko spoko - ale pojawia się w nim ta funkcja unserialize() - jak myślisz do czego ona służy? popatrz na przykłądowego newsa o tytule TEST i treści TEST TEST TEST, , jak on wygląda w tablicy fusion_submisions: znaczenia poszczególnych pól bardzo łatwo się domyślić, ale ciekawe jest właśnie to ostatnie pole - dlaczego tak dziwinie wygląda? odpowiedź jest prosta - bo znajduje się w nim coś co zostało poddane serializacji. ale co to mogło być i dlaczego to tak wygląda? nie powiem na 100% bo przyznaję się że nie patrzyłem w kod, ale wygląda na to, ze nadsyłane przez usera newsy i materiały są przechowywane jako obiekty(mam nadzieje że mniej więcej wiesz co to jest obiektowość - a jeżeli nie to powedzmy, ze jest to jakby egzemplarz przedmiotu danej klasy, o cechach opisanych włąśnie w tej klasie - taka jakby struktura danych, przechowująca różne informacje o danym przedmiocie - w tym przypadku o newsie nadesłąnym przez usera) po co się korzysta z klas i obiektów - bo naprawde ułątwiają w niektórych sytuacjach życie . No więc mamy nasz przypadek - user dodał newsa - został on zapisany w specjalnym obiekcie (nie patrzyłem w kod w szczegółu, ale widać co zawiera ten obiekt) . no i teraz mamy problem, jak zapisać taki obiekt w bazie danych - przecież nie ma takiego typu danych i w ogóle ciężko by było zmieścić to wszystko w jednym polu - ale jest na to sposób - a nazywa się... SERIALIZACJA używamy do tego funkcji serialize(), która przekształca nam dany obiekt czy też tablicę w łańcuch znaków - jaki - widzimy na przykładzie taki łąńcuch znaków spokojnie możemy już zapisać sobie w jednym polu jako text. - ale jak to teraz odczytać żeby się spowrotem złożyło do kupu w obiekt czy tablicę? używamu do tego funkcji unserialize() - działąnie odwrotne do serialize. A teraz do rzeczy - moim zdaniem, jeżeli, jak piszesz, w pliku submisions.php nie ma błędu, to poszukaj go w pliku odpowiedzialnym za dodawanie przez usera newsów, linków itd, bo moze tam w wyniku Twojej przeróbki usunałęś gdzieś nieopatrznie jakąś linijkę odpowiedzialną za serializację danych , i teraz nie mozna ich poprawnie zdeserializować - choć to tylko moje przypuszczenia i wcale nie muszą się okazać prawdą. Mozlwie też że w pliku odpowiedzialnym za dodawania przez ludzika newsa mogłeś sobie gdzieś nieopatrznie usunąć w którymś miejscu funkcję addslashes(), która dodaje slashe przed cudzysłowami i teraz przy próbie wyświetlenia tego się kipszczy jak to zwykle przy używaniu cudzysłowów. Jak już powiedziałem , są to tylko takie moje przypuszczenia, bo na tyle dokłądnie nie znam jeszcze php-fusiona zeby mieć pewność co do tego, ale moze moja epopeja pomoze Ci zlokalizować błędzik a innym osobom rozszerzy wiedzę na temat php :) Pozdrawiam -BlackDog PS. to są tylko moje luźne wywody, któe pisałem z głowy i musicie sobie sprawdzić poprawność moich rozważań pod względem budowy fusiona - nie patrzyłem w kod, więc mogą być błedy rzeczowe, ale chodziło mi o samą ideei sposó szukania błedów :) Edytowane przez BlackDog dnia 19.03.2005 19:36:15 |
|
Przejdź do forum: |