Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [MySQL][PHP]Sesje w PHP - zapisywanie i pobieranie
Syene
post 2.01.2021, 13:24:48
Post #1





Grupa: Zarejestrowani
Postów: 4
Pomógł: 0
Dołączył: 2.01.2021

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


Cześć, tworzę aplikację mobilną w androdzie, połączona z bazą mysql, a skrypty połączenia/edycji/wyświetlania są po stronie serwera w PHP.

Potrzebuję w zakładce użytkowników wyświetlić obecnie zalogowanego użytkownika więc chyba najprościej zrobić to na zasadzie sesji.
Utworzyłem sesję podczas logowania, wygląda to następująco:

  1. require_once 'connect.php';
  2. if((isset($_POST['username'])) && (isset($_POST['password']))) {
  3.  
  4. $username = $_POST['username'];
  5. $password = $_POST['password'];
  6. $password = md5($password);
  7.  
  8. $sql = "SELECT * FROM users WHERE username = '$username' AND password = '$password'";
  9. $result = mysqli_query($conn, $sql);
  10. $row = mysqli_fetch_assoc($result);
  11. if (mysqli_num_rows($result) == 1) {
  12. $_SESSION['id_user'] = $row['id'];

Na początku kodu rozpocząłem **session_start();** i chce dodać id obecnie logowanego użytkownika więc zrobiłem **$_SESSION['id_user'] = $row['id'];**

Po czym chce tego użytkownika wyświetlić w programie, dlatego korzystam z kodu:
  1. $sql = "SELECT * FROM users WHERE id = $_SESSION['id_user']";
  2. $result = mysqli_query($conn, $sql);
  3. $users = array();


W momencie, gdy po **WHERE** ustawiam ID na sztywno to wyświetla prawidłowo, jednak z sesji nie pobiera.
Kody logowania i wyświetlania znajdują się w innych plikach, ale w tym samym folderze.
Proszę o pomoc, gdzie robię błąd?
Go to the top of the page
+Quote Post
dublinka
post 2.01.2021, 13:38:11
Post #2





Grupa: Zarejestrowani
Postów: 594
Pomógł: 66
Dołączył: 22.02.2008
Skąd: Dublin

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


Sprawdzales czy istnieje ta sesja i jaka ma wartosc?


--------------------
Go to the top of the page
+Quote Post
viking
post 2.01.2021, 13:49:58
Post #3





Grupa: Zarejestrowani
Postów: 6 365
Pomógł: 1114
Dołączył: 30.08.2006

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


Ale masz aplikację w javie która ma niby korzystać z sesji php? zapomnij o tym. Poczytaj o tokenach jwt.


--------------------
Go to the top of the page
+Quote Post
Syene
post 2.01.2021, 13:56:45
Post #4





Grupa: Zarejestrowani
Postów: 4
Pomógł: 0
Dołączył: 2.01.2021

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


Dodałem
  1. if(!isset($_SESSION['id_user'])){
  2. echo "session not set";
  3. }

w pliku wyszukiwania, ale wtedy sypie błędem i nic nie chce pokazać, nawet gdy SELECT jest ustawiony na sztywno
Go to the top of the page
+Quote Post
dublinka
post 2.01.2021, 13:59:20
Post #5





Grupa: Zarejestrowani
Postów: 594
Pomógł: 66
Dołączył: 22.02.2008
Skąd: Dublin

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


Daj
  1. print_r($_SESSION);



--------------------
Go to the top of the page
+Quote Post
Syene
post 2.01.2021, 14:15:14
Post #6





Grupa: Zarejestrowani
Postów: 4
Pomógł: 0
Dołączył: 2.01.2021

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


Sypie błędem. Błąd jest taki sam za każdym razem. Ze względu na to, że ja mam kodowanie w jsonie po stronie androida to błąd mam praktycznie zawsze ten sam:
"Value of type java.lang.String cannot be converted to JSONArray" jednak po stronie JAVY na 100% jest wszystko prawidłowo.
Podam w select id na sztywno - wszystko działa bez zarzutu. Nawet sypał, gdy miałem session_start(); w tym pliku na samym początku.





Cytat(viking @ 2.01.2021, 13:49:58 ) *
Ale masz aplikację w javie która ma niby korzystać z sesji php? zapomnij o tym. Poczytaj o tokenach jwt.

Aplikacja wyświetla to, co ja jej wyszukam przy pomocy PHP. Jeśli ja na sztywno przypisze ID w
  1. $sql = "SELECT * FROM users WHERE id = 69";

To aplikacja bez problemu wyświetli mi dane użytkownika o id 69 więc aplikacja sama w sobie nie bierze udziału w sesjach.

W momencie wejścia w zakładkę użytkownika, aplikacja wysyła żądanie do skryptu PHP i jest to w 100% sprawne, ale jak zrobić, by pobierał id z zalogowanego użytkownika? Logowanie też opiera się na PHP

Ten post edytował Syene 2.01.2021, 14:17:22
Go to the top of the page
+Quote Post
viking
post 2.01.2021, 14:19:58
Post #7





Grupa: Zarejestrowani
Postów: 6 365
Pomógł: 1114
Dołączył: 30.08.2006

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


Sesja w php działa na zasadzie trzymania id w cookie lub przekazywania id sesji w adresie. W jaki sposób informujesz php ze strony javy że jest to konkretne id sesji?


--------------------
Go to the top of the page
+Quote Post
Syene
post 2.01.2021, 14:24:28
Post #8





Grupa: Zarejestrowani
Postów: 4
Pomógł: 0
Dołączył: 2.01.2021

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


Ze strony javy nie informuje w żaden sposób. Raczkuje w tym temacie dlatego 'w przedszkolu' napisałem biggrin.gif

Sądziłem, że przy pomocy 'include login.php' umieszczonego w pliku PHP wyszukiwania on wie, że sesja z tamtego pliku ma zostać pobrana i że nie potrzebuje dodatkowych kodów w javie, skoro tam jest tylko wyświetlanie, a samo wysyłanie zapytania do bazy i sesje dzieją się w PHP

Ten post edytował Syene 2.01.2021, 14:25:57
Go to the top of the page
+Quote Post
viking
post 2.01.2021, 14:47:47
Post #9





Grupa: Zarejestrowani
Postów: 6 365
Pomógł: 1114
Dołączył: 30.08.2006

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


Sesja musi być jakoś powiązana między klientami a php. Dlatego najczęściej używa się tokenów jwt lub innych bearer tokenów wysłanych z nagłówkami. W najprostszej postaci możesz po zalogowaniu wygenerować hash który sobie zapiszesz po stronie aplikacji.


--------------------
Go to the top of the page
+Quote Post
sazian
post 2.01.2021, 14:49:28
Post #10





Grupa: Zarejestrowani
Postów: 1 045
Pomógł: 141
Dołączył: 19.09.2006
Skąd: B-tów

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


Nie wiem jak to robisz po stronie JAVY ale prawdopodobnie najłatwiejszą opcją będzie dodanie obsługi ciasteczek.
Możesz tez zrobić własną obsługę sesji https://www.php.net/manual/en/session.customhandler.php i uwierzytelniać się/identyfikować inną metodą niż ciasteczko.
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 Wersja Lo-Fi Aktualny czas: 27.04.2024 - 21:42