• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Zmienna $_SESSION

Object Storage Arubacloud
+1 głos
517 wizyt
pytanie zadane 10 listopada 2015 w Offtop przez jaca121212 Nałogowiec (40,760 p.)
Takie mam pytanie odnośnie zmiennej $_SESSION.

Mam na stronie zastosowane $_SESSION i gdy ktoś doda wpis do bazy aktualizuje się  wybrany  rekord czy przy edycji profilu też jest tak że sie aktualizuje w bazie. Problem jest taki że dopiero po wylogowaniu się i zalogowaniu się spowrotem dopiero można ujrzeć zmienionę dane z tabeli. W jaki sposób rozwiązać problem. Dodam że nie używam tzw ciasteczek(cookie)

2 odpowiedzi

+1 głos
odpowiedź 10 listopada 2015 przez writen Nałogowiec (29,060 p.)
Pobierasz wszystkie dane użytkownika do sesji podczas logowania? Nie rób tak. Do sesji zapisuj tylko id użytkownika i według tego id pobieraj dane z bazy tam gdzie tego potrzebujesz.
0 głosów
odpowiedź 10 listopada 2015 przez furas Maniak (53,800 p.)
A nie wystarcza zwykłe przeładowanie strony w przeglądarce aby wygenerowało stronę jeszcze raz z nowymi danymi ?

---

ps. $_SESSION zwykle przechowuje swój numer w ciasteczku.
komentarz 10 listopada 2015 przez jaca121212 Nałogowiec (40,760 p.)

Po odświeżeniu nadal jest to samo.  W pliku zaloguj.php  pobieram tak 

if($resultat = @$polaczenie->query(
 sprintf("SELECT * FROM uzytkownicy WHERE user= '%s' and pass='%s' ",
 mysqli_real_escape_string($polaczenie, $login),
 mysqli_real_escape_string($polaczenie, $hash))))
 {
	 $ilu_userow = $resultat->num_rows;
	 if($ilu_userow>0)
	 {
		 $_SESSION['zalogowany'] = true;
		 
		$wiersz = $resultat->fetch_assoc();
		$_SESSION['id'] = $wiersz['id'];
		
		$_SESSION['user'] = $wiersz['user'];
		$_SESSION['drewno'] = $wiersz['drewno'];
		$_SESSION['kamien'] = $wiersz['kamien'];
		$_SESSION['zboze'] = $wiersz['zboze'];
		$_SESSION['email'] = $wiersz['email'];
		$_SESSION['data'] = $wiersz['data'];
		$_SESSION['punkty'] = $wiersz['punkty'];
		$_SESSION['image'] = $wiersz['image'];
		$_SESSION['plik'] = $wiersz['nazwa_pliku'];
		unset($_SESSION['blad']);
		$resultat->free_result();

 

komentarz 10 listopada 2015 przez writen Nałogowiec (29,060 p.)
No, a po co wszystko wrzucasz do sesji?
komentarz 10 listopada 2015 przez furas Maniak (53,800 p.)
Skoro trzymasz wszystko w sesji i z niej korzystasz to po zmianie w bazie musisz też aktualizować zawartość sesji. To się samo nie zrobi.
komentarz 10 listopada 2015 przez jaca121212 Nałogowiec (40,760 p.)
Wiem tylko jak to zrobic czy jest do tego komenda tak jak np session start czy session destroy
komentarz 10 listopada 2015 przez jaca121212 Nałogowiec (40,760 p.)
No jak mam w osobnym pliku cos do wyświetlenia z bazy to lepiej mi jest wpisać session niż robić od nowa zapytania no jeśli nie rozwiąże problemu przez session to bede musiał to zrobic tak jak ty pisałeś tylko pobrać id a reszte robić zapytania do wyświetlania
komentarz 10 listopada 2015 przez writen Nałogowiec (29,060 p.)
Jeśli potrzebujesz tych danych globalnie, to pobieraj je w głównym kontrolerze. W twoim przypadku w pliku dołączonym do plików, w których potrzebujesz tych danych.
komentarz 10 listopada 2015 przez furas Maniak (53,800 p.)
Nie ma specjalnej funkcji do aktualizacji sesji. Musisz nowe dane wstawiać do sesji tak jak przy logowaniu - każdą potrzebną wartość przypisywać z osobna.

A jeśli musisz robić to w wielu plikach to zrób z tego funkcję i umieść w pliku, który będziesz dołączał.
komentarz 10 listopada 2015 przez jaca121212 Nałogowiec (40,760 p.)

no chciałbym to umieścić w funkcji ale przyznam się że nie wiem jak to zrobić i jak odebrać. 

Próbowałem to zrobić w ten sposób ale nie wiem czy dobrze 

<?php
function pobieranie_danych($dane){
require_once "polaczenie.php";
$polaczenie = new mysqli($host, $db_user, $db_password, $db_name);
if ($polaczenie->connect_errno != 0) {
    echo "Error: " . $polaczenie->connect_errno . "Opis: " . $polaczenie->connect_error;
    die();
	if($resultat = @$polaczenie->query(
 sprintf("SELECT * FROM uzytkownicy WHERE user= '%s' and pass='%s' ",
 mysqli_real_escape_string($polaczenie, $login),
 mysqli_real_escape_string($polaczenie, $hash))))
 {
	 $ilu_userow = $resultat->num_rows;
	 if($ilu_userow>0)
	 {
		 $_SESSION['zalogowany'] = true;
		 
		$wiersz = $resultat->fetch_assoc();
		$_SESSION['id'] = $wiersz['id'];
		
		$_SESSION['user'] = $wiersz['user'];
		$_SESSION['drewno'] = $wiersz['drewno'];
		$_SESSION['kamien'] = $wiersz['kamien'];
		$_SESSION['zboze'] = $wiersz['zboze'];
		$_SESSION['email'] = $wiersz['email'];
		$_SESSION['data'] = $wiersz['data'];
		$_SESSION['punkty'] = $wiersz['punkty'];
		$_SESSION['image'] = $wiersz['image'];
		$_SESSION['plik'] = $wiersz['nazwa_pliku'];
		unset($_SESSION['blad']);
		$resultat->free_result();

}
?>

 

Podobne pytania

0 głosów
1 odpowiedź 194 wizyt
pytanie zadane 2 marca 2020 w PHP przez macieju1 Nowicjusz (160 p.)
0 głosów
0 odpowiedzi 113 wizyt
pytanie zadane 5 stycznia 2020 w PHP przez MAXIM7 Obywatel (1,990 p.)
0 głosów
1 odpowiedź 282 wizyt
pytanie zadane 8 listopada 2023 w PHP przez mrowka Nowicjusz (180 p.)

92,762 zapytań

141,686 odpowiedzi

320,497 komentarzy

62,106 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...