Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]sesje
Forum PHP.pl > Forum > Przedszkole
Robert007
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ć dry.gif
darko
session_regenerate_id przy każdym logowaniu ?
taktu
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.  
Robert007

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
adrianozo
Może przypisać takie jakie ma id użytkownik
Robert007
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
Spawnm
Takie jakie ma user w bazie z auto_increment...
a co do zmiany id session to w 1 poście dostałeś odp.
Robert007
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)
Spawnm
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 .
Robert007
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ł
Spawnm
pokaż kod.
Robert007
  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. }
Spawnm
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.
Robert007
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. }
darko
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. }

?
Robert007
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));
Mephistofeles
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.
Robert007
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
taktu
  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();
Mephistofeles
Ma sens, bo wtedy trzeba pobrać dane usera z bazy.
Robert007
temat do zamknięcia. znalazłem błąd.
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.