Skocz do zawartości

zadanie w PHP - prosba o pomoc :)


Recommended Posts

Witam,

 

 

Potrzebuje pomocy z zadaniem z PHP :

 

Zad. 20 Uzupełnij witrynę z zadania 18 o możliwość dostępu do pełnej zawartości po uprzednim zalogowaniu się z zastosowaniem mechanizmu sesji PHP. Witryna powinna mieć następującą funkcjonalność:

- logowanie do witryny dla conajmniej 3 różnych użytkowników (osobny plik do logowania):

■ administrator - dostęp do wszystkich podstron serwisu,

■ zwykli użytkownicy - dostęp do jednej wybranej podstrony,

- wyświetlanie na wszystkich podstronach serwisu informacji o zalogowanym w danym momencie użytkowniku:

■ nazwa użytkownika,

■ identyfikator jego sesji,

■ dowolna inna informacja.

- wylogowanie z witryny.

 

 

Napiszcie jak to ma wygladac w php bo googluje i googluje i nie mam nic, a ze php "jest nie dla mnie" to nie bardzo wiem czego szukam..

 

Z gory dzieki za pomoc :P

Link to post
Share on other sites

Ja bym to zrobił tak:

W bazie SQL tabela z userami, hasłami (oczywiście z MD5), identyfikatorami (id, AUTO_INCREMENT, PRIMARY KEY), uprawnieniami (0,1), id sesji.

Logując przypisujesz jakieś id sesji (np. login, aktualny czas w formacie uniksowym i to wszystko w md5) i tylko na każdej podstronie sprawdzasz w bazie na podstawie id, loginu i id sesji usera czy ma uprawnienia i prosta instrukcja warunkowa jeżeli 0 to może tylko na tą jedną, a jeżeli 1 to na każdą może (na jednej, wybranej stronie dajesz if($_row[prawa] == 0 or 1) { wyświetlasz stronę, a na pozostałych dajesz tylko jeden, przy czym adminowi dajesz to jeden.

Pozdrawiam :P

Link to post
Share on other sites
  • 2 tygodnie później...

Hmm najprostszy sposób to zwykły text input, przekazywany później poprzez _POST; następnie przepisujesz sobie to z tablicy _POST do jakieś tam zmiennej powiedzmy $txt, po czym wykonujesz standardową operacje mysql_query($txt); to oczywiście najprostszy sposób, i mam wrażenie, że tego właśnie próbowałeś. Problem w tym, że to co z teorii proste w praktyce nie do końca tak jest, jeśli korzystasz z jakiegoś cudzego hostingu prawdopodobnie masz włączoną w php.ini opcje magic_quotes (jak dobrze kojarzę to w standardowej instalacji Apacha też jest ona domyślnie włączona), która ci slashuje wszelkie przekazywane dane, właśnie aby ci nikt poprzez nie, nie próbował wstrzyknąć jakiegoś zapytania sql. Aby rozwiązać taki problem wystarczy przed wykonaniem zapytania taką zmienną potraktować funkcją stripslashes(); jednak pamiętaj iż robiąc coś takiego musisz być naprawde świadom czym to grozi :)

 

Sądząc po pierwszym poście wnioskuje, że zadania te robisz na jakieś zajęcia na uczelnie, więc nie bardzo jest co dyskutować nad sensem stosowania czegoś takiego we własnych skryptach. Jednak pamiętaj iż nie powinno się czegoś takiego wykonywać poprzez takie pola edycyjne gdyż można sobie bardzo łatwo posypać bazę; nie należy też pod żadnym pozorem dawać dostępu do czegoś takiego użytkownikom, jak trafisz na kogoś złośliwego to ci wywali caluteńka baze i wtedy mamy problem :P Domyślam się tylko iż wykładowca wam zadał coś takiego abyście właśnie troche pogłówkowali nad opcją magic_qutes_gpc; funkcjami: get_magics_qutes_gpc(); addslashes() i stripslashes(), co tez mimo wszystko polecam, bo na pewno was o to w razie czego zapyta, a jest to jednak dość ważna i jedna z podstawowych metod zabezpieczania przed atakami sql_injection :D

 

Pozdrawiam i mam nadzieje ze pomogło :)

Link to post
Share on other sites

Dołącz do dyskusji

Możesz dodać zawartość już teraz a zarejestrować się później. Jeśli posiadasz już konto, zaloguj się aby dodać zawartość za jego pomocą.

Gość
Odpowiedz w tym wątku...

×   Wklejono zawartość z formatowaniem.   Usuń formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Odnośnik został automatycznie osadzony.   Przywróć wyświetlanie jako odnośnik

×   Przywrócono poprzednią zawartość.   Wyczyść edytor

×   Nie możesz bezpośrednio wkleić grafiki. Dodaj lub załącz grafiki z adresu URL.

  • Ostatnio przeglądający   0 użytkowników

    Brak zarejestrowanych użytkowników przeglądających tę stronę.

×
×
  • Dodaj nową pozycję...