Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php] integracja strony z forum - problem
Forum PHP.pl > Forum > Przedszkole
GreenGo
Witam.
Zacząłem integorować swoją strone z forum php by Przemo wedłóg tego arta - KLIK. No i udało mi się zrobić logowanie na stronie głównej. Nie stety jak chce za pomocą
  1. <?php
  2. if( $userdata['session_logged_in'] )
  3.  
  4. {
  5. ?>

ograniczyć dostęp do komentowania aktykułów w pliku który jest includowany to to mi pokazuje, że jestem niezalogowany a w żeczywistości jestem. Dlaczego moje logowanie nie "przenosi się" do includowanego pliku ?
Na początku tego pliku mam oczywiście
  1. <?php
  2. define('IN_PHPBB', true);
  3. $phpbb_root_path = './forum/';
  4. include($phpbb_root_path . 'extension.inc');
  5. include($phpbb_root_path . 'common.'.$phpEx);
  6. $userdata = session_pagestart($user_ip, PAGE_INDEX, $session_length);
  7. init_userprefs($userdata);
  8. ?>

tak jak jest powiedziane w tym artykule.

Pozdrawiam i z góry dzięki za pomoc smile.gif
lukir
Jeżeli funkcja, z której korzystasz - session_pagestart(), to najprawdopodobniej w tej funkcji występuje session_start" title="Zobacz w manualu php" target="_manual i tam też jest pobierana informacja z sesji o zalogowanym użytkowniku. Ponieważ (jeśli dobrze zrozumiałem) przed tą funkcją rozpocząłeś includowanie plików, które nie podlegają sesji i zmienna $userdata['session_logged_in'] nie istnieje, zwraca więc wartość false w includowanym pliku i czapa... smile.gif

Ale mogłem Ciebie nie zrozumieć...
-> wszystko zależy od tego, w którym miejscu kodu rozpocząłeś include()...
GreenGo
Includowany plik jest już po kodzie
  1. <?php
  2. define('IN_PHPBB', true);
  3. $phpbb_root_path = './forum/';
  4. include($phpbb_root_path . 'extension.inc');
  5. include($phpbb_root_path . 'common.'.$phpEx);
  6. $userdata = session_pagestart($user_ip, PAGE_INDEX, $session_length);
  7. init_userprefs($userdata);
  8. ?>


Najdziwniejsze jest to, że gdy includuje plik w pliku index.php w który na początku jest w.w kod to moge ograniczyć wszystko dla zalogowany/niezalogowany natomiast jak includuje plik w liku modules.php w którym również jest w.w kod to już to nie działa :/ oba pliki (index.php i modules.php) znajdują się w głównym folderze strony.
lukir
A możesz podać kod tej funkcji session_pagestart()? Albo dokładny kod dwóch omawianych plików?

Bo w innym razie trudno ustalić przyczynę błędu...
GreenGo
Ok odnawiam temat bo rozwiązanie jest mi pilnie potrzebne. Więc po kolei.
Na początku głównego index.php wpisuje kod dzięki któremu moge być zalogowany jako user forum na mojej stronie.
  1. <?php
  2. define('IN_PHPBB', true);
  3. $phpbb_root_path = '../forum/';
  4. $page_path = '../';
  5. include($phpbb_root_path . 'extension.inc');
  6. include($phpbb_root_path . 'common.'.$phpEx);
  7. $userdata = session_pagestart($user_ip, PAGE_INDEX, $session_length);
  8. init_userprefs($userdata);
  9. // zmienne odp. za logowanie
  10. $scfile=explode("/",$_SERVER['PHP_SELF']);
  11. $redir = "../";
  12. ?>


W części body includuje:
  1. <?
  2.  include 'themes/theme2/header.php';
  3.  include 'modules/news/index.php';
  4.  include 'themes/theme2/right.php';
  5.  include 'themes/theme2/foother.php';
  6.  ?>

Oczywiście wszystko oprócz modules/news/index.php odpowiada za theme strony.
W includowanym index.php wyświetlam ostatnio dodane newsy. Oczywiście klikając na nazwe któregoś przechodzi się do czytaj więcej a odpowiadają za to 2 pliki. Jeden to modules.php w którym sprawdzam jaki plik mam includować. Wygląda to tak:
  1. <?php
  2. if ($name == news AND !empty($id)) {
  3.  include "modules/$name/more.php?id=$id";
  4. }
  5. ?>

a drugi plik to modules/news/more.php który wyświetla pozostałą zawartość newsa o danym ID oraz możliwość komentowania.

No więc przykłądowo otworzyłem news o id 59 który się includował w modules.php ( na początku modules.php również mam kod taki jak na początku głównego index.php )

No i teraz jak dam dla próby w modules.php warunek zalogowania:
  1. <?php
  2. if( $userdata['session_logged_in'] )
  3.  
  4. {
  5. ?>

to wszystko działa - pokazuje się jak jestem zalogowany i nie pokazuje jak nie jestem.
Niestety jeśli takowy warunek dam w modules/news/more.php który jest includowany w modules.php to już nie działa. Co dziwniejsze jeśli dam warunek zalogowania w modules/news/index.php a w modules.php includuje go na próbe to również wszystko działa. To wygląda tak jagby tylko w more.php nie działało :/

Nie wiem czy to majkieś znaczenie ale w more.php warunek logowania daje w pętli while. Nie wiem również dla czego ale aby includować config.php w modules/news/index.phpwystarczy adres config.php natomiast do includowania tego pliku w modules/news/more.php musze już wpisywać adres ../../config.php

Eh troche zagmatwane to. Jeśli mam zamieścić cały kod jakiegoś pliku to powiedzcie.

Z góry dziękuje za pomoc smile.gif
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.