Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [php] Sesje pomoc
maciasgta
post 12.01.2008, 20:52:17
Post #1





Grupa: Zarejestrowani
Postów: 77
Pomógł: 0
Dołączył: 12.01.2008

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


Witam

Panowie mam problem, logowanie mam, ale chciałbym zrobić sesje aby jak ktoś się zaloguje na konto, można było wyciągnąć jego inne dane z tabeli.

Jeżeli coś źle napisałem to proszę powiedzieć spróbuje wytłumaczyć o co mi chodzi.

Pozdrawiam i z góry dziekuje za pomoc

Ten post edytował JaRoPHP 14.01.2008, 17:34:30
Powód edycji: Dodanie tagu do tamatu.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 10)
RubiX
post 12.01.2008, 20:58:34
Post #2





Grupa: Zarejestrowani
Postów: 162
Pomógł: 6
Dołączył: 14.02.2007
Skąd: Poznań

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


Poprostu ustalasz sesje np :

Na początku każdego dokumentu wpisujesz :

  1. <?php
  2. ?>


Następnie:

Jak ktoś sie zaloguje:
  1. <?php
  2. $_SESSION['zalogowany'] = True;
  3. ?>


Jeżeli chcesz ustalić dostep do strony tylk odla zalogowanych :

  1. <?php
  2. if ($_SESSION['zalogowany']==True) {
  3. //tresc strony
  4. } else {
  5. echo "dostep tylko dla zalogowanych";
  6. }
  7. ?>


Sesje traktuj jak zmienne smile.gif

Np:
  1. <?php
  2. //wyciag z mysql
  3. //$dane = mysql_fetch_array($wyciag);
  4. $_SESSION['login'] = $dane['login'];
  5. ?>


I później na stronie możesz uzywać

  1. <?php
  2. echo "Witaj ".$_SESSION['login']." !";
  3. ?>


Sesje traktuj jak zmienne tylko jak raz je przypiszesz to są ważne aż do zamknięcia przeglądarki lub ich "utracenia"
Możesz je cochwile nadpisywać ale nie musisz deklarować 2 razy tej samej zmiennej.

No i Twoje pytanie : po ustaleniu $_SESSION['login'] - login zalogowanego w stronie tylko dajesz kod :

  1. <?php
  2. $wynik = mysql_query("SELECT * FROM uzytkownicy WHERE login='".$_SESSION['login']."'");
  3. ?>


Ten post edytował RubiX 12.01.2008, 21:01:49


--------------------
===================================

\o/ torebki
Go to the top of the page
+Quote Post
Maxik
post 12.01.2008, 20:58:52
Post #3





Grupa: Zarejestrowani
Postów: 726
Pomógł: 129
Dołączył: 10.01.2008
Skąd: Gdańsk

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


Na początku dokumentu(i we wszystkich w których odwołujesz się do sesji):
  1. <?php
  2. ?>


Potem przypisujesz dane do sesji
  1. <?php
  2. $_SESSION['jakas_nazwa'] = 'jakas_wartosc';
  3. ?>


--------------------
Pomogłem? Kliknij przycisk Pomógł pod pomocnym Ci postem.
http://maxik.me/
Go to the top of the page
+Quote Post
maciasgta
post 12.01.2008, 21:10:20
Post #4





Grupa: Zarejestrowani
Postów: 77
Pomógł: 0
Dołączył: 12.01.2008

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


RubiX dziekuje, ale jeszcze mam pytanie jak zrobić zeby skrypt lokalizował że ktoś sie zalogował i teraz nie wiem czy po id czy po loginie że to on i żeby wyciągnąć z bazy na temat jego jakieś inne dane.
Go to the top of the page
+Quote Post
RubiX
post 12.01.2008, 21:16:25
Post #5





Grupa: Zarejestrowani
Postów: 162
Pomógł: 6
Dołączył: 14.02.2007
Skąd: Poznań

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


No więc tak : jak zrobić zeby skrypt lokalizował że ktoś sie zalogował - nie wiem o co Ci w tym chodzi tongue.gif (opisz)

A 2: teraz nie wiem czy po id czy po loginie że to on i żeby wyciągnąć z bazy na temat jego jakieś inne dane.

Czy po id czy po loginie to jest obojętne ja proponuje po loginie będzie to wygodniejsze

A zeby wyciągnąć dane na jego temat musisz wykonoać polecenie SELECT z bazy sql z tabeli uzytkownicy (czy jak ją tam nazwałeś) np:

  1. <?php
  2. $wynik = mysql_query("SELECT * FROM uzytkownicy WHERE login='".$_SESSION['login']."'");
  3. $dane = mysql_fetch_array($wynik);
  4.  
  5. echo "Imię : ".$dane['imie']."<br>
  6. Login : ".$dane['login']." albo ".$_SESSION['login']."<br>
  7. Wiek : ".$dane['wiek']."<br>";
  8. ?>


Poprostu tak jak wyciągasz dane podczas logowania i sprawdzasz gdzie login = post login i haslo = post haslo tak tutaj robisz to samo smile.gif Tylko wyciagasz gdzie login = session login


--------------------
===================================

\o/ torebki
Go to the top of the page
+Quote Post
maciasgta
post 12.01.2008, 21:21:07
Post #6





Grupa: Zarejestrowani
Postów: 77
Pomógł: 0
Dołączył: 12.01.2008

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


Chodzi o to że ktoś sie zalogował i teraz chce z bazy uzytkownicy tabeli jakieś tam wyciągnąc jakieś informacje o nim.
Go to the top of the page
+Quote Post
RubiX
post 12.01.2008, 21:22:48
Post #7





Grupa: Zarejestrowani
Postów: 162
Pomógł: 6
Dołączył: 14.02.2007
Skąd: Poznań

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


No to już napisałem wklej to:

  1. <?php
  2. $wynik = mysql_query("SELECT * FROM uzytkownicy WHERE login='".$_SESSION['login']."'");
  3. $dane = mysql_fetch_array($wynik);
  4.  
  5. echo "Imię : ".$dane['imie']."<br>
  6. Login : ".$dane['login']." albo ".$_SESSION['login']."<br>
  7. Wiek : ".$dane['wiek']."<br>";
  8. ?>


Tylko w $dane['wartosc'] zamiast wartosc wpisuj takie pola jakie masz w Twojej tabeli


--------------------
===================================

\o/ torebki
Go to the top of the page
+Quote Post
maciasgta
post 14.01.2008, 15:41:11
Post #8





Grupa: Zarejestrowani
Postów: 77
Pomógł: 0
Dołączył: 12.01.2008

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


Rubix wielkie dzięki! Bardzo mi pomogłeś wszystko śmiga! Jeszcze raz wielkie dzięki!

Witam

Mam jeszcze pytanie w sprawie sesji chce zrobić żeby w bazie było pole id_zaloguj żeby skrypt mógł sprawdzać czy ktoś zalogowany a jak nie zalogowany to wywala błąd ze nie zalogowany.

Pozdrawiam i licze na pomoc.
Go to the top of the page
+Quote Post
RubiX
post 14.01.2008, 19:01:41
Post #9





Grupa: Zarejestrowani
Postów: 162
Pomógł: 6
Dołączył: 14.02.2007
Skąd: Poznań

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


Hmm ciężka sprawa.
Najlepiej jest zrobić nową tabele np:

  1. CREATE TABLE `zalogowani` (
  2. `id` int(11) NOT NULL AUTO_INCREMENT,
  3. `login` text NOT NULL,
  4. `czas` DATETIME NOT NULL,
  5. PRIMARY KEY (`id`)
  6. ) TYPE=MyISAM;


I teraz podczas każdego (prawidłowego) logowania zapisujesz do tabeli zalogowani nowy wiersz z id, login zalogowanego, aktualny czas (00-00-0000 00:00:00 [dzien-miesiac-rok godzina:minuta:sekundy])
Przykład :

  1. <?php
  2. $zapisz = mysql_query("INSERT INTO zalogowani VALUES ('', '".$_SESSION['login']."', NOW() )");
  3. ?>


No i później musisz (najlepiej w nowym pliku i później includować ten plik do każdej strony) wstawić kod który ustawia nowy czas jeżeli użytkownik jest nadal zalogowany, kasuje wpisy po jakimś czasie i na wszelki wypadek jak wpis wcześniej nie został dodany - dodaje:
np:

  1. <?php
  2. // Sprawdzenie czy użytkownik jest w tabeli zalogowani
  3. //Jeżeli go niema to go dodajemy:
  4. $wynik = mysql_query("SELECT * FROM zalogowani WHERE login='".$_SESSION['login']."'");
  5. if (mysql_num_rows($wynik) == 0) {
  6. $zapisz = mysql_query("INSERT INTO zalogowani VALUES ('', '".$_SESSION['login']."', NOW() )");
  7. }
  8.  
  9. //Ustawianie aktualnego czasu dla użytkowników którzy istnieją w tabeli zalogowani
    :
  10. $sprawdz = mysql_query("SELECT * FROM zalogowani WHERE login='".$_SESSION['login']."'");
  11. if (mysql_num_rows($sprawdz) == 1) {
  12. $update = mysql_query("UPDATE zalogowani SET czas=NOW() WHERE login='".$_SESSION['login']."'");
  13. }
  14.  
  15. //No i kasowanie użytkowników z tabeli zalogowani po np 3 minutach:
  16. $usun = mysql_query("SELECT * FROM zalogowani WHERE login='".$_SESSION['login']."' AND czas < DATE_SUB(NOW(), INTERVAL 180 SECOND)");
  17. if (mysql_num_rows($usun) == 1) {
  18. $kasowanie = mysql_query("DELETE FROM zalogowani WHERE login='".$_SESSION['login']."' AND czas < DATE_SUB(NOW(), INTERVAL 180 SECOND)");
  19. }
  20. ?>


Możesz też to skrócić :

  1. <?php
  2. $wynik = mysql_query("SELECT * FROM zalogowani WHERE login='".$_SESSION['login']."'");
  3. if (mysql_num_rows($wynik) == 0) {
  4. $zapisz = mysql_query("INSERT INTO zalogowani VALUES ('', '".$_SESSION['login']."', NOW() )");
  5. }
  6.  
  7. $update = mysql_query("UPDATE zalogowani SET czas=NOW() WHERE login='".$_SESSION['login']."'");
  8.  
  9. $kasowanie = mysql_query("DELETE FROM zalogowani WHERE login='".$_SESSION['login']."' AND czas < DATE_SUB(NOW(), INTERVAL 180 SECOND)");
  10. ?>


Nie sprawdzałem tego, pisałem z głowy ale mam nadzieje że działa winksmiley.jpg

Ten post edytował RubiX 14.01.2008, 19:03:05


--------------------
===================================

\o/ torebki
Go to the top of the page
+Quote Post
Maxik
post 14.01.2008, 19:05:56
Post #10





Grupa: Zarejestrowani
Postów: 726
Pomógł: 129
Dołączył: 10.01.2008
Skąd: Gdańsk

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


Ewentualnie można użyć ajaxa i zdarzenia onUnload do wylogowywania i wywalania danych z bazy.


--------------------
Pomogłem? Kliknij przycisk Pomógł pod pomocnym Ci postem.
http://maxik.me/
Go to the top of the page
+Quote Post
blackjohn
post 20.05.2008, 09:33:19
Post #11





Grupa: Zarejestrowani
Postów: 19
Pomógł: 0
Dołączył: 29.03.2006
Skąd: Częśtochowa

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


Witam.
Chciałem tylko powiedzieć, że mi tez bardzo pomógł ten skrypt.
Wielkie dzięki biggrin.gif
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: 14.08.2025 - 06:15