Porada: nie wszyscy mamy wygodną łączność ze studentsem
.
Oczywiście można sobie postawić na swoim komputerze jakiś serwer WWW, np.
Apache albo Nginxa. Do testowania stron w PHP wystarczy jednak użyć
serwera wbudowanego w PHP. Wywołanie
php -S komputer:port -t katalog-www(pełna nazwa tych opcji to
--server
i --docroot
).
Umieszczamy strony (także te z programami) w jakimś katalogu, na przykład
~/testy
i startujemy serwer z okna konsolowego
php -S localhost:8888 -t ~/testyi w przeglądarce wpisujemy adres
localhost:8888/hello.phpW ten sposób możemy spokojnie testować lokalnie własne strony. Na konsoli serwera będą informacje o ,,wydarzeniach''.
Przykład na najprostsze przekazywanie danych między stronami (z użyciem zmiennej ukrytej).
W naszych przykładowych programach PHP używaliśmy instrukcji
$link = pg_connect("host=lkdb dbname=mrbd user=scott password=tiger");Wątpliwości budzi umieszczanie hasła bezpośrednio w programie. Nie jest to wprawdzie nasze hasło, ale i ułatwia innym dobranie się do naszej bazy danych. Oczywiście użytownikowi
scott
daliśmy minimalne uprawnienia.
Chcąc jednak coś zmieniać w tabelach musimy użyć konta o większych możliwościach -- naszego własnego. Jeśli komuś uda się przeczytać treść naszego programu, pozna nasze hasło.
PostgreSQL pozwala tego uniknąć. W pliku .pgpass
w naszym głównym katalogu umieszczamy loginy i związane z nimi hasła
do baz danych, z którymi zamierzamy się łączyć. Każda pozycja ma być
w osobnym wierszu
serwer:port:baza:login:hasłogdzie port to zwykle 5432, a zamiast nazwy bazy możemy podać gwiazdkę, żeby wiersz dotyczył wszystkich baz. Przykład:
127.0.0.1:5432:*:ja:tajne1;hasło lkdb:5432:mrbd:ab123456:inne-tajne1;hasło
Trzeba zadbać o to, żeby nikt inny nie miał jakiegokolwiek dostępu
do tego pliku: uprawnienia rw-------
. Inaczej klient
Postgresa z obrzydzeniem ominie ten plik.
Zapytań z ogólnodostępnej części aplikacji lepiej nie robić z naszego
konta, więc nie rezygnujmy całkiem ze scotta. Normalnie nie ma on jednak
prawa oglądać naszych tabel, ponieważ po utworzeniu dostęp do tabel
ma tylko właściciel. Może on jednak uprawnić innych. Służy do tego
polecenie GRANT
GRANT przywilej ON obiekt TO kto;
Przywilej to operacja, jaką wolno będzie wykonywać, na przykład
dla tabel może to być SELECT
. Obiekt określa nazwę
obiektu. Jeśli nie jest to tabela, to trzeba ją poprzedzić nazwą
typu, np. VIEW lub SCHEMA. Kto może być loginem innego użytkownika
lub symbolem PUBLIC.
W naszym przypadku
GRANT SELECT ON Mecze TO scott;
Ale to jeszcze mało. Zanim scott będzie miał dostęp do naszej tabeli, musi najpierw wejść do naszego schematu. A tego mu na razie nie wolno. No to go wpuśćmy
GRANT USAGE ON SCHEMA ab123456 TO scott;
Teraz już scott może oglądać Wasze tabele, ale nie może ich zmieniać.
Uprawnienia odbieramy analogicznym poleceniem
REVOKE przywilej ON obiekt FROM kto;