[php] System logowania i sesje |
[php] System logowania i sesje |
-gosc_mufan- |
21.07.2006, 11:00:34
Post
#1
|
Goście |
Witam mam problem.Dopiero zaczynam zabawe z php a juz musze napisac system logowania oparty mysql. Czy moglby mi ktos pomoc dokladnie chodzi o to z na stronce sa miejsca na login i haslo i po kliknieciu na loguj powino sprawdzac czy taki user jest w bazie danych. Dziekuje za szybka odpowiedz:)
---------------------- Pozwoliłem sobie zmienić nazwę wątku : ) --- ~strife |
|
|
21.07.2006, 11:08:04
Post
#2
|
|
Grupa: Moderatorzy Postów: 4 465 Pomógł: 137 Dołączył: 26.03.2004 Skąd: Gorzów Wlkp. |
Skoro musisz napisać, to znaczy, że to komercyjna zabawka. Skoro nie znasz php i mysql'a, to jak chcesz to napisać? Chcesz pomocy, czy gotowca? Jak gotowca, to nie ten dział.
1. Stwórz tabelę w bazie danych zawierającą żytkowników 2. Napisz kod, który będzie pamietał uzytkownika (np. w oparciu o mechanizm sesji w php) 3. Przy stronach, które mają być zabezpieczone umieść kod sprawdzający, czy użytkownik, który odwiedz stronę ma do tego prawo. Sprawdzasz, czy osoba przedstawiająca się przez sesję jest umieszczona w bazie danch. Jeśli nie jesteś w stanie napisać sam, to poszukaj gotowych skryptów, ale bacz na licencje. Ten post edytował Cysiaczek 21.07.2006, 11:09:01 -------------------- To think for yourself you must question authority and
learn how to put yourself in a state of vulnerable, open-mindedness; chaotic, confused, vulnerability, to inform yourself. Think for yourself. Question authority. |
|
|
21.07.2006, 11:31:34
Post
#3
|
|
Grupa: Zarejestrowani Postów: 13 Pomógł: 0 Dołączył: 17.07.2006 Skąd: Warszawa Ostrzeżenie: (0%) |
Jest masa ksiazek na ten temat. Mozna je już kupić za ok 30zeta
-------------------- php Programinng
NightClubbing Heroes of Might and Magic - Titans Rulezz! |
|
|
21.07.2006, 13:45:16
Post
#4
|
|
Grupa: Zarząd Postów: 3 503 Pomógł: 28 Dołączył: 17.10.2002 Skąd: Wrocław |
@adi2005: jeszcze jedna taka odpowiedz i zaliczysz warna
A do autoa: Czy COKOLWIEK próbowałeś już zrobić? -------------------- |
|
|
21.07.2006, 14:03:45
Post
#5
|
|
Grupa: Zarejestrowani Postów: 13 Pomógł: 0 Dołączył: 17.07.2006 Skąd: Warszawa Ostrzeżenie: (0%) |
@scanner: Oki sorki ale jednak chciałbym wiedzieć co napisałem nie tak
--- Autor nie pytał o książki. Pytał o konkretne zagadnienie. A to że książki są to każdy wie. Też chcesz żeby Cie odesłać jak o coś zapytasz? Jednym słowem: post jest zły bo nie na temat i specjalnie nabity. A takie pytania jak to to też na PW. ~mike_mech --- Dzięki mike-mech ~scanner -------------------- php Programinng
NightClubbing Heroes of Might and Magic - Titans Rulezz! |
|
|
-gosc_mufan- |
21.07.2006, 15:19:54
Post
#6
|
Goście |
Tak probowalem sie bawic z gotowcami ale mi nie szlo. Poza tym bym wolal sam cos napisac. Mam juz gotowa baze w mysql ale nie wiem jak zaczac pisac samo logowanie.
|
|
|
21.07.2006, 15:41:03
Post
#7
|
|
Grupa: Zarejestrowani Postów: 945 Pomógł: 7 Dołączył: 15.03.2005 Skąd: katowice Ostrzeżenie: (0%) |
formularz wysyla dane login i password do naszego skryptu. skrypt liczy uzytkownków w bazie majacych taki login i takie haslo pozniej dajesz if jezeli 1 tzn ze zalogowany dobrzez jezeli 0 to zle . jezeli bedzie dobrze mozeszesz wszystko wpakować do sessji ( imie,login,itp wedle uznania ) Wszystko wysylasz metoda POST z formularza rzecz jasna. nie zapomnij tez o MD5 tzn kodowanie hasła w manuali pisze wiecej
|
|
|
21.07.2006, 16:04:48
Post
#8
|
|
Grupa: Przyjaciele php.pl Postów: 2 605 Pomógł: 96 Dołączył: 22.10.2004 Skąd: UK Ostrzeżenie: (0%) |
Witam,
Napiszę Ci dość szybko czym jest logowanie w php i jak przebiega, ponieważ temat logowania był wałkowany i jest bardzo długo, więc sam rozumiesz, że pisać n'ty raz to samo robi się z oporem ( przynajmniej mi ). No ale przejdźmy do rzeczy, zakładam, że pewne podstawy z php znasz takie jak tworzenie warunków, pętli, zmiennych. Jeżeli już masz ten zasób wiedzy, to przejdźmy do napisania samego skryptu logowania. Na początku tworzymy plik o dowolnej nazwie, u mnie będzie się nazywał login.php, ten plik umożliwi stworzenie tzw. zmiennej sesyjnej odpowiadającej za zalogowanie się na stronę. O zmiennach sesyjnych możesz poczytać w manualu w dziale zmienne predefiniowane. Oczywiście, samo tworzenie zmiennej sesyjnej nie wystarczy, jest potrzebny też formularz, który umożliwi nam dowolne logowanie. Przykładowy formularz może wyglądać w ten sposób: Oczywiście ten formularz umieszczamy w naszym pliku, bądź innym wzkazującym na login.php ( action ). Gdy już mamy w takiej postaci nasz plik, przystępujemy do obrobienia go. Tak więc tworzymy warunek, który nam sprawdzi czy dane przesłane w formularzu są prawidłowe.
Przy tak skonstruowanym kodzie, i poprawnym wpisaniu danych zostanie dodane zmienna sesyjna o nazwie 'auth'. Zmienne sesyjne są widoczne w każdym miejscu ponieważ ich zasięg jest globalny i tutaj też zapraszam do zapoznania się z manual'em i rozdziałem o zmiennych predefiniowanych. Następnie posiadając taką zmienną możemy w każdym miejscu sprawdzić, czy użytkownik jest zalogowany, czyli sprawdzamy czy ta zmienna istnieje.
Wszystko wydaje, się proste, ale kod który napisałem, może nie działać.. Dlaczego? W kodzie, który zaprezentowałem nie ma nigdzie zdefiniowanego startu sesji, więc tworzenie zmiennych sesyjnych i ich sprawdzanie nie ma najmniejszego sensu. Na początku kodu musi być:
Wtedy, możemy dowolnie operować na sesjach. Wszystko pięknie, ale czegoś tu brakuje... a co jeśli będziemy chcieli się wylogować, tutaj z pomocą przychodzi session_destroy" title="Zobacz w manualu PHP" target="_manual, bądź unset" title="Zobacz w manualu PHP" target="_manual, z tą różnicą, że to pierwsze usunie wszystkie zmienne sesyjne, a drugie tylko wybraną:
To by było Tyle, jeżeli chodzi o samo logowanie, teraz trochę o mysql. Posłużę się do tego kodem, który już wcześniej napisałem na tym forum:
Oczywiście do takiego kodu można się przyczepić o kwestię bezpieczeństwa ( sql injection ), ale żeby nie przyciemniać tego przykładu odwołuję Cię do przyczepionego tematu sql injection na forum -> php. A więc przeanalizujmy powyższy kod, użytkownik wpisuje swój login i hasło, następnie wykonujemy zapytanie, które sprawdza czy dany użytkownik istnieje, jeżeli tak sprawdzamy hasło, i miejscu gdzie pojawia się informacja o poprawnym zalogwaniu, możemy dodać naszą zmienną sesyjną. Mam nadzieję, że już mniej więcej wiesz o co chodzi z logowaniem. Kod pisałem z palca, więc mogą być małe błędy. W razie pytań czy wątpliwości, pisz na forum. Pozdrawiam! -------------------- Najczęstsze błędy | Jak poprawnie zadać pytanie? | Serwer PHP - od czego zacząć?
SQL Injection | Hashowanie haseł | Jak działają sesje, przykłady ___ The world is yours ... |
|
|
20.03.2007, 21:41:27
Post
#9
|
|
Grupa: Zarejestrowani Postów: 466 Pomógł: 11 Dołączył: 21.09.2006 Skąd: Szczecin Ostrzeżenie: (0%) |
Zrobiłem takie pliki:
logowanie.html: sprawdz.php:
plik.php
Wchodząc do pliku plik.php nic mi się nie wyświetla. Może mi ktoś powiedzieć co tu nie tak zrobiłem? |
|
|
20.03.2007, 21:56:22
Post
#10
|
|
Admin Techniczny Grupa: Administratorzy Postów: 2 071 Pomógł: 93 Dołączył: 5.07.2005 Skąd: Olsztyn |
bezpośrednio do plik.php? to czego oczekujesz że zmienna w ifie z powietrza sie wyczaruje?
|
|
|
20.03.2007, 22:30:44
Post
#11
|
|
Grupa: Zarejestrowani Postów: 466 Pomógł: 11 Dołączył: 21.09.2006 Skąd: Szczecin Ostrzeżenie: (0%) |
ok działa oto moje pliki:
logowanie.html pomijam, sprawdz.php
plik.php
wyloguj.php
tylko teraz moje pytanie brzmi: jak przerobić plik sprawdz.php aby po udanym zalogowaniu przeiosło mnie do pliku index.html wiem że trzeba dodać header(...) ale w którym miejscu ? |
|
|
20.03.2007, 22:39:22
Post
#12
|
|
Admin Techniczny Grupa: Administratorzy Postów: 2 071 Pomógł: 93 Dołączył: 5.07.2005 Skąd: Olsztyn |
|
|
|
20.03.2007, 22:44:49
Post
#13
|
|
Grupa: Zarejestrowani Postów: 466 Pomógł: 11 Dołączył: 21.09.2006 Skąd: Szczecin Ostrzeżenie: (0%) |
kurde rzeczywiście ;p
Ale to wynik tego że nie śpię 19h ponad i po treningu jestem. to jeszcze tylko pytanko szybkie: jeżeli jestem już zalogowany, jak mogę wyświetlić ID sesji?? Póki co to mi do szczęścia potrzeba |
|
|
20.03.2007, 22:47:05
Post
#14
|
|
Admin Techniczny Grupa: Administratorzy Postów: 2 071 Pomógł: 93 Dołączył: 5.07.2005 Skąd: Olsztyn |
wystarczy manula przejrzeć...
session_id" title="Zobacz w manualu PHP" target="_manual |
|
|
20.03.2007, 23:32:15
Post
#15
|
|
Grupa: Zarejestrowani Postów: 466 Pomógł: 11 Dołączył: 21.09.2006 Skąd: Szczecin Ostrzeżenie: (0%) |
zrobiłem taki plik:
wybór.html Chodzi mi o to, żeby był w .html i po wejściu w niego była sprawdzana sesja. Lecz jak wchodzę zawsze się pokazuje menu. Pewnie plik jest powalony. Jak to przerobić na działający? Do czego dążę: otóż jak sprawdzać sesję w plikach o rozsz: .html ten wybor.html to przykład, który nie wiem jak rozwiązać i liczę na waszą pomoc Ten post edytował robos85 20.03.2007, 23:36:20 |
|
|
20.03.2007, 23:38:41
Post
#16
|
|
Grupa: Przyjaciele php.pl Postów: 1 590 Pomógł: 40 Dołączył: 11.01.2007 Skąd: Centrum Ostrzeżenie: (0%) |
Jeżeli chcesz korzystać z kodu PHP musisz umieszczać go w plikach *.php
-------------------- 404
|
|
|
20.03.2007, 23:43:37
Post
#17
|
|
Grupa: Zarejestrowani Postów: 466 Pomógł: 11 Dołączył: 21.09.2006 Skąd: Szczecin Ostrzeżenie: (0%) |
yhm ok będę to robił, bo myślałem że jakoś da radę w *.html zrobić.
|
|
|
21.03.2007, 00:51:44
Post
#18
|
|
Admin Techniczny Grupa: Administratorzy Postów: 2 071 Pomógł: 93 Dołączył: 5.07.2005 Skąd: Olsztyn |
da o ile możesz używać plików htaccess poszukaj na google co należałoby wpisać
bo ja akurat nie pamietam |
|
|
26.03.2007, 00:16:25
Post
#19
|
|
Grupa: Zarejestrowani Postów: 35 Pomógł: 0 Dołączył: 23.03.2007 Ostrzeżenie: (0%) |
Yo!
Mam pytanie: przedstawione tutaj kody do logowania dzialaja ok. W momencie w ktorym uzytkownik sie zaloguje mamy zmienna sesyjna, ktora to informuje ze jest zalogowany. Wyobrazmy sobie ze do zmiennej sesyjnej przypisuje nazwe uzytkownika powiedzmy $login. Teraz mam zmienna sesyjna $_SESSION['login'] = $login; i na jej podstawie sprawdzam czy dany uzytkownik jest zalogowany. Wyczytalem jeszcze, ze w wypadku uzywania sesji trzeba wklepywac na poczatku dokumentu linijke session_start(); Hmmm...moje pytanie jest takie: W pliku logowanie.php mam skrypt ktory pobiera mi wpisana z klawiatury nazwe uzytkownika, haslo i sprawdza czy w bazie danych w tabeli UZYTKOWNICY jest w kolumnie login i haslo taka sama wartosc jak ta podana przez uzytkownika. Jesli ja znajdzie to utwozy ta zmienna sesyjna $_SESSION['login']=$login; JAK TA ZMIENNA PRZEKAZYWAC NA KOLEJNE PODSTRONY DO KTORYCH BEDE MIAL ODNOSNIKI? W URL raczej odpada bo to kazdy przeciez zobaczy Dzieki Ten post edytował idas 26.03.2007, 00:33:32 |
|
|
26.03.2007, 00:49:37
Post
#20
|
|
Grupa: Przyjaciele php.pl Postów: 2 605 Pomógł: 96 Dołączył: 22.10.2004 Skąd: UK Ostrzeżenie: (0%) |
Yo! Mam pytanie: przedstawione tutaj kody do logowania dzialaja ok. W momencie w ktorym uzytkownik sie zaloguje mamy zmienna sesyjna, ktora to informuje ze jest zalogowany. Ale jak w takim wypadku rozroznic np. uzytkownika Jas od uzytkownika Adam? Bo z tego co widze to w momencie pomyslnego logowania jest tworzona jedna i ta sama zmienna... Możesz rozróżnić tych użytkowników poprzez nadanie im odpowiednich ról. Czyli w bazie danych tworzysz sobie dwie tabele, w pierwszej masz użytkowników, a w drugiej maski dostępu ( podział na role ). Powiedzmy, że tabela użytkowników zawiera następujące pola Kod id | name | password | mask 1 Jaś md5hash 1 2 Adam md5hash 2 Natomiast tabela z maskami, będzie wyglądała w ten sposób: Kod id | name | has_admin | 1 admin 1 2 user 0 To chyba najprostrzy przykład jaki może być. No i wtedy, w momencie zalogowania dodajesz kolejną zmienną, która będzie odpowiadała za dostęp do panelu administracyjnego. $_SESSION['admin']. W ten sposób możesz rozróżnić użytkowników i przydzielać im odpowiednie role. Poszukaj na forum na ten temat już trochę o tym pisaliśmy.
W prostrzy sposób możesz tych użytkowników rozróżnić, poprzez dodanie pola has_admin w tabeli z użytkownikami, ale takie rozwiązanie jest mało optymalne, bo musisz zmienić tą wartość wtedy u każdego użytkownika, a jak widzisz z podziałem na role zmieniasz to tylko w jednym rekordzie. uff... mam nadzieję, że teraz już to rozumiesz. Idę spać. ~edit Cytat JAK TA ZMIENNA PRZEKAZYWAC NA KOLEJNE PODSTRONY DO KTORYCH BEDE MIAL ODNOSNIKI? Nie rozumiem, przecież gdy na początku każdej tej strony będziesz podawał session_start to ta zmienna będzie widoczna, więc nie ma sensu loginu inaczej tego przekazywać. Najlepiej będzie jak sam sobie to sprawdzisz. Pozdrawiam! -------------------- Najczęstsze błędy | Jak poprawnie zadać pytanie? | Serwer PHP - od czego zacząć?
SQL Injection | Hashowanie haseł | Jak działają sesje, przykłady ___ The world is yours ... |
|
|
Wersja Lo-Fi | Aktualny czas: 6.10.2024 - 11:04 |