Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP] Wielokrotne logowanie
R4D3K
post
Post #1





Grupa: Zarejestrowani
Postów: 144
Pomógł: 12
Dołączył: 16.03.2007

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


Witam, na początku chce zaznaczyć, że to nie jest problem poruszany n-ty raz, przeszukałem koło 100 tematów na tym forum dotyczących logowania i nie znalazłem odpowiedzi, google milczało, chyba że nie wiem jak zadać pytania dla wujka google, jeśli tak to przepraszam. (IMG:http://forum.php.pl/style_emoticons/default/wstydnis.gif)

Posiadam stronę na której jest galeria ze zdjęciami i aby można było je obejrzeć użytkownik musi być zalogowany i mój problem polega na tym iż 1 osoba się rejestruje i podaje reszcie swój login i hasło i jednocześnie oglądają zdjęcia. Z praktyki wiem że w jednym czasie na 1 loginie przegląda zdjęcia nawet 4 użytkowników jednocześnie. Chcę to wyeliminować i zmusić każdego z tych użytkowników to założenia konta.

Na podstronie z galerią sprawdzam, czy osoba jest zalogowana za pomocą sesji:

  1. <?php
  2. if (isset($_SESSION['id'])) {
  3. // pokaz galerię
  4. }
  5. else {
  6. // powiedz userowi że musi się zalogować
  7. }
  8. ?>


próbowałem używać
session_regenerate_id()" title="Zobacz w manualu PHP" target="_manual , także dodałem regułę do pliku htaccess:
Kod
php_value session.use_only_cookies 1
php_value session.use_trans_sid 0

Oczywiście pozwoliło to wyeliminować spryciarzy, którzy przesyłali link już po zalogowaniu, ale dalej mojego problemu to nie rozwiązało.
Myślałem o tym,żeby stworzyć tabelę z id_usera i id_session i sprawdzać co każde wylistowanie zdjęć czy id sesji zgadza się z orginałem.
Jednak czy to pomoże czy tylko obciąży serwer ? Czy może lepiej wysyłać jakieś ciasteczko, czy też sprawdzać odstęp czasu pomiędzy logowaniami
czy w jakiś sposób sprawdzać czy dany użytkownik jest zalogowany ? (jeśli tak to w jaki ?)

Prosiłbym tych, którzy spotkali się z tym problemem, żeby opisali jak sobie z tym poradzili, może ktoś wklei jakiś kawałek kodu
Z góry dzięki
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
R4D3K
post
Post #2





Grupa: Zarejestrowani
Postów: 144
Pomógł: 12
Dołączył: 16.03.2007

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


@pgrzelka dzięki za info, gdyby nie ty dalej był żył w przekonaniu, że się nie da MAC adresu wyciągnąć i tyle, nawet jeśli chodzi o korzystanie w sieci lokalnej.

Może trochę naświetle problem bardziej, stworzyłem sobie stronę gdzie można znaleźć zdjęcia itp w PHP, wykupiłem płatny hosting zamieściłem pliki.
Strona ma "zasięg" jeśli tego słowa można użyć, "miastowy" to znaczy zdjęcia są robione z imprez w moim mieście z tego powodu 90% ruchu na stronie pochodzi z mojego rodzimego miasta. Jeśli chodzi o dostawców usług internetowych, tam gdzie mieszkam liczą się 2 gracze: Neostrada i Vectra(taka sieć kablowa dostarczająca internet razem z kablówką). Podobnie jak Neostrada, Vectra przydziela adresy IP dynamicznie, w obrębie danej dzielnicy, czyli jedno osiedle ma na wyjściu ten sam adres IP (sprawdziłem). Jedno takie osiedle to ładna liczba użytkowników. Dlatego tak się wystrzegałem weryfikacje przez ip.
Jak narazie wymyśliłem, taki oto sposób wykluczenia wielokrotnego logowania w 1 czasie:
Tworzę tabelę z id_user, sid,time i gdy dany user próbuje się zalogować sprawdzam czy w tej tabeli nie ma wpisu z jego ID, jesli jest to sprawdzam, czy jego id sesji jest równe wartości pola sid, jeśli jest to każę mu się zalogować, jeśli nie to go loguje tworząc odpowiedni wpis w bazie danych. Trochę to zawiłe, więc może użyje pseudokodu:
  1. <?php
  2. if (isset($_POST['login'])) {
  3. // user chce się zalogować
  4.  $dane=mysql_fetch_array(mysql_query('SELECT * FROM session WHERE id_user=SELECT id FROM users WHERE login=$_POST['login'] AND pass=md5($_POST['pass']))
  5.    if ($dane['sid]==session_id()) {
  6.    // Mam cię spryciarzu teraz grzecznie załóż konto i się zaloguj
  7.  }
  8.  else {
  9.   // OK zaloguj się i uaktualnij tabelę session
  10.  }
  11. }
  12. ?>


I co myślicie czy ten sposób jest OK ? Bo ja tu widzę problem z łatwością przejęcia takiej id sesji, ponieważ session_regenerate_id()" title="Zobacz w manualu PHP" target="_manual nie będzie wykorzystywane i ciągle muszę uaktualniać wpis w tabeli session. No chyba że się mylę, lub jest jakiś sposób żeby nie przesyłac tylu zapytań.

Ten post edytował R4D3K 30.06.2009, 23:29:22
Go to the top of the page
+Quote Post

Posty w temacie
- R4D3K   [PHP] Wielokrotne logowanie   30.06.2009, 13:47:43
- - maly_swd   Podczas logowania zapisz IP na ktorym jest zalogow...   30.06.2009, 14:08:52
- - R4D3K   @maly_swd to za bardzo problemu nie rozwią...   30.06.2009, 14:31:46
- - Wicepsik   Może identyfikacja przez MAC ? 1 konto = 1 MA...   30.06.2009, 14:50:33
- - kfc4   Zapisujesz w bazie login i id sesji. Jak kto...   30.06.2009, 14:53:58
- - MateuszScirka   Zrob przy rejestracji ciasteczko ktore tam ma czas...   30.06.2009, 14:57:34
- - kfc4   Mateusz: nie wypali pomysł bo: -zmiana komputera; ...   30.06.2009, 15:01:40
- - MateuszScirka   kfc4, trzeba by sie nad tym glebiej zastanowic   30.06.2009, 15:12:52
- - dworakex   Do tabeli z userami dodajesz pole "sid" ...   30.06.2009, 15:15:45
- - R4D3K   @Wicepsik Jak zrobić porównywanie adresu MAC...   30.06.2009, 15:27:29
- - dworakex   Dlaczego nei regenerować id? Albo wymusić stosowan...   30.06.2009, 15:31:33
- - R4D3K   Hmmm no tak regenerować id sesji mogę to co wtedy ...   30.06.2009, 15:34:55
- - erix   CytatMoże identyfikacja przez MAC ? 1 konto = 1 MA...   30.06.2009, 17:55:18
- - R4D3K   Tak PHP jako język po stronie serwera nie ma dostę...   30.06.2009, 22:27:09
- - pgrzelka   temat pobierania adresu mac jest poruszony w Archi...   30.06.2009, 22:41:54
- - erix   Adres MAC, to kiepski pomysł, gdyż w przypadku pro...   30.06.2009, 22:50:57
- - R4D3K   @pgrzelka dzięki za info, gdyby nie ty dalej ...   30.06.2009, 23:26:24
- - erix   skrypt jest dziurawy (SQL Injection)MD5 też można ...   1.07.2009, 14:39:32
- - R4D3K   dzięki erix, to że jest dziurawy to wiem już nie d...   2.07.2009, 21:56:22
- - MolTAR   A nie można by do tabeli z użytkownikami dodać pol...   2.07.2009, 22:15:08
- - R4D3K   A jeśli użytkownik nie kliknie "WYLOGUJ...   2.07.2009, 22:18:33
|- - bełdzio   Cytat(R4D3K @ 2.07.2009, 23:18:33 ) A...   2.07.2009, 22:29:46
- - MolTAR   zdarzenie zamykania przeglądarki z tego co wiem mo...   2.07.2009, 22:27:14
- - R4D3K   GC ? chodzi o tą odśmieciarkę ? Bełdzio możesz rzu...   2.07.2009, 22:32:58
- - erix   Cytatzdarzenie zamykania przeglądarki z tego co wi...   2.07.2009, 23:05:58
- - MolTAR   Możesz też dać użytkownikowi ciasteczko na taki cz...   3.07.2009, 09:05:57
- - R4D3K   Dobra, ale tak myślałem żeby zamiast ciasteczka uż...   3.07.2009, 10:27:53
- - rzymek01   moim zdaniem: - sesje PHP wraz z własnym mechanizm...   3.07.2009, 10:49:45
- - bełdzio   takie cos mi jeszcze w lozku przyszlo do glowy ;-)...   3.07.2009, 11:20:40
|- - fander   Cytat(bełdzio @ 3.07.2009, 12:20:40 )...   3.07.2009, 11:37:38
- - R4D3K   CytatAlbo inaczej gdy znajdzie użytkownika o takim...   4.07.2009, 09:02:31
- - crackcomm   Gdy użytkownik się loguje SID jest dodawany do baz...   4.07.2009, 19:12:55
|- - rzymek01   Cytat(crackcomm @ 4.07.2009, 20:12:55...   5.07.2009, 08:19:39
|- - crackcomm   Cytat(rzymek01 @ 5.07.2009, 09:19:39 ...   5.07.2009, 14:24:20
|- - rzymek01   Cytat(crackcomm @ 5.07.2009, 15:24:20...   5.07.2009, 14:30:51
|- - bełdzio   Cytat(rzymek01 @ 5.07.2009, 15:30:51 ...   5.07.2009, 16:42:28
- - Kethrax   Witam, Ja bym zrezygnował wogóle z cookies. ...   5.07.2009, 11:57:47
- - R4D3K   Dzięki Wam za odpowiedzi. Najbardziej podoba mi s...   5.07.2009, 22:27:28
- - rzymek01   Cytat(R4D3K @ 5.07.2009, 23:27:28 ) N...   6.07.2009, 11:10:35


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: 15.10.2025 - 02:09