Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

2 Stron V   1 2 >  
Reply to this topicStart new topic
> [PHP]sesje, ustawianie ID sesji
Robert007
post
Post #1





Grupa: Zarejestrowani
Postów: 167
Pomógł: 2
Dołączył: 1.07.2009
Skąd: Poznań

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


witam, mam problem z ustawianiem ID sesji.

Robię system logowania i chcę ustawić osobne ID dla każdej osoby która się zaloguję ale niestety nie ustawia mi tego ID.
czytałem session_id że trzeba ustawić zaraz pod session_start lecz potrzebuję ustawić ID sesji przy funkcji logowania ale nie bardzo wiem jak to zrobić (IMG:style_emoticons/default/dry.gif)
Go to the top of the page
+Quote Post
darko
post
Post #2





Grupa: Zarejestrowani
Postów: 2 885
Pomógł: 463
Dołączył: 3.10.2009
Skąd: Wrocław

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


session_regenerate_id przy każdym logowaniu ?
Go to the top of the page
+Quote Post
taktu
post
Post #3





Grupa: Zarejestrowani
Postów: 89
Pomógł: 7
Dołączył: 19.05.2008

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


nie trzeba ustawiać session_id zobacz przykłady z http://pl.php.net/manual/en/function.session-start.php

potrzebujesz raczej ustawić sobie zmienną za pomocą której sprawdzisz czy osoba jest zalogowana, np:

  1.  
  2. $_SESSION['logged_in'] = 1;
  3. $_SESSION['user_id'] = $id_usera;
  4.  
Go to the top of the page
+Quote Post
Robert007
post
Post #4





Grupa: Zarejestrowani
Postów: 167
Pomógł: 2
Dołączył: 1.07.2009
Skąd: Poznań

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



Kod
$_SESSION['logged_in'] = 1;
$_SESSION['user_id'] = $id_usera;


właśnie mam w ten sposób zrobione ale gdy są np 2 osoby zalogowane to ta druga osoba po odświeżeniu posiada moje konto,
chciałem temu zapobiec przypisując do każdego usera inne ID sesji
Go to the top of the page
+Quote Post
adrianozo
post
Post #5





Grupa: Zarejestrowani
Postów: 733
Pomógł: 4
Dołączył: 11.11.2009

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


Może przypisać takie jakie ma id użytkownik
Go to the top of the page
+Quote Post
Robert007
post
Post #6





Grupa: Zarejestrowani
Postów: 167
Pomógł: 2
Dołączył: 1.07.2009
Skąd: Poznań

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


Cytat
Może przypisać takie jakie ma id użytkownik


tak próbowałem ale nie da się zmienić ID nigdzie indziej niż odrazu za session_start - przynajmniej mi się tak wydaję że nie ma innego sposobu
Go to the top of the page
+Quote Post
Spawnm
post
Post #7





Grupa: Moderatorzy
Postów: 4 069
Pomógł: 497
Dołączył: 11.05.2007
Skąd: Warszawa




Takie jakie ma user w bazie z auto_increment...
a co do zmiany id session to w 1 poście dostałeś odp.
Go to the top of the page
+Quote Post
Robert007
post
Post #8





Grupa: Zarejestrowani
Postów: 167
Pomógł: 2
Dołączył: 1.07.2009
Skąd: Poznań

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


Spawnm, patrzałem tę funkcje i zmienia ID lecz jak zrobić by po zmianie odrazu się zalogował?
nie bardzo rozumiem jak mam to zrobić by się zalogował na nowej sesji (ID)
Go to the top of the page
+Quote Post
Spawnm
post
Post #9





Grupa: Moderatorzy
Postów: 4 069
Pomógł: 497
Dołączył: 11.05.2007
Skąd: Warszawa




A ja nie wiem po co session_id chcesz wsadzać w $_SESSION.
zrób baze z userami
id int auto_inceremnt
user varchar
password varchar

potem przy logowaniu dajesz do $_SESSION jego unikalne id z bazy i tyle.
Poszukaj w sieci kursów , pełno w nich przykładów .
Go to the top of the page
+Quote Post
Robert007
post
Post #10





Grupa: Zarejestrowani
Postów: 167
Pomógł: 2
Dołączył: 1.07.2009
Skąd: Poznań

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


Spawnm, mam w ten sposób co opisałeś ale właśnie dziwne że druga osoba przejmuje konto usera który ostatnio się zalogował
Go to the top of the page
+Quote Post
Spawnm
post
Post #11





Grupa: Moderatorzy
Postów: 4 069
Pomógł: 497
Dołączył: 11.05.2007
Skąd: Warszawa




pokaż kod.
Go to the top of the page
+Quote Post
Robert007
post
Post #12





Grupa: Zarejestrowani
Postów: 167
Pomógł: 2
Dołączył: 1.07.2009
Skąd: Poznań

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


  1. if($row = @mysql_fetch_array($result))
  2. {
  3. if($row['password'] == md5($password))
  4. {
  5. $_SESSION['user_id'] = $row['user_id'];
  6. echo 'Zalogowano pomyślnie jako <b>'.$row['username'].'</b>';
  7. }
  8. }


Ten post edytował Robert007 27.12.2009, 20:45:56
Go to the top of the page
+Quote Post
Spawnm
post
Post #13





Grupa: Moderatorzy
Postów: 4 069
Pomógł: 497
Dołączył: 11.05.2007
Skąd: Warszawa




heh,zamiast pobierać wszystkich daj 1 zapytanie
  1. SELECT id FROM user WHERE nick='$nick' AND pass='$pass'

twój obecny kod nie sprawdza usera i hasła a samo hasło.
Go to the top of the page
+Quote Post
Robert007
post
Post #14





Grupa: Zarejestrowani
Postów: 167
Pomógł: 2
Dołączył: 1.07.2009
Skąd: Poznań

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


nie pokazałem góry bo myślałem że nie potrzebna bo całość mam tak:

  1. $sql = "SELECT username, password, user_id FROM php_users WHERE password = '".md5($password)."' AND username = '$username'";
  2. if(!($result = mysql_query($sql)))
  3. {
  4. echo message_error("Błąd odczytu tabeli",__FILE__,__LINE__);
  5. }
  6. else if($row = @mysql_fetch_array($result))
  7. {
  8. if($row = @mysql_fetch_array($result))
  9. {
  10. if($row['password'] == md5($password))
  11. {
  12. $_SESSION['user_id'] = $row['user_id'];
  13. echo 'Zalogowano pomyślnie jako <b>'.$row['username'].'</b>';
  14. }
  15. }
Go to the top of the page
+Quote Post
darko
post
Post #15





Grupa: Zarejestrowani
Postów: 2 885
Pomógł: 463
Dołączył: 3.10.2009
Skąd: Wrocław

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


Może coś takiego:
  1. if($row['password'] == md5($password)) {
  2. if($_SESSION['user_id'] == $row['user_id']) {
  3. echo 'Przepraszamy użytkownik o podanym loginie jest aktualnie zalogowany';
  4. } else {
  5. $_SESSION['user_id'] = $row['user_id'];
  6. echo 'Zalogowano pomyślnie jako <b>'.$row['username'].'</b>';
  7. } else {
  8. echo 'Podane dane są nieprawidłowe';
  9. }
  10. }

?

Ten post edytował darko 27.12.2009, 21:09:14
Go to the top of the page
+Quote Post
Robert007
post
Post #16





Grupa: Zarejestrowani
Postów: 167
Pomógł: 2
Dołączył: 1.07.2009
Skąd: Poznań

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


lecz to nie dzieje się przy logowaniu.

postaram się opisać bardziej problem ten:

wchodzę na stronę i loguję się na konto Robert007, po chwili wchodzi druga osoba i loduje się na konto Dark i gdy on przejdzie na podstronę lub odświeży stronę to jego konto zamienia się na ID mojego konta i jest zalogowany na moje konto i ja też na swoje.


zaobserwowałem z print_r i zdziwiłem się ponieważ wyświetliło mi to:

ze zmiennej $user
Kod
Array ( [user_id] => 1 [logged_in] => 1 [username] => Robert007 )


z SESSION
Kod
Array ( [user_id] => Array ( [user_id] => -1 [logged_in] => [username] => Gość ) )



funkcja:

Kod
$user_id = (int)$_SESSION['user_id'];
    if($user_id > 0)
    {
        $sql = "SELECT * FROM php_users WHERE user_id = '$user_id'";
        if(!($result = mysql_query($sql)))
        {
            echo message_error("Błąd odczytu tabeli",__FILE__,__LINE__);
            return 0;
        }
    }
    do
    {
        $info = array(
            'user_id' => $user_id,
            'logged_in' => ($user_id > 0)? true : false,
            'username' => (strlen($row['username']))? $row['username'] : 'Go?ć'    
        );
    }
    while($row = @mysql_fetch_array($result));


Ten post edytował Robert007 27.12.2009, 22:08:27
Go to the top of the page
+Quote Post
Mephistofeles
post
Post #17





Grupa: Zarejestrowani
Postów: 1 182
Pomógł: 115
Dołączył: 4.03.2009
Skąd: Myszków

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


Logujesz się na drugie konto z tego samego komputera? Spróbuj pod inną przeglądarką. Może problem tkwi w ciasteczkach, i przy odświeżeniu serwer dostaje stare id sesji.
Go to the top of the page
+Quote Post
Robert007
post
Post #18





Grupa: Zarejestrowani
Postów: 167
Pomógł: 2
Dołączył: 1.07.2009
Skąd: Poznań

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


Mephistofeles jest to samo nawet jeżeli wejdzie kolega z innym adresem IP czy nawet przeglądarką

strona http://robot-site.pl/por5t0al/

jestem aktualnie zalogowany

Ten post edytował Robert007 27.12.2009, 22:19:00
Go to the top of the page
+Quote Post
taktu
post
Post #19





Grupa: Zarejestrowani
Postów: 89
Pomógł: 7
Dołączył: 19.05.2008

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


  1. $user_id = (int)$_SESSION['user_id'];
  2. if($user_id > 0){
  3.  


Ten zapis nie ma sensu, jeżeli w sesji masz user_id to znaczy że użyszkodnik jest zalogowany, więc nie logujesz go kolejny raz.

Poza tym pokaż więcej kodu, najlepiej z session_start();
Go to the top of the page
+Quote Post
Mephistofeles
post
Post #20





Grupa: Zarejestrowani
Postów: 1 182
Pomógł: 115
Dołączył: 4.03.2009
Skąd: Myszków

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


Ma sens, bo wtedy trzeba pobrać dane usera z bazy.
Go to the top of the page
+Quote Post

2 Stron V   1 2 >
Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 23.08.2025 - 02:23