Witam.
Jestem troche zielony z php więc proszę o wyrozumiałość.
Robię rejestr oparty na mysql i php. Wszystko jest ok. Korzystam z utworzonej sesji w phpbb.
czyli każdy plik zaczynam
$user->session_begin();
I nie ma problemu.
Problem pojawia się kiedy próbuje wysłać dane z innego formularza (zachowując sesję) poprzez:
echo '<form action="rejestrwww\dodaj.php" method="POST">
Tresc zgloszenia:<br />
<input type="text" name="tresc" /><br />
Data wyslania zlecenia:<br />
<input type="text" name="data_w" /><br />
Termin umieszczenia:<br />
<input type="text" name="termin_w" /><br />
<input type="submit" value="save" />
</form>';
Problem w tym że po naciśnięciu submit sesja się ucina tak samo jak w przypadku wykorzystania jakiegoś linku w stylu
<a href=\"test.php?a=del&id={$r['id']}\">Usuń</a>
przechodzi do nowego pliku (gdzie jest session_begin()) przekazuje dane tresc, data itd jednak nie jestem juz w sesji.
aha jeżeli dokonam przekierowania poprzez link w jakimś poście wszystko jest ok.
Jak zrobić aby sesja przeszła na nową stronę.
Aha jak przekazuje dane wyświetlony jest komunikat:
Fatal error: Call to a member function session_begin() on a non-object in /usr/local/www/apache22/data/okbank/phpbb/dodaj.php on line 8
a w linice nr 8 jest session_begin(); czyli po prostu nie widzi tej funkcji.
Problem z zachowaniem sesji przy przekazywaniu danych
Re: Problem z zachowaniem sesji przy przekazywaniu danych
Przejrzyj w jaki sposób budowane są adresy URL w phpBB3 (z funkcją
http://www.phpbb.com/kb/article/phpbb3- ... tegration/ – kod z kroku drugiego może okazać się pomocny.
append_sid). Sesja przekazywana jest w adresie, wnioskuję więc, że tutaj będzie leżeć Twój problem. Co do komunikatu błędu, pewnie nie utworzyłeś obiektu $user, więc nie możesz wykonywać na nim metod (session_begin()).http://www.phpbb.com/kb/article/phpbb3- ... tegration/ – kod z kroku drugiego może okazać się pomocny.
Re: Problem z zachowaniem sesji przy przekazywaniu danych
Dzięki za pomoc. Sprawdzałem czy działa.
W każdym pliku mam:
// Start session
define('IN_PHPBB', true);
$phpbb_root_path = (defined('PHPBB_ROOT_PATH')) ? PHPBB_ROOT_PATH : './';
$phpEx = substr(strrchr(__FILE__, '.'), 1);
include($phpbb_root_path . 'common.' . $phpEx);
// Start session management
$user->session_begin();
$auth->acl($user->data);
$user->setup();
I teraz tak nie ważne czy przenoszę tak jak pisałeś z append_sid czy nie działa pod warunkiem że jest w głównym katalogu phpbb. Natomiast chciałbym aby moja podstronka była w katalogu np rejestrwww gdy tam włożę ten sam plik co w katalogu głównym to wyskakuje błąd o którym pisałem.
echo '<a href="rejestrwww\dodaj.php" width="1" height="1">dodajtest</a>'; - nie działa (nawet z append_sid)
echo '<a href="dodaj.php" width="1" height="1">dodajtest</a>'; - działa
dla pewności
echo '<a href="' . append_sid($phpbb_root_path . 'rejestrwww\dodaj.php?&sid='.$user->session_id) . '" width="1" height="1">dodajtest</a>';
czy tego wysłanego sida musze gdzieś wpakować np gdzieś (strzelam) do $user->session_id?
Czy gdzieś można "autoryzować" jakiś katalog tak aby funkcje były tam dostępne? - niestety jak skopiowałem do katalogu includes to tez nie działa te same błędy. Więc co jest nie tak?
W każdym pliku mam:
// Start session
define('IN_PHPBB', true);
$phpbb_root_path = (defined('PHPBB_ROOT_PATH')) ? PHPBB_ROOT_PATH : './';
$phpEx = substr(strrchr(__FILE__, '.'), 1);
include($phpbb_root_path . 'common.' . $phpEx);
// Start session management
$user->session_begin();
$auth->acl($user->data);
$user->setup();
I teraz tak nie ważne czy przenoszę tak jak pisałeś z append_sid czy nie działa pod warunkiem że jest w głównym katalogu phpbb. Natomiast chciałbym aby moja podstronka była w katalogu np rejestrwww gdy tam włożę ten sam plik co w katalogu głównym to wyskakuje błąd o którym pisałem.
echo '<a href="rejestrwww\dodaj.php" width="1" height="1">dodajtest</a>'; - nie działa (nawet z append_sid)
echo '<a href="dodaj.php" width="1" height="1">dodajtest</a>'; - działa
dla pewności
echo '<a href="' . append_sid($phpbb_root_path . 'rejestrwww\dodaj.php?&sid='.$user->session_id) . '" width="1" height="1">dodajtest</a>';
czy tego wysłanego sida musze gdzieś wpakować np gdzieś (strzelam) do $user->session_id?
Czy gdzieś można "autoryzować" jakiś katalog tak aby funkcje były tam dostępne? - niestety jak skopiowałem do katalogu includes to tez nie działa te same błędy. Więc co jest nie tak?
Re: Problem z zachowaniem sesji przy przekazywaniu danych
Wielkie dzięki za pomoc ale to nie problem ciasteczek. Ciasteczka sprawdziłem i wyglądają ok. Ale problem rozwiązałem. Chyba ostatnio miałem złe dni
Wystarczy sugerować się tym co napisane.
http://www.phpbb.com/kb/article/phpbb3- ... tegration/
problem rozwiązało podanie ścieżki do forum tzn do pliczku common.php itp. on po prostu szukał tego pliczku w katalogu /phpbb/test/ a powinien w /phpbb
oczywiście w eufori sprawdziłem tylko na jednym pliczku czy działa ale to na pewno w tym problem
wielkie dzięki za pomoc bo dzięki twoim sugestiom odkryłem problem.
Wystarczy sugerować się tym co napisane.
http://www.phpbb.com/kb/article/phpbb3- ... tegration/
Kod: Zaznacz cały
define('IN_PHPBB', true);
define('ROOT_PATH', [b]"/usr/local/xxxxxx/apache22/data/xxxxxxx/phpbb"[/b]);
if (!defined('IN_PHPBB') || !defined('ROOT_PATH')) {
exit();
}
$phpEx = "php";
$phpbb_root_path = (defined('PHPBB_ROOT_PATH')) ? PHPBB_ROOT_PATH : ROOT_PATH . '/';
include($phpbb_root_path . 'common.' . $phpEx);
$user->session_begin();
$auth->acl($user->data);oczywiście w eufori sprawdziłem tylko na jednym pliczku czy działa ale to na pewno w tym problem
wielkie dzięki za pomoc bo dzięki twoim sugestiom odkryłem problem.
Ostatnio zmieniony 04 maja 2010, 09:10 przez jaroslw, łącznie zmieniany 1 raz.
Powód: Kod podawaj w znaczniku [code].
Powód: Kod podawaj w znaczniku [code].
Re: Problem z zachowaniem sesji przy przekazywaniu danych
Poniżej zamieszczam pliczek sesja.php który pozwala na odwoływanie się i wielokrotne używanie tego samego pliczku. (zgodnie z tym co powyżej przy podwójnie wywołanym pliku występuje błąd ponownego deklarowania zmiennych (czy coś w tym stylu nie pamiętam już błędu))
Kod: Zaznacz cały
<?php
define('IN_PHPBB', true);
define('ROOT_PATH', "/usr/local/www/apache22/xxx/xxx/phpbb");
if (!defined('IN_PHPBB') || !defined('ROOT_PATH')) {
exit();
}
if (!$phpEx == php)
{
$phpEx = "php";
$phpbb_root_path = (defined('PHPBB_ROOT_PATH')) ? PHPBB_ROOT_PATH : ROOT_PATH . '/';
include($phpbb_root_path . 'common.' . $phpEx);
}
$user->session_begin();
$auth->acl($user->data);
?>