Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP] Bezpieczne logowanie
kiler129
post
Post #1





Grupa: Zarejestrowani
Postów: 566
Pomógł: 35
Dołączył: 21.06.2006

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


Siedzę już od rana i prubuję wymyślec dobre logowanie ale ni w ząb nie mogę nic wymyslić. Co prawda zrobiłem taki system ale opiera się o na sprawdzaniu czy w POST są dane ale jak user wejdzie w inny katalog (tworzę internetowy dysk) to te dane z post znikają i zostaje wywalony (IMG:http://forum.php.pl/style_emoticons/default/dry.gif)
Pomyślałem aby zrobic tak ze jak się zaloguje i hasło i login będą się zgadać to ustawia ciacho z zawartościa zalogowany i tyle ale sęk w tym że jeśli ktoś zaloguje się na swój internetowy dysk z loginem np. zosia i zostanie przeniesiony do strony strona.pl/zosia i tam ma swój skrypt to gdy teraz wpisze sobie w pasku adresu strona.pl/marysia to skrypt sprawdzi że ok, jest w ciachu zalogowany wiec dopuści.
Czy ktoś może mi podsunąć pomysł jak to zrobić ?
Więc tak, pomyślałem że zrobię z tym ciachem ale w ciachu będzie pisać jeszcze katalog - dobre rozwiązanie ?
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
vokiel
post
Post #2





Grupa: Zarejestrowani
Postów: 2 592
Pomógł: 445
Dołączył: 12.03.2007

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


Ja lubię sesje, więc Ci pomogę:

plik z formularzem logowania
form.html
  1. <form name="logowanie" method="POST" action="index.php">
  2. <input type="text" name="login" title="Pole loginu"> <br />
  3. <input type="password" name="haslo" title="Pole hasła"> <br />
  4. <input type="submit" name="submit" value="Loguj" title="Zaloguj">
  5. </form>


plik logowanie.php
  1. <?php
  2. if (isset($_POST['login']) && isset($_POST['haslo']))
  3. {
  4. //jezeli uzytkownik wlasnie podjal probe logowania
  5. $login = $_POST['login']; $haslo = $_POST['haslo'];
  6.  
  7. //sprawdzamy czy mamy użytkownika w bazie
  8. include ('polaczenie.php');
  9. $md5 = md5($haslo);
  10. $zapytanie = "SELECT * FROM uprawnieni WHERE login='$login' AND haslo='$md5';";
  11. $wykonaj = mysql_query($zapytanie);
  12. $wiersz = mysql_fetch_array($wykonaj);
  13.  
  14. if (mysql_affected_rows()>0) //istnieje uzytkownik o podanym loginie i hasle
  15. {
  16. $_SESSION['nazwa_uzytkownika']=$login; 
  17.  //zapisujemy kto się zalogował (później wykorzystamy do kontroli dostępu do katalogów)
  18. }
  19. }
  20.  
  21. if (isset($_SESSION['nazwa_uzytkownika']))
  22. {
  23. $print = "Zalogowany użytkownik.<br />
  24.  Witaj :<strong>".$_SESSION['nazwa_uzytkownika']."</strong>
  25. <a href="wyloguj.php">Wyloguj</a>"; //w wyloguj.php wstawiamy funkcję: session_destroy()
  26. }
  27. else
  28. {
  29. if (isset($login)) //jezeli proba lgogowania sie nie powiodla
  30. {
  31. $print = "<strong>Nieudane logowanie!</strong>";
  32. }
  33. else //nie bylo proby logowania lub nastapilo wylogowanie
  34. {
  35. $print = "Niezalogowany(a)</strong>";
  36. }
  37.  //tworzenie formularza logowania
  38.  $tworzenie_form=true;
  39.  }
  40.  ?>


plik index.php
  1. <?php
  2. include('logowanie.php');
  3.  
  4. if (isset($_SESSION['nazwa_uzytkownika']))
  5. {
  6.  echo $print;
  7. }
  8. else
  9. {
  10.  echo $print;
  11. //tworzenie formularza logowania
  12. if ($tworzenie_form==true)
  13. {
  14. include('form.html');
  15. }
  16. ?>


troche to na około ale działa,
odpalasz w przeglądarce plik index.php on wywołuje plik logowanie.php, jeśli nie było logowania lub było błędne to do zmiennej $print jest zapisywana stosowna informacja i wyświetlany jest formularz logowania. jeśli użytkownik się zalogował poprawnie to do zmiennej $print zapisywana jest jego nazwa i link do wylogowania.
Potem w plikach w tych folderach do których mają dostęp tylko wybrane osoby sprawdzasz:
  1. <?php
  2. if (isset($_SESSION['nazwa_uzytkownika']) && ($_SESSION['nazwa_uzytkownika']='nick użytkownika') )
  3.  {
  4. echo "Masz dostęp do tego katalogu:)";
  5.  } 
  6. else 
  7.  
  8.  {
  9. echo "Brak uprawnień!!! Wypad! ;)";
  10.  }
  11. ?>
Go to the top of the page
+Quote Post

Posty w temacie
- kiler129   [PHP] Bezpieczne logowanie   18.03.2007, 20:38:40
- - Kicok   Poczytaj o sesjach w PHP. Możesz w nich zapisać cz...   18.03.2007, 20:56:36
- - misiek172   ciacha nie są dobre bo są client-side natomiast se...   18.03.2007, 23:11:37
- - kiler129   Poczytałem troszkę o sesjach i jakos nie rozumiem ...   19.03.2007, 11:59:33
- - PiratNowegoPokolenia   ile chcesz ... choć za duża ilość danych nie jest ...   19.03.2007, 12:08:02
- - kiler129   Te sesje są *** już meni zaczynają ...   19.03.2007, 12:43:15
- - PiratNowegoPokolenia   Dobra dobra zaraz ci wszystko wyjaśnie ... CytatP...   19.03.2007, 15:50:21
- - kiler129   No tak ale dlaczego tak jest ze sesja się jakby sa...   19.03.2007, 17:39:34
- - misiek172   po 1 id sesji musisz przekazywać a) w cookie ...   19.03.2007, 18:28:23
- - kiler129   jakoś nie rozumiem, po co dawać session_id($_...   19.03.2007, 18:35:22
- - PiratNowegoPokolenia   na razie zostawiaj session id w cookies ... bo ci ...   19.03.2007, 18:47:53
- - misiek172   tylko że jak ktoś ma wyłączone cookie to lipa, nie...   19.03.2007, 18:50:06
- - kiler129   Wiesz co tak serio to żadko widuje kogoś z wyłaczo...   19.03.2007, 19:22:40
- - misiek172   zdaje mi się że nie ma konkretnego polec...   19.03.2007, 19:30:14
- - kiler129   misiek172 mam wrżnie że ty jak widzisz jakieś zada...   19.03.2007, 19:37:29
- - misiek172   znaczy ja poprostu nie znam i nie słysza...   19.03.2007, 19:58:31
- - Heweliusz   Z tego co słyszałem, mechanizm sesi zawarty w php4...   19.03.2007, 22:46:43
- - vokiel   Ja lubię sesje, więc Ci pomogę: plik z formularze...   19.03.2007, 23:28:34
- - misiek172   masz w ostatnim błąd po 1 w if dajemy do porównani...   20.03.2007, 11:13:03
- - Kicok   Cytatpo 2 to if (isset($_SESSION['nazwa_...   20.03.2007, 14:36:24
- - vokiel   @misiek172: racja '==' zamiast '=...   20.03.2007, 18:06:42
- - ReBeLs513   cześć. Mam problem... w pliku index i logowanie wy...   12.12.2010, 13:54:42
|- - greycoffey   Cytat(ReBeLs513 @ 12.12.2010, 13:54:4...   12.12.2010, 16:09:13
- - lord2105   Cytat(ReBeLs513 @ 12.12.2010, 13:54:4...   12.12.2010, 16:11:13


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: 13.10.2025 - 11:26