Problem z zachowaniem sesji przy przekazywaniu danych

Forum przeznaczone na rozmowy między autorami modyfikacji i inne pytania związane z poważniejszą ingerencją w kod phpBB 3.0.x.
konsul
Posty: 6
Rejestracja: 08 kwietnia 2010, 12:24

Problem z zachowaniem sesji przy przekazywaniu danych

Post autor: konsul » 09 kwietnia 2010, 06:58

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.

jaroslw
Zasłużony
Posty: 4524
Rejestracja: 10 grudnia 2005, 18:48
Kontakt:

Re: Problem z zachowaniem sesji przy przekazywaniu danych

Post autor: jaroslw » 09 kwietnia 2010, 15:09

Przejrzyj w jaki sposób budowane są adresy URL w phpBB3 (z funkcją 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.
Pobierz styl: we_universalwe_clearblue
Nowości i aktualizacje: FacebookGoogle+Twitter

konsul
Posty: 6
Rejestracja: 08 kwietnia 2010, 12:24

Re: Problem z zachowaniem sesji przy przekazywaniu danych

Post autor: konsul » 12 kwietnia 2010, 10:44

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?

jaroslw
Zasłużony
Posty: 4524
Rejestracja: 10 grudnia 2005, 18:48
Kontakt:

Re: Problem z zachowaniem sesji przy przekazywaniu danych

Post autor: jaroslw » 12 kwietnia 2010, 15:12

Pobierz styl: we_universalwe_clearblue
Nowości i aktualizacje: FacebookGoogle+Twitter

konsul
Posty: 6
Rejestracja: 08 kwietnia 2010, 12:24

Re: Problem z zachowaniem sesji przy przekazywaniu danych

Post autor: konsul » 14 kwietnia 2010, 07:20

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 :D

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);
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 :D

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].

konsul
Posty: 6
Rejestracja: 08 kwietnia 2010, 12:24

Re: Problem z zachowaniem sesji przy przekazywaniu danych

Post autor: konsul » 04 maja 2010, 06:57

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);
?>

Zablokowany

Wróć do „Dla deweloperów”