Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Użytkownicy w mysql i kilka problemow innych:/
Forum PHP.pl > Forum > Przedszkole
chyzio
Prosze o pomoc w kilku kwestiach, nie chce gotowych rozwiazan tylko schemat postepowania.

1) W bazie danych maja byc dwa typy uzytkownikow: "uzytkownik" i "administrator".
Czy powinny byc osobne skrypty dla uzytkownikow laczacych sie z baza jako "uzytkownik" i "administrator"?

2) Jak wykonac logowanie do panelu ktory bedzie zarzadzal baza?
Czy moga byc Ci sami uzytkownicy i hasla co w uzytkownicy w bazie danych?

3) Czy skrypt instalacyjny bazy danych moze byc wywolany z haslem root'a wpisanym w owy skrypt, czy lepiej zrobic formularz ktory przekaze dane do mysql?
babejsza
Ad. 1. Baza użytkowników powinna być jedna i zawierać pole np. level. W trakcie logowania zapisujesz dane usera do np. sesji, a dostępy do podstron sprawdzasz potem poprzez porównanie.

Ad. 2. Nie do końca rozumiem?

Ad. 3. Lepiej z formularzem. Co jeżeli hasło będzie inne niż 'root'?
noels
Ad 2.

Logowanie do panelu administratora można zrealizować z wykorzystaniem tego samego formularza, którego wykorzystujesz do logowania dowolnego użytkownika. Ja wykonał bym to w następujący sposób:

1. Tworze w bazie danych tabele zawierajaca informacje o użytkownikach powiedzmy id_user, imie, nazwisko, login, haslo, typ_usera.

2. Tworze folmularz do logowania zawierajacy dwa pola login i haslo oraz przycisk zaloguj

3. Po nacisnieciu przycisku zaloguj dane z form wysylam do skryptu realizujacego proces logowania

4. W skrypcie wykonuje zapytanie do bazy pobierajace np: id_user oraz typ_usera gdzie jako warunki ustawiam haslo=$_POST['haslo'] and login=$_POST['login'] w wyniku tego zapytania zakładając ze loginy w bazie sa unikatowe zwrocony zostaje mi unikatowy identyfikator uzytkownika oraz jego typ (w przypadku blednej pary login-haslo zapytanie nie zwraca nic bo nie ma takiego uzytkownika lub jest zle haslo)

5. Na podstawie zwroconego typu uzytkownika rejestruje odpowiednie zmienne sesyjne np: id_user, typ_zalogowanego_uzytkownika

6. W zaleznosci od zwroconego typu wyswietlony zostaje np: link kierujacy do panelu admina (dla typu administrator) lub link kierujacy do strony dla zwyklych userow (dla typu zwyklego)

7. Dodatkowo przed wyswietleniem kazdej podstrony sprawdzam jaki jest aktualnie zalogowany typ uzytkownika co zapobiega otwarciu jakiejkolwiek podstrony po przez wklejenie zapamiatanego URL bez wczesniejszego zalogowania
sebik
witam, zrobilbym podobnie jak noels z tym, że po co te menu z dwoma linkami (admin, user), przeciez w tabeli "uzytkownicy" mozna dodac pole (jak napisal babejsza) np. "level" , pole to okresla uprawnienia uztkownika (np. 1 - admin, 2 - zwykly user), przy logowaniu dodatkowo mozna zapisac w sesji poziom uprawnien, tak zeby nie trzeba bylo na kazdej stronie odwolywac sie do bazy zeby to sprawdzic, czyli na kazdej stronie sprawdzasz w zmiennych sesji czy uzytkownik jest zalogowany oraz jaki ma "level"
pozdrawiam
dr_bonzo
Prosze uzupelnic tytul topika o odpowiedni tag ( szczegoly )

Inaczej topik zostanie zamkniety.
chyzio
Odpowiedni tag? Ale nie ma przycisku "pseudokod"

Dziekuje wszystkim za wypowiedzi przemysle to jeszcze ale chyba zastosuje sesyjne zmienne w ktorych beda informacje o zalogowaniu i poziomie uprawnien.


Mam jeszcze jedno pytanie: skrypt_1.php zawiera formularz dane sa przesylane do skrypt_2.php z tym ze wszystko musi sie otwierac w jednym okienku wiec uzylem funkcji
  1. <?php
  2. include('skrypt_2.php');
  3. ?>




skrypt_2.php sprawdza dane zanim zapisze je do bazy danych.

Problem w tym ze zaraz po otwarciu skrypt_1.php nastepuej sprawdzenie danych ktore dopiero za chwile zostana wprowadzone.

Jendym slowem chce zeby dane byly sprawdzane dopiero po 2 wywolaniu skryptu (czyli dopiero po przeslaniu ic z formularza)
Amorph
  1. <?php
  2. if($_GET['a']=='check'){
  3. include('skrypt_2.php');
  4. }
  5. ?>

i w formularzu:
  1. <form action='skrypt_1.php?a=check' method='post'>
chyzio
A czy jest jakas funkcja ktora wylacza wlaczony plik za pomoca funkcji
  1. <?php
  2. include()
  3. ?>
questionmark.gif

Mniej wiecej ma to byc tak: wyswietla sie formularz gdy wprowadzono bledne dane wyswietla sie okienko (formularz z napisem poopraw) po kliknieciu na popraw wracamy do formularza
Amorph
check.php>sprawdza formularz
form.php>formularz
index.php>wszystko razem

i w index:
  1. <?php
  2. if($_GET['a']=='check){
  3. include('check.php');
  4. }
  5. if($_GET['a']!='check'){
  6. include('form.php');
  7. }
  8. ?>

Powinno zadziałać tak jak chcesz smile.gif
chyzio
Jeszcze takie pytanie na ile bezpieczny jest taki sposob autoryzacji, uzytkownik i haslo trzymane w bazie jesli poda poprawne dane rejestracja zmienej sesyjnej login i teraz czy wystarczy takie sprawdzenie na kazdej stronie questionmark.gif
  1. <?php
  2. if (isset($_SESSION['Login'])){
  3. include(costam.php);
  4. }else echo'Nie masz dostepu !';
  5. ?>
noels
Wiesz, ja myśle, że to wszystko zależy do czego chcesz chronić dostęp pewnie istnieją dużo lepsze sposoby trzeba jednak odpowiedzieć sobie na pytanie czy to co chronisz jest na tyle ważne aby je stosować.

Jeżeli zacząć by się zagłębiać to można powiedzieć że kolejnym krokiem w zabezpieczaniu może być np: SSL (szyfrowane połączenie) dlatego żeby hasła, loginy i inne dane były szyfrowane aby nie można było ich przechwycić w drodze od przeglądarki do serwera

Można także przechowywać hasła w bazie danych w postaci zaszyfrowanej np: funkcją skrótu SHA1 lub MD5

wiele jest możliwości zabezpieczeń, wszystko zależy jak bardzo chcesz chronić swoje dane.
chyzio
Hasla sa wybierane z bazy danych w bazie przechowywane sa kryptograficznie zaszyfrowane algorytmem SHA1. Chodzi mi o takie sprawdzanie, na ile jest bezpieczne?
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.