Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP] Logowanie na Sesjach
Reptile ReX
post
Post #1





Grupa: Zarejestrowani
Postów: 119
Pomógł: 0
Dołączył: 19.01.2008

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


Witam mam pewien problem:

Moim celem jest zrobienie systemu logowania dla użytkowników.
Skrypt bazuje na sesjach, i teraz.

Załóżmy że moi użytkownicy mają osobne profile na adresach:

www.adres.pl/user1/ - Użytkownik 1
oraz
www.adres.pl/user2/ - Użytkownik 2

I teraz plik index.php dla użytkownika 1 wygląda następująco:

  1. <?php
  2. if (isset($_POST['nick']) && $_POST['nick'] == 'user1') {
  3. if (isset($_POST['haslo']) && $_POST['haslo'] == 'user1') {
  4. $_SESSION['login'] = 1;
  5. }
  6. }
  7. if (!isset($_SESSION['login'])) {
  8. echo ("<center><form action='' method='post'>");
  9. echo ("Nazwa: <input type=\"text\" class=\"input\" name=\"nick\" size=\"25\" /><br />");
  10. echo ("Hasło:   <input type=\"password\" name=\"haslo\" class=\"input\" size=\"25\" /><br /><br />");
  11. echo ("<input type=\"submit\" value=\"Zaloguj Mnie !\" name=\"logme\" class=\"submit\" />");
  12. echo ("</form></center>");
  13. } else {
  14.  
  15. echo ("Tajne danie");
  16.  
  17. }
  18.  
  19. ?>


Plik index.php dla Użytkownika 2 wygląda podobnie, tylko że są zmienione dane logowania.

I teraz mój problem.

Jeżeli ktoś się zaloguje na user1 i wejdzie w adres usera2 ma dostęp do jego strony i analogicznie w drugą stronę.
Jak temu zapobiec? rozumiem, że jest to spowodowane PHPSESID który jest przypisywane tylko raz.

Ten post edytował Reptile ReX 5.10.2010, 19:20:56
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 3)
sazian
post
Post #2





Grupa: Zarejestrowani
Postów: 1 045
Pomógł: 141
Dołączył: 19.09.2006
Skąd: B-tów

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


dala drugiego usera daj $_SESSION['login'] = 2;
teraz wystarczy tylko sprawdzić co w sesji siedzi i blokować odpowiednią treść

Ten post edytował sazian 5.10.2010, 19:35:12
Go to the top of the page
+Quote Post
Reptile ReX
post
Post #3





Grupa: Zarejestrowani
Postów: 119
Pomógł: 0
Dołączył: 19.01.2008

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


o, nie pomyślałem, dzięki...

Czemu człowiek zawsze szuka najtrudniejszych rozwiązań.
Ehh

Czy takie zabezpieczenie sesji wystarczy?, co mógłbym jeszcze zrobić:

  1. <?php
  2. if (isset($_POST['nick']) && $_POST['nick'] == 'bbb') {
  3. if (isset($_POST['X09261x']) && $_POST['X09261x'] == 'bbb') {
  4. $_SESSION['logged'] = 'yes';
  5. $_SESSION['ip'] = $_SERVER['REMOTE_ADDR'];
  6.  
  7. }
  8. }
  9. if (!isset($_SESSION['logged']) && $_SESSION['ip'] != $_SERVER['REMOTE_ADDR']) {
  10. echo ("<center><form action='' method='post'>");
  11. echo ("Nazwa: <input type=\"text\" class=\"input\" name=\"nick\" size=\"25\" /><br />");
  12. echo ("Hasło: &nbsp;&nbsp;<input type=\"password\" name=\"X09261x\" class=\"input\" size=\"25\" /><br /><br />");
  13. echo ("<input type=\"submit\" value=\"Zaloguj Mnie !\" name=\"logme\" class=\"submit\" />");
  14. echo ("</form></center>");
  15. die();
  16. } else {
  17. echo ("Tajne danie");
  18. }
  19.  
  20.  
  21.  
  22. ?>
Go to the top of the page
+Quote Post
Kenpachi18
post
Post #4





Grupa: Zarejestrowani
Postów: 1
Pomógł: 0
Dołączył: 8.10.2010

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


hmm. Jestem nowy i uczę się php w sposób następujący:
Szukam właśnie takich różnych funkcji, gotowych kodów, wklejam je do siebie i przerabiam i myślę co i jak i dlaczego bądź robię coś podobnego od nowa I właśnie z tym kodem mam pytanie ponieważ dołożyłem sobie opcję wyloguj po uprzednim zalogowaniu. Znaczy problem jest taki:
Undefined index: ip in D:\wamp\www
a chodzi o linię:
if (!isset($_SESSION['logged']) && $_SESSION['ip'] != $_SERVER['REMOTE_ADDR']) {

wyświetla ten błąd ale wszystko działa. I moje pytanie:
- O co chodzi w tym błędzie, czemu się wyświetla.
Możecie uznać mnie za głąba ale ja się naprawdę w ten sposób uczę.

~Edit: Ale kiedy wrzucam na serwer na freehost tego bledu nie ma

Ten post edytował Kenpachi18 8.10.2010, 19:00:11
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 Aktualny czas: 21.08.2025 - 23:17