Pobieranie prezentacji. Proszę czekać

Pobieranie prezentacji. Proszę czekać

Użytkownicy i przywileje Sesja - przykład Błędy Komunikacja międzyskryptowa Wykład 83PD Technologie internetowe.

Podobne prezentacje


Prezentacja na temat: "Użytkownicy i przywileje Sesja - przykład Błędy Komunikacja międzyskryptowa Wykład 83PD Technologie internetowe."— Zapis prezentacji:

1 Użytkownicy i przywileje Sesja - przykład Błędy Komunikacja międzyskryptowa Wykład 83PD Technologie internetowe

2 MySQL rozróżnia cztery poziomy przywilejów użytkowników. Dane zapisywane są w bazie mysql w odpowiednich tabelach

3 poziom globalny (tabela user) – dostęp do wszystkich baz, poziom bazy danych (tabela db) – dostęp do wybranych baz poziom tabel (tabela tables_priv) – dostęp do wybranych tabel bazy, poziom pól (tabela columns_priv) – dostęp do wybranych pól tabeli bazy.

4 Polecenie GRANT nadawanie przywilejów GRANT lista_przywilejów [lista_pól] ON baza. tabela TO IDENTIFIED BY 'haslo' WITH GRANT OPTION;

5 GRANT USAGE ON ksiegarnia.ksiazki TO uzytkownik IDENTIFIED BY 'abc11'; Przykładowo:

6 Lista przywilejów: PrzywilejOpis USAGE Nie nadaje żadnych przywilej ó w ALL albo ALL PRIVILEGES Nadaje wszystkie przywileje SELECTPozwala na wyszukiwanie INSERTPozwala na wstawianie wierszy do tabel UPDATE Pozwala na zmianę wartości p ó l DELETE Pozwala na usuwanie rekord ó w

7 INDEX Pozwala na tworzenie i usuwanie indeks ó w ALTERPozwala na dokonywanie zmian w strukturze tabel, nazw i typ ó w CREATEPozwala na tworzenie baz i tabel DROPPozwala na usuwanie baz i tabel GRANTPozwala na nadawanie przywilejów innym – tylko przez GRANT OPTION

8 Polecenie REVOKE służy do odbierania przywilejów. Składnia ogólna to: REVOKE przywileje ON obiekt FROM nazwa_użytkownika; REVOKE update, select ON ksiazki FROM b; np.: Polecenie REVOKE

9 Przykłady: GRANT USAGE ON * to a;{bez hasła) GRANT USAGE ON * to a identified by 'a'; GRANT SELECT ON * to b identified by 'b'; REVOKE UPDATE, SELECT ON ksiazki FROM b;

10 ALBO... INSERT INTO user SET host='%', user='n1', password ='alfa123'; INSERT INTO user SET host='%', user='n2', password =password('6789'); {szyfrowanie hasła}

11 Ale wpisy do tabel bazy MYSQL po podaniu polecenia: mysql> FLUSH PRIVILEGES;

12 Polecenie SHOW GRANTS Sprawdzenie przywilejów np. SHOW GRANTS FOR root;

13 Przekazywanie danych między plikami Metody: -zapis i odczyt z pliku na serwerze -umieszczenie w COOKIE po stronie klienta -zapis i odczyt z bazy danych -umieszczenie w tablicy _SESSION -przekaz danych roboczych metodami GET i POST (formularz i hiperłącze)

14 Przykłady sesji Zawsze przed wysłaniem nagłówków!

15 drugi.php

16 trzeci.php

17 Formularz – tablice $_POST lub $_GET POST ze skryptami PHP wstawiającym wartość zmiennej x1 a x2 przez ukryte pole "> plik wynik_form.php

18 plik wynik_hip.php Hiperłącze

19 Przekazanie tablicy przez metodę GET dla URL

20 Problemy i kłopoty….. Uniemożliwienie zakupu ostatniego zapasu dwóch klientów widzi dostępność ostatniego egzemplarza obaj decydują się na zakup Uniemożliwienie podwójnego uzupełniania zapasów przez administratorów Problemy współbieżności Dostęp przez wielu użytkowników (też administratorów) Jednorodność ciągu operacji - transakcja

21 Zapewnia, że przerwanie wykonania ciągu operacji (przez błąd lub awarię) nie spowoduje utraty spójności bazy danych. System zarządzania bazą danych (SZDB) winien przywrócić bazę do stanu sprzed startu transakcji. Mechanizm transakcji Przykład: Przelew bankowy – operacje elementarne: 1.Odjęcie z konta A 2.Dodanie do konta B MySQL nie posiada mechanizmów obsługi transakcji, trzeba je samodzielnie oprogramować

22 Zagubiona aktualizacja użytkownik A – odczyt użytkownik B – aktualizacja A – aktualizacja (zmiana tego co zrobił B) Brudny odczyt A – aktualizacja B – aktualizacja A – cofnięcie aktualizacji (niemożliwe bo już inne dane) Błędne podsumowanie A – aktualizacja B – czytanie i sumowanie (błędy) Niepowtarzalny odczyt A – odczyt B – aktualizacja A – ponowny odczyt w celu weryfikacji (dwie wartości) Ratunek -> blokowanie tabel (aż do ostatecznej akceptacji) Przyczyny błędów

23 ..... // potrzebny formularz do wpisania nr_kl $QUERY= " LOCK TABLES pozycje READ, sprzedaz WRITE, klienci READ"; …. //zapytanie SELECT dla wszystkich tabel $zap1="SELECT sum(cena*ilosc) FROM pozycje, sprzedaz, klienci WHERE klienci.id_kl=sprzedaz.id_kl AND sprzedaz.id_zam=pozycje.id_zam AND klienci.Id_kl=".$_POST['nr_kl']; $wynik=mysql_query($zap1,$polaczenie); $wiersz =mysql_fetch_array($wynik); //zapytanie UPDATE dla tabeli SPRZEDAZ if ($wiersz[SUM(cena*ilosc)]>$minimum) { $zap2="UPDATE sprzedaz SET upust=10 WHERE Id_kl=".$nr_kl; $wynik2=mysql_query($zap2,$polaczenie); } $QUERY = " UNLOCK TABLES" ; Przykład: Uwzględnienie upustu

24 Skrypty kombinowane – html+php Niebezpieczeństwo dwukrotnego dodania tego samego wiersza w tabeli w przypadku: RELOAD – Odśwież w przeglądarce BACK – Wstecz lub FORWARD - Dalej Wybór ponowny z Ulubionych (zakładek) Jeśli UPDATE to nie ma niebezpieczeństwa (najwyżej błąd MySQL) Jak temu zaradzić? Używanie metody POST – mniej podatna na problem odświeżania Używanie funkcji nagłówkowej header – wymuszenie przekazania do innego pliku Problem odświeżania

25 Prawidłowo 2 skrypty: index.php mysql_insert_id (polaczenie) – znajduje wartość klucza podstawowego dla dopisanego rekordu,, o ile wstawiono 1 rekord o kluczu typu AUTO_INCREMENT

26 skrypt potw.php Potwierdzenie


Pobierz ppt "Użytkownicy i przywileje Sesja - przykład Błędy Komunikacja międzyskryptowa Wykład 83PD Technologie internetowe."

Podobne prezentacje


Reklamy Google