![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 2 Pomógł: 0 Dołączył: 25.07.2025 Skąd: Stolica Ostrzeżenie: (0%) ![]() ![]() |
Cześć. Jestem tu nowy. Dotychczas starałem sobie radzić samemu.. Pokrótce opiszę o co chodzi. Z rok temu zrobiłem stronę w XHTML. Umieściłem na serwerze itd. Teraz chciałbym ją trochę zautomatyzować i o co mi chodziło najbardziej, to zmniejszyć zawartość powtarzającego się kodu. Co podstrona kod taki sam lub podobny z różnicą main content. Chciałbym aby stona wczytywała np: menu składające się z jednego skryptu, tak samo nagłówek, czy inne elementy typu licznik odwiedzin czy timer, aby występowały tylko raz jako wczytany skrypt. Zmieniałby się jedynie main content strony. Otóż wszystko już ogarnąłem za pomocą funkcji require. To jednak tyczy się tylko głównej strony która jest jakby stałą strony. Teraz chciałbym aby linkami a href można było wczytywać do tej "stałej strony" main content. To by znacznie przyspieszyło działanie całości i zaoszczędziło miejsce.
W głowie miałem plan aby (tak jak było wcześniej Ahref) menu wczytywało podstrony tak i teraz chciałbym aby a href wczytywało tylko main content do "stałej strony". Mam nadzieje że wyrażam się jasno i nie mieszam za bardzo. ![]() Używałem już metody takiej że: Istnieje strona index.php która otwiera sesję i wymaga plików skryptów podstron typu require "main_content.php" i np: main_menu.php itd wczytywanych jeden po drugim. 1) W znaczniku A herf skryptu main_manu.php wpisywałem ścieżkę np: <a href="index.pl?page=pages/kontakt.php" który powinien odnosić się do zmiennej sesyjnej (a przynajmniej tak mi się zdaje) ![]() Tak to pokrótce miało wyglądać. Jednak nie odnosi to oczekiwanego rezultatu. Jeżeli przypiszę wartości zmiennej $_SESSION['PAGE'] na wstępie strony strona wczytuje podstronę. Jednak klikając w link a href wyrzuca jedynie błąd, że nie może odnaleźć ścieżki do wcześniejszej ustalonej z góry lokacji. Czy ktoś zna temat i mógłby jakoś naprowadzić. pozdr |
|
|
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 6 380 Pomógł: 1116 Dołączył: 30.08.2006 Ostrzeżenie: (0%) ![]() ![]() |
Ale po co ustawiasz te dane w sesji? Inna sprawa że pewnie robisz coś takiego: pobierz zmienną z get i zrób jej require co jest prostą drogą do ataku.
Taki prosty kodzik wygenerowany przez AI.
Ten post edytował viking 26.07.2025, 07:02:38 -------------------- |
|
|
![]()
Post
#3
|
|
![]() Grupa: Zarejestrowani Postów: 403 Pomógł: 72 Dołączył: 15.07.2014 Ostrzeżenie: (0%) ![]() ![]() |
Słowo klucz: routing.
No i template engine, żeby - być może - pozbyć się sporej ilości `require_once`. I $_SESSION nie potrzebujesz do tego. Ten post edytował Salvation 27.07.2025, 15:10:09 |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 1 Pomógł: 0 Dołączył: 29.07.2025 Ostrzeżenie: (0%) ![]() ![]() |
Cześć. Jestem tu nowy. Dotychczas starałem sobie radzić samemu.. Pokrótce opiszę o co chodzi. Z rok temu zrobiłem stronę w XHTML. Umieściłem na serwerze itd. Teraz chciałbym ją trochę zautomatyzować i o co mi chodziło najbardziej, to zmniejszyć zawartość powtarzającego się kodu. Co podstrona kod taki sam lub podobny z różnicą main content. Chciałbym aby stona wczytywała np: menu składające się z jednego skryptu, tak samo nagłówek, czy inne elementy typu licznik odwiedzin czy timer, aby występowały tylko raz jako wczytany skrypt. Zmieniałby się jedynie main content strony. Otóż wszystko już ogarnąłem za pomocą funkcji require. To jednak tyczy się tylko głównej strony która jest jakby stałą strony. Teraz chciałbym aby linkami a href można było wczytywać do tej "stałej strony" main content. To by znacznie przyspieszyło działanie całości i zaoszczędziło miejsce. W głowie miałem plan aby (tak jak było wcześniej Ahref) menu wczytywało podstrony tak i teraz chciałbym aby a href wczytywało tylko main content do "stałej strony". Mam nadzieje że wyrażam się jasno i nie mieszam za bardzo. ![]() Używałem już metody takiej że: Istnieje strona index.php która otwiera sesję i wymaga plików skryptów podstron typu require "main_content.php" i np: main_menu.php itd wczytywanych jeden po drugim. 1) W znaczniku A herf skryptu main_manu.php wpisywałem ścieżkę np: <a href="index.pl?page=pages/kontakt.php" który powinien odnosić się do zmiennej sesyjnej (a przynajmniej tak mi się zdaje) ![]() Tak to pokrótce miało wyglądać. Jednak nie odnosi to oczekiwanego rezultatu. Jeżeli przypiszę wartości zmiennej $_SESSION['PAGE'] na wstępie strony strona wczytuje podstronę. Jeśli szukasz też chwili relaksu po kodowaniu, sprawdź co oferuje mostbet 30 free spins miejsce, gdzie rozrywka spotyka się z emocjami. Jednak klikając w link a href wyrzuca jedynie błąd, że nie może odnaleźć ścieżki do wcześniejszej ustalonej z góry lokacji. Czy ktoś zna temat i mógłby jakoś naprowadzić. pozdr Hej, widzę, że już dostałeś kilka dobrych podpowiedzi, szczególnie o zabezpieczeniach i mapowaniu plików, co jest mega ważne, jeśli chcesz używać require albo include na podstawie danych od użytkownika. Skoro zależy Ci na ładowaniu tylko main content bez przeładowywania całej strony, to warto pójść krok dalej i zainteresować się AJAX-em – to dokładnie to, czego szukasz. Dzięki temu możesz mieć "stałą" stronę z nagłówkiem, menu i stopką, a tylko zawartość sekcji głównej (main_content) będzie się dynamicznie zmieniać po kliknięciu w link. Czyli klik w <a> odpala JavaScript, który robi fetch('pages/kontakt.php'), pobiera HTML i wkleja do odpowiedniego div-a. W skrócie: -struktura PHP zostaje (możesz nadal mieć te same pliki), -index.php ładuje podstawowy layout, -JavaScript odpowiada za "dociąganie" treści do kontenera, -bez przeładowania całej strony, bez bawienia się w $_SESSION. Możesz zacząć od czegoś prostego: Kod // JavaScript document.querySelectorAll('a[data-page]').forEach(link => { link.addEventListener('click', function (e) { e.preventDefault(); const page = this.getAttribute('data-page'); fetch('pages/' + page + '.php') .then(response => response.text()) .then(html => { document.getElementById('main_content').innerHTML = html; }); }); }); A w HTML np.: Kod <a href="#" data-page="kontakt">Kontakt</a> Oczywiście do tego jeszcze kwestia obsługi błędów, zabezpieczenia i ewentualne ładowanie historii w przeglądarce (pushState), ale to już następny krok. Powodzenia! |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 2 Pomógł: 0 Dołączył: 25.07.2025 Skąd: Stolica Ostrzeżenie: (0%) ![]() ![]() |
Super. Dzięki za cenne wskazówki. Jeszcze sporo przede mną z tego, co widzę. Mogę się jedynie pochwalić, że udało mi się osiągnąć cel o którym wspominałem. W kodzie nie korzystam z globalnej GET. Tylko $_SESSION. Wytłumaczenie jak osiągnąłem cel nie jest łatwe, ale postaram się.
Jako łącze użyłem <a href=""></a> z tym, że nie odnosi się on do stricte oczekiwanego elementu, a tylko do elementu, który najpierw inicjuje główny element. Przesyłam w nim informacje które ma wpisać do sekcji <head></head>, czy po wczytaniu strony będzie konieczne wczytanie dodatkowego menu itd. Głównymi informacjami jednak, jakie tam zamieściłem są sekcja PAGE w $_SESSION która informuje interpreter o tym ze należy wczytać funkcją require() wartość z tej zmiennej, ale przede wszystkim wczytać funkcję header("location: index.php") która na ponów ustawia wszystkie wartości przeładowując ponownie stronę już z nowymi wytycznymi. Tak to sobie obczaiłem. Nie wiem jak, ale działa ![]() Dzięki raz jeszcze za cenne wskazówki. ![]() Ten post edytował PeterMartinez 30.07.2025, 22:00:03 |
|
|
![]() ![]() |
![]() |
Aktualny czas: 21.08.2025 - 21:52 |