Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [JavaScript][PHP]przechowywanie danych o użytkowniku js?
Forum PHP.pl > Forum > Przedszkole
omxd
Witam,
po zalogowaniu użytkownika chciałbym mieć w js pod ręką jakieś informacje o nim.Do tej pory php pobierał te informacje następnie tworzyłem <input type="hidden"/> i tam sobie je magazynowałem (id,ulubione,odwiedzane itd. - bez haseł rzecz jasna).W trakcie pracy użytkownika był one tam na bieżąco aktualizowane.
Jest to bezpieczne czy lepiej za każdym razem wywoływać $.ajax i pobierać te informacje jeszcze raz?

Wpadłem na jeszcze jeden pomysł ,żeby utworzyć globalna tablice:
  1. var $userArray[]= 'pobieram informacje poprzez $.ajax';
  2. $(function() {
  3. ...

Jednak tutaj niestety nie umiem przesłać id użytkownika do argumentu $.ajax( kod wykonywany jest nim strona się wczyta).
Gdy robię to "$(function() {" funkcje nie widzą tej tablicy.

Proszę o jakaś radę.
Turson
Cytat
Do tej pory php pobierał te informacje następnie tworzyłem <input type="hidden"/> i tam sobie je magazynowałem (id,ulubione,odwiedzane itd. - bez haseł rzecz jasna).

A o sesji to słyszał?
To rozwiąże wszystkie twoje problemy
by_ikar
A możesz coś konkretniej przybliżyć, o jakiej sesji piszesz @Turson ?
Daimos
http://php.net/manual/pl/ref.session.php
by_ikar
No spoko, a teraz przeczytaj chociażby tytuł tego tematu i domyśl się jak bardzo to pomaga autorowi tematu.

Co do tematu, najłatwiej ci będzie, jak dane sobie gdzieś w kodzie strony umieścisz jako json. Jeżeli chcesz to zrobić za pomocą ajaxa, to będziesz tworzyć dodatkowy request, który jest ci zbędny, bo i tak, jeżeli ktoś kto te dane będzie chciał podejrzeć, to i tak je podejrzy. Więc po zalogowaniu gdzieś w body mógłbyś wykonać to tak:

  1. <script type="text/javascript">
  2. var userData = <?php echo json_encode($user) ?>;
  3. </script>


Zakładając że twoja tablica wyglądała by mniej więcej tak:

  1. <?php
  2.  
  3. $user = array(
  4. 'id' => 123,
  5. 'name' => 'admin',
  6. 'email' => 'admin@example.com',
  7. 'avatar' => 'someimage.jpg'
  8. );


to twój kod javascript wyglądał by tak:

  1. <script type="text/javascript">
  2. var userData = {id: 123, name: "admin", email: "admin@example.com", avatar: "someimage.jpg"};


Użyć mógłbyś gdzieś w kodzie tego tak:

  1. <script type="text/javascript">
  2. console.log(userData.id, userData.name, userData.email, userData.avatar);
omxd
by_ikar - o coś takiego właśnie mi chodziło obawiałem się tylko czy jest to bezpieczne,ale w sumie to te dane będą dostępne tylko dla poszczególnego użytkownika który wcześniej się zalogował.
dzięki wszystkim za odpowiedzi
pozdrawiam
Turson
@by_ikar
Skoro autor tematu informacje o użytkowniku takie jak id przechowuje w ukrytych inputach, to chyba sesja jest lekarstwem na taki wynalazek
in5ane
Sesje i tak mu się przydadzą. Przy każdym reloadzie będzie pobierał z dane z bazy? Po co? Wystarczy, że istnieje sesja i będzie miał w niej zapisane dane.
phpion
Cytat(omxd @ 18.09.2014, 08:13:25 ) *
by_ikar - o coś takiego właśnie mi chodziło obawiałem się tylko czy jest to bezpieczne,ale w sumie to te dane będą dostępne tylko dla poszczególnego użytkownika który wcześniej się zalogował.

Nie, nie jest to bezpieczne. Te dane wykorzystuj tylko w tych miejscach, które nie są newralgiczne, nie możesz na nich polegać w 100%. Możesz ich użyć np. do wyświetlania informacji, ale gdy już będziesz potrzebował wykorzystać je np. do zapisu danych do bazy pobierz je z sesji (i tak zapisujesz w PHP).
by_ikar
Cytat(Turson @ 18.09.2014, 08:41:13 ) *
@by_ikar
Skoro autor tematu informacje o użytkowniku takie jak id przechowuje w ukrytych inputach, to chyba sesja jest lekarstwem na taki wynalazek

Cytat(in5ane @ 18.09.2014, 08:49:08 ) *
Sesje i tak mu się przydadzą. Przy każdym reloadzie będzie pobierał z dane z bazy? Po co? Wystarczy, że istnieje sesja i będzie miał w niej zapisane dane.


Spoko, tyle że może autor już używa sesji? Pytał się o rozwiązanie po stronie JS. a wy mu daliście rozwiązanie po stronie php, stąd moje pytanie, w jaki sposób ma to w ogóle pomóc autorowi..

@omxd - taki sposób trzymania danych jest niebezpieczny, jeżeli wyświetlasz nieodpowiednie dane (hasło, tokeny, klucze, cokolwiek związanego z bezpieczeństwem). Dane takie jak avatar, nick etc i tak wyświetlasz w jakiś sposób użytkownikowi, więc to jest bez znaczenia czy trzymasz to jawnie w js, czy pobierasz ajaxem, bo i tak te dane można podejrzeć - z drugiej strony i tak te dane raczej się do niczego potencjalnemu włamywaczowi nie przydadzą. Ewentualnie tylko mogą go naprowadzić na nazwy kolumn w jakiejś tabeli, jeżeli takich sam nazw użyjesz jako klucze w jsonie.

Domyślam się że chcesz w ten sposób jakieś informacje typu ustawienia (np zmiana wyglądu) trzymać, więc właśnie ten sposób będzie idealny.
omxd
dziękuję wszystkim za odpowiedzi.
Dane które będę tam przechowywał to id,nick,avatar itd. ,ale jest też string który może być modyfikowany i uaktualniany w bazie danych stąd moje obawy. Potrzebuję tych danych do manipulowania ulubionymi.
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.