Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Konstrukcja cms'a jak rozwiazac
Sh4dow
post 21.02.2004, 00:17:08
Post #1





Grupa: Zarejestrowani
Postów: 569
Pomógł: 0
Dołączył: 17.08.2003
Skąd: Dąbrowa Górnicza

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


nie wiem czy pisac tutaj czy na Pro, ale tutaj wiecej ludzi zaglada :]

Mam problem, poszukuje rozwiazania, nie konkretnych skryptow.
pisze cms'a, niestety nie na obiektach, powodem jest niewystarczajaca wiedza i za malo czasu zeby sie nauczyc.
udalo mi sie zrobic zbiór przydatnych funkcji, konfiguracje, podpiolem smarty aby na koncu wyswietlal wszystko. Ale po drodze okazalo sie ze sposob, buforowania strony, aby ja przeniesc w zmiennej do smarty, okazal sie felerny. Jedynym powodem było to ze przy module logowania, ciastka nie byly zapisywane, jak pozniej przemyslalem, sesje takze nie byly zapisywane.
Przy proceduralnej strukturze skryptu, nie znalazłem sposobu na wykozystanie smarty lub jakiegos systemu szablonow, na ominiecie buforowania wyniku modulow, bo zawsze trzeba je przekazac jako zmienna do systemu szablonow.
Teraz szukam odpowiedzi, jak wykozystac system szablonow, nie kozystajac z bufora, miejac mozliwosc rejestracji sesji i ciastek, miec mozliwosc modolow, nie robiac tego na obiektach. i nie robic systemu szablonow jak w php nuke na funkcjach.
Wszystkie pomysly mile widziane. Moze w miedzy czasie cos naprowadzi mnie na trop dobrej motody, z gory dziekuje za wypowiedzi.

P.S. mam nadzieje ze nie za bardzo namieszalem biggrin.gif


--------------------
Warsztat: Linux: PHP, MySQL, Apache, NetBeans, C++, Qt-Creator
Użytkownik, słowo którego specjaliści IT używają, gdy chcą powiedzieć idiota
Zarządzaj swoim budżetem domowym
Go to the top of the page
+Quote Post
Ace
post 21.02.2004, 12:04:51
Post #2





Grupa: Zarejestrowani
Postów: 216
Pomógł: 0
Dołączył: 9.08.2003
Skąd: Warszawa

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


hm... ja mialem podobny problem. Pisze aktualnie CMS'a obiektowo, czyli jedna klasa główna [ silnik ] a reszta jako moduły, tylko narazie nie wiem za bardzo jak mogl bym zrobic includowanie modulow automatycznie - czyli jak wrzuce do katalogu module/ plik mod.news.php to bede mogl urzywac modulu news, ale niewazne, jakos sobie poradze z tym. Mialem problem z tworzeniem zmiennych w sesji w obiekcie, ale rozwiazalem ten problem troche inaczej. Pewnie sa latwiejsze sposoby, ale ... napisalem klase ktora np: po zalogowaniu sie na strone - w obiekcie silnik, to dodaje mi wpis do bazy danych, w obiekcie jest wtedy zmienna pod postacia $this->username [ czyli nazwa urzytkownika ], a poza obiektem juz w index.php urzywam
[php:1:4fe36a64b4]<?php
$silnik = new silnik($db);
if ( $silnik->username )
$smarty->assign('USERNAME',$silnik->username);
?>[/php:1:4fe36a64b4]

pewnie da sie to zrobic jakos latwiej, ale ja nie potrafilem i tak ominolem ta bariere. Teraz sie mecze z zaprojektowaniem modulow, lecz wczesniej jeszcze panel konfiguracyjny zostaje do napisania i zaprojektowania. Ciezka sprawa ten CMS.
Go to the top of the page
+Quote Post
Sh4dow
post 21.02.2004, 13:08:17
Post #3





Grupa: Zarejestrowani
Postów: 569
Pomógł: 0
Dołączył: 17.08.2003
Skąd: Dąbrowa Górnicza

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


właśnie o to chodzi ze nie dam razy napisać slinika w obiektach. Jesli chodzi o to jak zrobi moduły, administracje, to nie ma problemu, ale wyswietlanie komplikuje mi wszystko. Chcialbym pozostac przy smarty, lub jakims innym sysemie szablonow, z oczywistych powodów wygodu tworzenia owych layoutów. Ale z tego co na razie mysle to czeka mnie porazka w tym momencie.
Chyba ze ktoś mnie poratuje jakimś rozwiazaniem biggrin.gif


--------------------
Warsztat: Linux: PHP, MySQL, Apache, NetBeans, C++, Qt-Creator
Użytkownik, słowo którego specjaliści IT używają, gdy chcą powiedzieć idiota
Zarządzaj swoim budżetem domowym
Go to the top of the page
+Quote Post
Ace
post 21.02.2004, 16:46:03
Post #4





Grupa: Zarejestrowani
Postów: 216
Pomógł: 0
Dołączył: 9.08.2003
Skąd: Warszawa

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


hm.. faktycznie, na obiektach troche latwiej napisac silnik... wiec moze sproboj tak... jak chcesz sprawdzic czy urzytkownik jest zarejestrowany to zrob baze danych
id|sid|login|time
gdzie :
sid = session_id
login = nazwa urzytkownika
time = czas zalogowania utworzony np : time()

a potem robisz funkcje ktora sprawdza czy w bazie danych jest taki wpis tzn:
[sql:1:09f876d845]
SELECT login FROM urzytkownicy WHERE sid="$session_id"
[/sql:1:09f876d845]
gdzie $session_id musi byc identyfikatorem sesji urzytkownika...
i masz wtedy login urzytkownika ktory zarejestrowales inna funkcja wczesniej w trakcie logowania...

to jest praktycznie to co ja napisalem w poprzednim poscie, ale przerobione na funkcje... musisz jeszcze za kazdym otworzeniem strony sprawdzic czy urzytkownik z dana sesja istnieje, jak nie to tworzysz wpis, jak istnieje to zmieniasz time... i funkcje czyszczaca baze danych piszesz, zeby nie zostawiac smieci.. sprobuj w ten sposob
Go to the top of the page
+Quote Post
Sh4dow
post 21.02.2004, 19:10:27
Post #5





Grupa: Zarejestrowani
Postów: 569
Pomógł: 0
Dołączył: 17.08.2003
Skąd: Dąbrowa Górnicza

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


ace zrobilem obejscie chyba mojego problemu, lecz przez to tworzenie modolow bedzie duzo trudniejsze, a raczej bardziej skomplikowane. Poprostu oddziele warstwe wyswietlania od warstwy rejestracji sesji, tworzenia ciastek i wszystkiego co moze byc pochloniete i nie oddane przez bufor.
modul bedzie skladac sie z plikow:
index.php - wyswietlanie modulu
admin.php - panel administracyjny
pre_index.php - funckje do wykonania przed wyswietleniem modulu
pre_admin.php - funkcje do wykonania przed wyswietleniem panelu administracyjnego

tutaj teraz trzeba uwarzac, bo odpowiedznie pary plików (index pre_index oraz admin pre_admin) nie kozystaja z siebie nawzajem ale musza sie uzupelniac. to takie moje rozwiazanie. Nastepne bedzie napisaniem nowego silnika na obiektach biggrin.gif


--------------------
Warsztat: Linux: PHP, MySQL, Apache, NetBeans, C++, Qt-Creator
Użytkownik, słowo którego specjaliści IT używają, gdy chcą powiedzieć idiota
Zarządzaj swoim budżetem domowym
Go to the top of the page
+Quote Post
seaquest
post 21.02.2004, 19:50:19
Post #6





Grupa: Przyjaciele php.pl
Postów: 790
Pomógł: 7
Dołączył: 6.02.2003
Skąd: Polska

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


a ja zrobilbym to tak:

[php:1:9fddb35bc3]<?php
// kod php strony
ob_start();
include("/modules/news.php");
$content = ob_get_clean();
// dalsza czesc strony
$smarty->assign("CONTENT",$content);
?>[/php:1:9fddb35bc3]

moze to zadziala
Go to the top of the page
+Quote Post
Sh4dow
post 21.02.2004, 20:11:26
Post #7





Grupa: Zarejestrowani
Postów: 569
Pomógł: 0
Dołączył: 17.08.2003
Skąd: Dąbrowa Górnicza

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


seaquest właśnie dlatego musialem zrobic podzial. mialem prawie tak samo. Sproboj w includowanym pliku dodac sobie funkcje setcookie i zobacz czy utworzylo ci sie ciastko z watoscia. gdyby nie to to bym pozostawil to tak jak mialem


--------------------
Warsztat: Linux: PHP, MySQL, Apache, NetBeans, C++, Qt-Creator
Użytkownik, słowo którego specjaliści IT używają, gdy chcą powiedzieć idiota
Zarządzaj swoim budżetem domowym
Go to the top of the page
+Quote Post
seaquest
post 22.02.2004, 09:56:00
Post #8





Grupa: Przyjaciele php.pl
Postów: 790
Pomógł: 7
Dołączył: 6.02.2003
Skąd: Polska

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


No mi się tworzy, bo po prostu niczego wcześniej nie wyświetlam. Wszystko co ma zobaczyć user jest najpierw zbierane przez klasę Template (mojej własnej roboty) i wyświetlane dopiero na samym końcu po wykonaniu WSZYSTKICH operacji.
Go to the top of the page
+Quote Post
Cudi
post 22.02.2004, 13:36:23
Post #9


Administrator planeta/IRC


Grupa: Przyjaciele php.pl
Postów: 385
Pomógł: 0
Dołączył: 19.04.2003
Skąd: Zabrze

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


A ja pozwalam modułowi korzystać z systemu szablonów, tak więc jedyne echo pojawia sie w metodzie print_output() klasy template winksmiley.jpg Na początek robie podstawowy szablon, page.tpl, i w nim tylko includuje header i footer jeśli dyrektywa standalone nie jest ustawiona na 1 a między nimi szablon modułu. Nazwa pliku nie jest określona, ponieważ w szablnie odwołuje sie do plików przez handlery, a ich ustawieniam zajmuje sie już silnik. Co dzieki temu zyskuje? Mam bardzo dużą dowolność, bo w momencie kiedy wykonuje sie kod modułu jeszcze nic nie zostało wyświetlone, więc moge ingerować w ustawione wcześniej zmienne szablonów, moge pozbyć sie nagłowka i stopki jeśli zajdzie taka potrzeba itd. I chyba o to chodzi. Po wykonaniu kodu modułu ustawiane są jeszcze zmienne szablonu których moduł nie powinien zmieniać, leci sobie parse i print_output i strona wygenerowana smile.gif


--------------------
"Programmers are in a race with the Universe to create bigger and better idiot-proof programs, while the Universe is trying to create bigger and better idiots. So far the Universe is winning."
Cudi's devBlog
Go to the top of the page
+Quote Post
seaquest
post 22.02.2004, 15:36:01
Post #10





Grupa: Przyjaciele php.pl
Postów: 790
Pomógł: 7
Dołączył: 6.02.2003
Skąd: Polska

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


No czyli, ze cookies powinny ci działać.... bo ja mam dokładnie tak samo i wydaje mi się, że działają. A poza tym ja mam też klasę Cookie i jej metodę Set. Ona sprawdza czy headery zostały już wysłane. Jak nie, to ustawia cookie za pomocą php'a, a w przeciwnym wypadku za pomocą JS.
Go to the top of the page
+Quote Post

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

 



RSS Wersja Lo-Fi Aktualny czas: 15.06.2024 - 12:24