Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP] sesja w bazie
szybki
post
Post #1





Grupa: Zarejestrowani
Postów: 85
Pomógł: 0
Dołączył: 18.06.2014

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


Używam kodu https://github.com/kazitanvirahsan/PHP5.4-D...session_inc.php na PHP 5.4

Dodatkowo w bazie utworzyłem kolumnę z datą dodania ID... Jednak gdy podczepię ten kod i dam
  1. $_SESSION['asda'] = 'xxx';
To nic do bazy nie zostaje zapisane, ale zmienia się data aktualizacji.

Czy w PHP trzeba coś jeszcze ustawić, aby móc zapisywać sesję do bazy?
Go to the top of the page
+Quote Post
nospor
post
Post #2





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Pokaz poprawki jakie zrobiles, bo byc moze namotales cos


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
szybki
post
Post #3





Grupa: Zarejestrowani
Postów: 85
Pomógł: 0
Dołączył: 18.06.2014

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


Bez poprawek też nie działa, sprawdziłem zmienną $data przed zapisaniem do bazy i jest pusta.

  1. public function write($id, $data)
  2. {
  3. var_dump($data); // pusta
  4. $access = time();
  5.  
  6. $stmt = $this->db->pdo()->prepare('REPLACE INTO sessions(id,timestamp,data) VALUES (:id, :timestamp, :data)');
  7.  
  8.  
  9. $row_affected = $stmt->execute(array(':id'=>$id , ':timestamp' => $access, ':data'=>$data));
  10. return $row_affected;
  11. }


Ten post edytował szybki 17.02.2015, 12:37:41
Go to the top of the page
+Quote Post
nospor
post
Post #4





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Temat: Jak poprawnie zada pytanie

Masz tam napisane jak włączyc wyswietlanie bledow. Pewnie masz jakies


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
szybki
post
Post #5





Grupa: Zarejestrowani
Postów: 85
Pomógł: 0
Dołączył: 18.06.2014

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


Obsługa wyświetlania błędów jest włączona. Żadnego nie ma. PHP nie przesyła danych do tej metody poza swoim ID sesji...
Go to the top of the page
+Quote Post
nospor
post
Post #6





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




A pokaz jeszcze swoj kod, jak inicjalizujesz te sesje i jak uzywasz
session_set_save_handler


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
szybki
post
Post #7





Grupa: Zarejestrowani
Postów: 85
Pomógł: 0
Dołączył: 18.06.2014

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


Ok, znalazłem. Problemem była literówka w zmiennej globalnej biggrin.gif Hmm a teraz pytanie odnośnie sesji w bazie. 1 rekord to 1 użytkownik, zakładając że trymam jego login w sesji to jest on zapisany jako json i teraz... Chciałbym tego użytkownika wywalić, aby się wylogował, nie ma sensu kasować sesji dla wszystkich... tylko jak go odszukać w tym json? Czy przeszukiwać bazę czy dodać do niej kolumnę o nazwie/id użytkownika?
Go to the top of the page
+Quote Post
nospor
post
Post #8





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Dodanie ID uzytkownika jako kolejne pole byłoby raczej wskazane


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
szybki
post
Post #9





Grupa: Zarejestrowani
Postów: 85
Pomógł: 0
Dołączył: 18.06.2014

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


Tylko jak to rozwiązać. session start jest tuż po sessionhandling, ID nadawany jest po auth, więc jeśli użytkownik się zaloguje to zrobić update na klucz sesji?
Go to the top of the page
+Quote Post
nospor
post
Post #10





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Tak samo jak dodales pole z czasem, tak samo masz dodac pole z ID uzytkownika.
Zapisujac dane do bazy, pobierasz z $data id uzytkownika i wkladasz tak samo jak wkladales czas.


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
szybki
post
Post #11





Grupa: Zarejestrowani
Postów: 85
Pomógł: 0
Dołączył: 18.06.2014

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


Hmm jednak ten kod nie działa. Już pomijam implementacje u siebie. Jak rozpakuję paczkę z kodem, stworze bazę danych odpalam index a w nim to, tak jak w przykładowym kodzie:

  1. <?php
  2. include_once 'db_session_inc.php';
  3. $_SESSION['name'] = 'My name is Kazi Ahsan.';
  4. $ses_id = session_id();
  5. echo $ses_id;
  6. //session_destroy();
  7. ?>


I to działa, sesja jest zapisywana w bazie... ale, jak już wpisze adres w przeglądarce index.php?cokolwiek=zxc to sesja znika, nie ma żadnych danych.
Go to the top of the page
+Quote Post
nospor
post
Post #12





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Wyswietlanie bledow ma byc ustawione NA SAMYM POCZATKU a nie w srodku.... I masz wlaczyc tez wyswietlanie, atego nie widze. Wszystko jak masz zrobic, masz napisane w linku co ci podalem wczesniej


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
szybki
post
Post #13





Grupa: Zarejestrowani
Postów: 85
Pomógł: 0
Dołączył: 18.06.2014

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


Pisałem już, że kod nie wyświetla żadnych błędów.

  1. <?php
  2. ini_set('display_errors','1');
  3. include_once './class/db_session_inc.php';
  4.  
  5. if(isset($_GET['test']))
  6. {
  7. $_SESSION['cokolwiek'] = 'xxx.';
  8. }
  9. var_dump($_SESSION);
  10. //session_destroy();
  11. ?>


Jak przejdę na stronę index.php?test sesja zapisuje się do bazy i jest wyświetlona w tablicy, jak przejdę na inną, baza jest czyszczona, zostaje sam klucz, a sesja znika.

Albo czy macie może sprawdzone metody trzymania sesji w bazie, jakieś inne klasy w oparciu o PDO?

Ten post edytował szybki 18.02.2015, 12:52:07
Go to the top of the page
+Quote Post
!*!
post
Post #14





Grupa: Zarejestrowani
Postów: 4 298
Pomógł: 447
Dołączył: 16.11.2006

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


Cytat(szybki @ 17.02.2015, 12:36:17 ) *
Bez poprawek też nie działa, sprawdziłem zmienną $data przed zapisaniem do bazy i jest pusta.


Kod działa poprawnie, skoro zmienna jest pusta to ją nadpisujesz.

Cytat(nospor)
Tak samo jak dodales pole z czasem, tak samo masz dodac pole z ID uzytkownika.
Zapisujac dane do bazy, pobierasz z $data id uzytkownika i wkladasz tak samo jak wkladales czas.


To się nie sprawdzi, bo to że tworzysz sesje nie znaczy że jesteś zalogowanym użytkownikiem, więc dodatkowe pole jest zbędę przy null/0. SQL pozwala na wyszukiwanie danych w json.


--------------------
Nie udzielam pomocy poprzez PW i nie mam GG.
Niektóre języki programowania, na przykład C# są znane z niezwykłej przenośności (kompatybilność ze wszystkimi wersjami Visty jest wiele warta).
Go to the top of the page
+Quote Post
nospor
post
Post #15





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Cytat
To się nie sprawdzi, bo to że tworzysz sesje nie znaczy że jesteś zalogowanym użytkownikiem
No i? A co ma do tego brak zalogowania? Jak nie bede zalogowany to bede tam miał właśnie 0. Tak samo jak w json bedzie 0. Wiec sie sprawdzi jak najbardziej ok.


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
!*!
post
Post #16





Grupa: Zarejestrowani
Postów: 4 298
Pomógł: 447
Dołączył: 16.11.2006

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


To wykracza poza zakres logiki tej klasy, która ma obsługiwać sesje, a nie dodatkowe dane o użytkowniku.


--------------------
Nie udzielam pomocy poprzez PW i nie mam GG.
Niektóre języki programowania, na przykład C# są znane z niezwykłej przenośności (kompatybilność ze wszystkimi wersjami Visty jest wiele warta).
Go to the top of the page
+Quote Post
nospor
post
Post #17





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Zawsze logike klasy można rozszerzyć by móc z niej jeszcze lepiej i wydajniej korzystać


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

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 Aktualny czas: 19.08.2025 - 20:38