1 PHP + MySQL część II
2 o MySQL raz jeszcze Zapytania do bazySELECT – do wyświetlania i wyszukiwania rekordów w wybranej tabeli INSERT – do wstawiania nowych rekordów do bazy UPDATE – do poprawy danych w istniejącym już rekordzie DELETE – do usuwania rekordów
3 Łączenie się z bazą MySQL z PHPMusimy znać: Host serwera Użytkownika Hasło Nazwę bazy danych localhost root informer informer
4 Łączenie się z bazą MySQL z PHPmysql_connect(“localhost”,”root”,”informer”); mysql_select_db(“informer”); mysql_connect($mysql_serwer,$mysql_user,$mysql_haslo); mysql_select_db($mysql_baza);
5 Podstawowe funkcje w PHP do MySQL'amysql_connect mysql_pconnect mysql_close mysql_query mysql_fetch_array mysql_num_rows mysql_real_escape_string
6 Przykładowe zapytanie z poziomu PHP$wynik=mysql_query(“SELECT * FROM `studenci`;”); echo(“Jest “.mysql_num_rows($wynik).” studentów w bazie.”); SELECT COUNT(*) FROM `studenci`;
7 mysql_fetch_array + while$wynik=mysql_query(“SELECT * FROM `studenci`;”); echo(“ Lista studentów z bazy:”);
while($student = mysql_fetch_array($wynik)){ echo(“
8 Księga gości Formularz HTML Przetworzenie danych z POST Tabela MySQLDo przechowywania wpisów
9 SELECT do wypisywania wpisów INSERT INTO do wpisywania Księga gości SELECT do wypisywania wpisów INSERT INTO do wpisywania Wszystko ok? Nie do końca...
10 XSS (Cross-site scripting) FloodKsięga gości - błędy XSS (Cross-site scripting) Flood
11 System logowania + MySQLSTART Wyświetl formularz logowania Zalogowany? TAK NIE NIE POST? TAK Uwierzytelnienie NIEPOPRAWNE POPRAWNE Wyświetl stronę dla zalogowanych Wyświetl komunikat o niepoprawnych danych
12 System logowania + MySQLSELECT `admin` FROM `uzytkownicy` WHERE `login`='...' AND `haslo`='...'; if(mysql_num_rows($wynik)!=0) to OK! $_SESSION['zalogowany']=true; Czy administrator? Wszystko ok? Nie do końca...
13 Hacking systemu logowaniaLogin: ' OR 1='1 SELECT `admin` FROM `uzytkownicy` WHERE `login`='' OR 1='1' AND `haslo`='' OR 1='1'; Atak MySQL injection
14 Zabezpieczenie przed MySQL injectionmysql_real_escape_string intval sprintf
15 Przykład bezpiecznego zapytania$imie=mysql_real_escape_string($_POST['imie']); $nazwisko=mysql_real_escape_string($_POST['nazwisko']); $sql=sprintf(“SELECT * FROM `studenci` WHERE `imie`='%s' AND `nazwisko`='%s';”, $imie, $nazwisko); $wynik = mysql_query($sql);
16 Hashowanie haseł PASSWORD() w MySQL md5()
17
18 dzialy (`id`, `tytul`, `tresc`) ustawienia (`opcja`, `wartosc`) CMS Tabele: dzialy (`id`, `tytul`, `tresc`) ustawienia (`opcja`, `wartosc`) uzytkownicy (`login`, `haslo`, `admin`) news (`id`, `tytul`, `tresc`, `kto`, `kiedy`)
19 Zabezpieczenie naszej pracyTrueBug PHP Obfuscator & Encoder