Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [mysql] Po co konta uzytkownikow ?
Forum PHP.pl > Forum > Przedszkole
kkuubbaa88
chcialbym sie dowiedziec po co dokladnie robic jakies dodatkowe konta w mysql z roznymi dostepami jesli tylko jedna osoba jest adminem i prowadzi strone ? jaki jest cel w tych dodatkowych kontach ?

dzieki za info smile.gif
pozdro smile.gif
Cysiaczek
Skoro zawsze tylko jedna osoba sie zajmuje serwisem, to oczywiscie nie ma to sensu.
Ma to sens w wypadku, gdy nie wiesz, czy w przyszłości nie będzie potrzebne rozdzielenie niektórych funkcji - wtedy warto przygotować infrastrukturę tak, żeby łatwo można dodac nowych użytkowników.

Pozdrawiam.
kkuubbaa88
rozumie, ze chodzi tutaj o takich ludzi jak moderatorzy czy jakis pomocny administratorr ? a skad wtedy mam wiedziec ktore rzeczy mam im udostepnic ? jak to zrobic w mysql ? gdzie to jest ? do czego powinni miec dostep ?
Hazel
Możesz stworzyć w tabeli użytkowników dodatkowe pole typu ENUM i tam będzie napisane, kto jest kim...
Każdemu użytkownikowi można przypisać jakąs wartość - przykładowo 0 oznacza zwykłego użytkownika, 1 moderatora, a 2 administratora - i w zależności od tego pola wyświetlasz różną zawartość smile.gif

Cytat
gdzie to jest?
Tego "nie ma" w MySQL, są jedynie narzędzia do tego dry.gif
kurdak
W celach zarobkowych naprzykład.
Możesz też rozdzielić urzytkowników i np. jesli mają opłacony abonament mogą korzystać z jakiś dodatkowych funkcji.
Np. : Mieć swoją książkę telefoniczną na Twojej stronie ;]
kkuubbaa88
a jak mniej wiecej to sie robi ? rozdziela informacje ? nadaje jakies atrybuty uzytkownikowi ?
Hazel
Domyślnie możesz nadawać do tego pola wartość 0 (zwykły użytkownik), a 1 lub 2 zmienisz w bazie ręcznie dla adminów lub modów, bo przecież nie będzie ich bardzo dużo...
kkuubbaa88
zalozmy, ze tak zrobie i admin ma 2 mod ma 1 a user ma 0 smile.gif teraz gdy chcialbym wyswietlac dla kazdego osobne informacje na stronie to wszystko sie trzyma tylko za pomoca warunkow ? oraz sesji ? czy sa jakies inne metody ? lepsze ? czy cos ? smile.gif
Hazel
Generalnie wszystko za pomocą warunków i sesji, jak to napisałeś.
A jak to sobie zaimplementujesz - czy będziesz miał plik OgromnySkrypt.php, w nim 14324123590 linii kodu i sprawdzenia za każdym razem, czy to admin, czy mod, czy user, czy loser, czy też może będziesz stosował jakże przydatne ponowne stosowanie kodu, OO, dziedziczenie i rozszerzanie właściwości klas, to już Twoja sprawa...
Kręgosłupem może być na przykład:
  1. <?php
  2. switch ($wynik_zapytania['pozycja'])
  3. case 0:
  4. include ('user.php');
  5. break;
  6. case 1:
  7. include ('mod.php');
  8. break;
  9. case 2:
  10. include ('admin.php');
  11.  
  12. ?>

I to może być jedyna zawartość w pliku index.php, jeśli dobrze wszystko rozplanujesz i zastosujesz dziedziczenie klas.
kkuubbaa88
czyli co proponujesz ? zrobienie mega wielkiego kodu php ktory za kazdym razem bedzie sprawdzal kto to i wyswietlal odpowiednie elementy, czy 3 rozne strony z odpowiednia trescia ? w zaleznosci wlasnie od zalogowania na te stronie zostanie ktos przeniesiony ? czy tez w tych klasach... ale to juz musze sie douczyc na ich temat tongue.gif
Hazel
Jasne, że trzy różne strony z odpowiednią treścią...
Proponuję napisać klasę Strona_uzyt, która będzie wyświetlała stronę użytkownika, następnie klasę Strona_mod, która będzie dziedziczyć od klasy Strona_uzyt i rozszerzać ją o niektóre operacje dostępne tylko dla moderatorów, no i klasę Strona_admin, dziedziczącą od Strona_mod i rozszerzającą ją o funkcje administratorów. No i te klasy zawrzeć w odrębnym pliku, a tworzyć ich egzemplarze i wywoływac ich operacje w plikach user.php, mod.php i admin.php. Tak ja bym to zrobił.
kkuubbaa88
masz racje smile.gif to bedzie najlepsze wyjscie smile.gif a mam jeszcze pytanie smile.gif jakie przywileje powinno miec konto w mysql, ktore bedzie na zalogowanych uzytkownikow ? aby mogli oblugiwac np ksiege gosci, sondy, i cos dodac od siebie ? konto dla niezalogowanych wiem, ze nie bedzia mialo zadnych mozliwosci... nic dodawac nic pisac i w ogole... ale user ?
Hazel
To już zależy od tego, co przewidujesz - jakie zapytania ma wykonywać użytkownik. Jak przypuszczam, będą to: SELECT, INSERT, UPDATE I DELETE. Ale ja w swoich aplikacjach czasem zmuszony jestem nadać użytkownikom przywilej ALTER, choćby do automatycznego zmieniania autoinkrementacji tabeli po usunięciu rekordu (choć ALTER teoretycznie jest przywilejem typowo administracyjnym). Jednak myślę, że 4 w/w przywileje powinny wystarczyć w większości przypadków. Pamiętaj też o zasadzie najmniejszego przywileju - jeśli w aplikacji użytkownik nigdy nie wykonuje na przykład zapytań UPDATE (co zdarza się dość często, szczególnie w małych aplikacjach), to nie należy nadawać mu przywileju UPDATE. Dość oczywiste, jak się pomyśli, ale wielu programistów "z zasady" nadaje 4 w/w przywileje użytkownikom, co jest błędem.

A co do tego, co napisałeś - księga gości i sondy - na pewno SELECT i INSERT, a jeśli przewidujesz również możliwość kasowania i modyfikacji swoich postów/głosów w sondzie, to także odpowiednio DELETE i UPDATE.

Pozdrawiam.
kkuubbaa88
Dzieki smile.gif Wszystko Mi Sie Przyda smile.gif Bardzo Mi pomogles smile.gif Mam Tylko JEszcze jedno male pytanie smile.gif otoz mam cala liste tych przywilejow smile.gif niestety nie wiem dokladnie co niektore znacza sad.gif

ALTER
CREATE TEMPORARY TABLES
CREATE VIEW
DELETE
DROP
FILE
INDEX
INSERT
LOCK TABLES
PROCESS
RELOAD
SELECT
SHOW DATABASES
SHOW VIEW
SHUTDOWN
SUPER
UPDATE

znasz moze jakas strone gdzie to jest opisane co za co jest odpowiedzialne ? albo jesli moglbys mi to tak troche przetlumaczyc/wytlumaczyc bylbym wdzieczny smile.gif

pozdrawiam smile.gif
Hazel
Chciałem Ci napisać, że 5 minut googlowania, ale... nie znalazłem takiej strony, ku mojemu zdziwieniu tongue.gif nawet w obcych językach chyba nic nie było (znaczy na pewno było, ale nie chciało mi sie szukac na 20 stronie wśród wyników tongue.gif)
To, co wrzuciłeś, nie jest pełną listą przywilejów, ale to co ja Ci daję, też nią nie jest (zależy jeszcze, co traktować jako przywilej).

ALL - nie wiadomo, czy to przywilej, czy nie, zależy jak patrzeć tongue.gif Jest równoznaczny z przywilejem ALL PRIVILEGES i oznacza nadanie użytkownikowi wszystkich przywilejów (występuje w poleceniu GRANT, które też jest przywilejem tongue.gif).
Jego przeciwieństwem jest "przywilej" (?) USAGE, który oznacza nienadanie użytkownikowi żadnego przywileju (użytkownik z przywilejem USAGE może sie tylko zalogować i wylogować, a przywileje zazwyczaj nadaje mu się w tym czasie, ale to inna bajka - może przecież być potrzebny komuś użytkownik bez przywilejów, chociaż nie wiem do czego tongue.gif)

ALL PRIVILEGES - patrz wyżej tongue.gif

ALTER - przywilej administracyjno-userski, pozwala na zmianę struktury istniejących już tabel, czyli dodawanie i usuwanie kolumn z tabel, zmianę nazw kolumn/tabel, zmianę typów danych w kolumnach, zezwala na używanie polecenia ALTER.

CREATE - przywilej administraycjno-userski, pozwala na tworzenie nowych baz i tabel, zezwala na używanie odpowiednio poleceń CREATE TABLE i CREATE DATABASE.

CREATE TEMPORARY TABLES - przywilej administracyjno-userski, pozwala na tworzenie tabel tymczasowych, zezwala na używanie polecenia CREATE TEMPORARY TABLE.

CREATE USER - przywilej administracyjno-userski, pozwala na tworzenie nowych użytkowników, usuwanie ich, zmianę ich nazwy oraz odbieranie przywilejów, zezwala na używanie odpowiednio poleceń: CREATE USER, DROP USER, RENAME USER I REVOKE.

CREATE VIEW - przywilej administracyjno-userski, pozwala na używanie polecenia CREATE VIEW, które służy do tworzenia nowego widoku.

DELETE - przywilej typowo userski, pozwala na usuwanie z tabeli istniejących wierszy, zezwala na używanie polecenia DELETE.

DROP - przywilej administracyjno-userski, pozwala na usuwanie baz i tabel, zezwala na używanie polecenia DROP.

FILE - przywilej typowo administracyjny, pozwala na wczytywanie danych z plików do tabel i z tabel do plików, zezwala na używanie poleceń LOAD INTO OUTFILE oraz LOAD DATA INFILE.

GRANT - tutaj też trudno to w sumie nazwać przywilejem, a jeśli juz to rekurencyjnie, bo... GRANT powala na nadawanie przywilejów, czyli używanie polecenia GRANT.

INDEX - przywilej administracyjno-userski, pozwala na tworzenie i usuwanie indeksów w tabelach, zezwala na używanie poleceń CREATE INDEX i DROP INDEX.

INSERT - przywilej typowo userski, pozwala na wstawianie nowych wierszy do tabel, zezwala na używanie polecenia INSERT.

LOCK TABLES - przywilej administracyjny, zezwala na używanie polecenia LOCK TABLES, służącego do zablokowaniu jakiejś tabeli podczas tworzenia kopii zapasowej.

PROCESS - przywilej typowo administracyjny, pozwala na śledzenie procesów serwera i przerywanie ich.

RELOAD - przywilej typowo administracyjny, pozwala na odświeżenie przywilejów, tabel, dziennika zdarzeń, listy nazw komputerów i takie tam, przydaje się do przeładowania tabel, które zawierają informacje na temat praw dostępu, aby nie trzeba było kończyć pracy serwera i wznawiać jej ponownie po zmianie uprawnień, zezwala na używanie polecenia FLUSH.

SELECT - przywilej typowo userski, pozwala na wyszukiwanie wierszy z tabel, zezwala na używanie polecenia SELECT.

SHOW DATABASES - przywilej administracyjno-userski, pozwala na używanie polecenia SHOW DATABASES, służącego do wyświetlania nazw wszystkich baz znajdujących się na serwerze.

SHOW VIEW - przywilej administracyjno-userski, pozwala na używanie polecenia SHOW VIEW, służącego do pokazywania wszytskich widoków.

SHUTDOWN - przywilej typowo administracyjny, pozwala na zakończenie pracy serwera MySQL.

SUPER - przywilej typowo administracyjny, pozwala na definiowanie triggerów.

UPDATE - przywilej typowo userski, pozwala na zmianę wartości kolumn w wierszach tabel, zezwala na używanie polecenia UPDATE.

USAGE - patrz ALL.

WITH GRANT OPTION - też nie wiadomo, czy to przywilej, czy nie, ważne, że chodzi o to, że użytkownik z przywilejem takim może nadawać innym użytkownikom takie przywileje, jakie sam ma. Raczej nie polecam dla mało skomplikowanych systemów, szczerze to nigdy nie stosowałem - może mój błąd.


To chyba tyle, mało o tym w necie jest, może komuś się przyda...
Podział na przywileje administracyjne i userskie (a tym bardziej administracyjno-userskie, które są moim własnym tworem), jest bardzo umowny - nikt nie mówi, że użytkownik nie może mieć nadanego przywileju SHUTDOWN, a czy jest to niebezpieczne, musi zdecydować sam administrator... jak chce nadać - niech se nadaje tongue.gif

Obowiązuje oczywiście zasada najmniejszego przywileju, która mówi, że użytkownik powinien mieć TYLKO takie przywileje, które są mu w danej chwili potrzebne - pisałem o tym niżej.

Pzdr.
kkuubbaa88
dobrze smile.gif mam uzytkownika smile.gif zrobilem go przez wsadzenie do tabeli user wszystkich danych smile.gif obecnie ma tylko te 4 podstawowe przywileje smile.gif a gdzie to mole enum wsadzic ? z wartoscia 1 ? a potem jak go na stronie rozroznic ? czyli przeczytac ? odczytac ? sprawdzic ?
Cienki1980
Cytat(kkuubbaa88 @ 3.09.2007, 10:00:30 ) *
dobrze smile.gif mam uzytkownika smile.gif zrobilem go przez wsadzenie do tabeli user wszystkich danych smile.gif obecnie ma tylko te 4 podstawowe przywileje smile.gif a gdzie to mole enum wsadzic ? z wartoscia 1 ? a potem jak go na stronie rozroznic ? czyli przeczytac ? odczytac ? sprawdzic ?


@kkuubbaa88 może teraz wyjadę jak Filip z konopi ale pozwól, że zapytam Ciebie w jakim celu tworzysz użytkowników w mysqlu questionmark.gif

Jeżeli chodzi Ci o użytkowników jakiejś strony/ portalu / systemu internetowego, którzy mają się tam logować i mają mieć tam odpowiednie uprawnienia do różnych modułów to tworzenie użytkownika do każdej osoby rejestrującej się jest pomyłką.
W takich sytuacjach jest jeden użytkownik w bazie danych ( dane tego użytkownika podajesz do funkcji PHPowych łączących się z bazą danych ) a osoby rejestrujące się to nowe rekordy w bazie danych.

Tak możesz zrobić o wiele dokładniejsze zarządzanie uprawnieniami do poszczególnych modułów strony ( systemu/ portalu itp ) jak i jakie czynności mogą wykonywać w danych modułach ( SELECT INSERT UPDATE DELETE )

Jeżeli jednak pytasz o tworzenie użytkowników w MySQLu nie z zamiarem wykorzystania tychże użytkowników na stronie / portalu / systemie to wtedy nie zawracaj sobie głowy moją wypowiedzią biggrin.gif
Hazel
@Cienki1980
Ej no, bez przesady, wyjechałeś jakbyś na Marsie mieszkał, myślałem, że to oczywiste jest sciana.gif
A może jednak nie...

Więc powtórzę po Tobie, że:

@kkuubbaa88
użytkownik MySQLa nie ma nic wspólnego z rejestracją użytkowników na stronie/grze/portalu...

A pole typu ENUM po prostu dodajesz do tabeli użytkowników...
Cienki1980
Cytat(Hazel @ 3.09.2007, 10:55:42 ) *
@Cienki1980
Ej no, bez przesady, wyjechałeś jakbyś na Marsie mieszkał, myślałem, że to oczywiste jest sciana.gif
A może jednak nie...


Ja przeczytałem dokładnie to co pisze kkuubbaa88 a w szczególności ten post:
Cytat
masz racje smile.gif to bedzie najlepsze wyjscie smile.gif a mam jeszcze pytanie smile.gif jakie przywileje powinno miec konto w mysql, ktore bedzie na zalogowanych uzytkownikow ? aby mogli oblugiwac np ksiege gosci, sondy, i cos dodac od siebie ? konto dla niezalogowanych wiem, ze nie bedzia mialo zadnych mozliwosci... nic dodawac nic pisac i w ogole... ale user ?


Dlatego wolałem od razu napisać niż pchać w złą stronę
Hazel
No słusznie, ja też to tak odebrałem sciana.gif sadsmiley02.gif
kkuubbaa88
stworzylem konto user z 4 przywilejami tylko w celu laczenia sie z baza danych na stronie... nei chce sie laczyc przez np. roota ktory ma wszystkie mozliwe przywileje... dobrze wiem ze nowych uzytkownikow zapisuje sie w tabeli...

a co do tego pola to mam pytanie takie... z tym calym rozroznianiem... jak sprawdzic ten numer i wykozystac ten kod z przeniesieniem na odpowiednia strone ?



Hazel
pobierasz odpowiedni wiersz funkcją mysql_fetch_array()" title="Zobacz w manualu PHP" target="_manual i wtedy masz w tablicy element o nazwie takiej jak nazwa tego pola, czyli na przykład $wiersz['admin']...
I porównujesz, czy jest równy 0, 1, czy 2...
Na początku Ci już to pisałem tongue.gif
kkuubbaa88
hmmm... juz wiem smile.gif tylko teraz pytanie jak w koncu to robic ? porownujac 0 1 2 czy za pomoca sesji ? czy dwa naraz ?
Hazel
  1. <?php
  2. switch ($wiersz['admin'])
  3. {
  4. case 0:
  5. // user
  6. $_SESSION['zwykly_uz'] = $_POST['login'];
  7. break;
  8. case 1:
  9. // moderator
  10. $_SESSION['mod'] = $_POST['login'];
  11. break;
  12. case 2:
  13. // administrator
  14. $_SESSION['admin'] = $_POST['login'];
  15. }
  16. ?>


Inaczej się nie da za bardzo, możesz jeszcze tylko za każdym razem pobierać z bazy wiersz i sprawdzać pole admin, ale to bardzo wolny sposób.
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.