ForumCała strona

Nawigacja

Aktualnie online

Gości online: 24

Użytkowników online: 0

Łącznie użytkowników: 25,393
Najnowszy użytkownik: Assassin

Logowanie

Nazwa użytkownika

Hasło



Zarejestruj się

Odzyskaj hasło

Shoutbox

Musisz zalogować się, aby móc dodać wiadomość.

JazOOn
06.12.2024 23:45:46
Amen

Zbigniew@
17.11.2024 11:33:24
Nie ten grzeszy kto pije, ale ten, kto się nie upije.

JazOOn
16.11.2024 20:46:18
tja

Zbigniew@
15.11.2024 18:58:17
Kto pije, ten nie bije.

JazOOn
31.10.2024 20:49:47
Kto pije?

Pobierz nową wersję
Pobierz podręcznik
Zobacz inne oficjalne Supporty
Statystyki supportu
PHP-Fuson PL na Facebooku

RSS

Polecamy hosting SferaHost.pl

Zobacz temat

Polski Oficjalny Support PHP-Fusion » PHP-Fusion v5.00-v6.01 Support » Błędy i korekty
 Drukuj temat
Błąd: Notice: unserialize w submissions.php z katalogu admina
Wooya
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:
Pobierz kod źródłowy  Rozwiń Kod źródłowy

Edytowane przez Pieka dnia 13.11.2009 18:43:50
... Pomagam tylko przy najnowszych wersjach PHP-Fusion ...
koder_1.png
 
Wścibski Gość
Dodany dnia 23.12.2024 12:27:44
Pan Kontekstualny

Postów: n^x
Data rejestracji: Zawsze

Polecamy hosting SferaHost.pl
IP: localhost  
SebaZ
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
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 ...
koder_1.png
 
BlackDog
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:

Pobierz kod źródłowy  Rozwiń Kod źródłowy


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:
Created by Arox Copyright (C) 2004
Copyright (C) 2004 - 2018 Ekipa PHP-Fusion.pl