Cyfroteka.pl

klikaj i czytaj online

Cyfro
Czytomierz
00113 005455 13254379 na godz. na dobę w sumie
CodeIgniter. Zaawansowane tworzenie stron w PHP - książka
CodeIgniter. Zaawansowane tworzenie stron w PHP - książka
Autor: Liczba stron: 272
Wydawca: Helion Język publikacji: polski
ISBN: 978-83-246-4964-8 Data wydania:
Lektor:
Kategoria: ebooki >> komputery i informatyka >> webmasterstwo >> php - programowanie
Porównaj ceny (książka, ebook (-25%), audiobook).

Wolisz proste rozwiązania? Możesz liczyć na CodeIgniter!

CodeIgniter to ni mniej, ni więcej, tylko doskonały framework, którzy przyda się wszystkim programistom języka PHP. Pozwala on na szybkie i efektywne zaimplementowanie tych elementów stron czy aplikacji internetowych, których samodzielne przygotowanie jest trudne i czasochłonne. Jego główne zalety to niewielkie wymagania co do serwera, na którym ma działać oprogramowanie, zapewnienie logicznego i wygodnego rozdziału elementów strony, brak potrzeby konfiguracji oraz świetna dokumentacja i życzliwa społeczność użytkowników, chętnie dzielących się z innymi swoim doświadczeniem w pracy z programem.

Ta książka, przeznaczona zarówno dla początkujących, jak i zaawansowanych programistów PHP pozwoli Ci zapoznać się z wieloma aspektami używania CodeIgniter. Znajdziesz tu informacje o instalacji frameworka i jego strukturze. Zobaczysz, jak działają klasy systemu, jakie funkcje oraz metody warto wykorzystać w różnych sytuacjach i jak działają sterowniki systemu do bazy danych. Będziesz mógł także przećwiczyć tworzenie aplikacji z użyciem tego zestawu bibliotek. Programowanie z frameworkiem CodeIgniter to czysta przyjemność!

Zyskaj czas z CodeIgniter!

Znajdź podobne książki Ostatnio czytane w tej kategorii

Darmowy fragment publikacji:

Wszelkie prawa zastrzeżone. Nieautoryzowane rozpowszechnianie całości lub fragmentu niniejszej publikacji w jakiejkolwiek postaci jest zabronione. Wykonywanie kopii metodą kserograficzną, fotograficzną, a także kopiowanie książki na nośniku filmowym, magnetycznym lub innym powoduje naruszenie praw autorskich niniejszej publikacji. Wszystkie znaki występujące w tekście są zastrzeżonymi znakami firmowymi bądź towarowymi ich właścicieli. Autor oraz Wydawnictwo HELION dołożyli wszelkich starań, by zawarte w tej książce informacje były kompletne i rzetelne. Nie biorą jednak żadnej odpowiedzialności ani za ich wykorzystanie, ani za związane z tym ewentualne naruszenie praw patentowych lub autorskich. Autor oraz Wydawnictwo HELION nie ponoszą również żadnej odpowiedzialności za ewentualne szkody wynikłe z wykorzystania informacji zawartych w książce. Redaktor prowadzący: Ewelina Burska Projekt okładki: Michał Wójcik Materiały graficzne na okładce zostały wykorzystane za zgodą Shutterstock. Wydawnictwo HELION ul. Kościuszki 1c, 44-100 GLIWICE tel. 32 231 22 19, 32 230 98 63 e-mail: helion@helion.pl WWW: http://helion.pl (księgarnia internetowa, katalog książek) Drogi Czytelniku! Jeżeli chcesz ocenić tę książkę, zajrzyj pod adres http://helion.pl/user/opinie?codeig Możesz tam wpisać swoje uwagi, spostrzeżenia, recenzję. Materiały do książki znajdują się pod adresem: ftp://ftp.helion.pl/przyklady/codeig.zip ISBN: 978-83-246-4964-8 Copyright © Helion 2013 Printed in Poland. • Kup książkę • Poleć książkę • Oceń książkę • Księgarnia internetowa • Lubię to! » Nasza społeczność Spis treĈci Wstöp ............................................................................................ 11 Rozdziaä 1. Instalacja CodeIgnitera na serwerze ............................................... 13 Instalacja oprogramowania na serwerze ......................................................................... 14 Aktualizacja CodeIgnitera .............................................................................................. 14 Praca z ksiąĪką ............................................................................................................... 15 Rozdziaä 2. Korzystanie z frameworku ............................................................... 17 Model, widok, kontroler ................................................................................................. 17 Adresy URL ................................................................................................................... 18 Adresy URL dla wyszukiwarek ...................................................................................... 18 Kontroler (controller) ..................................................................................................... 19 Definicja domyĞlnego kontrolera (default_controller) ............................................. 19 Metody prywatne (private) ....................................................................................... 20 Umieszczanie kontrolerów w folderach ................................................................... 20 Automatyczne áadowanie (__construct) ................................................................... 21 Nazwy zastrzeĪone ................................................................................................... 21 Widok (view) .................................................................................................................. 21 àadowanie widoku do kontrolera (load- view) ....................................................... 22 àadowanie kilku widoków ....................................................................................... 23 Umieszczanie widoków w folderach ........................................................................ 23 Dodawanie danych do widoku ................................................................................. 23 Przekazywanie widoków jako danych ...................................................................... 24 Model (model) ................................................................................................................ 24 Pierwszy model ........................................................................................................ 25 àadowanie modelu (load- model) ........................................................................... 25 Umieszczanie modeli w katalogu ............................................................................. 26 DostĊp do metod modelu .......................................................................................... 26 àadowanie bibliotek (load- library) ............................................................................... 27 àadowanie klas pomocniczych (load- helper) ............................................................... 28 àadowanie sterowników (load- driver) ......................................................................... 28 Automatyczne áadowanie zasobów ................................................................................. 29 Routowanie URL ............................................................................................................ 29 Ustanawianie wáasnych reguá ................................................................................... 30 ZastrzeĪone nazwy wáaĞciwoĞci ............................................................................... 30 Obsáuga báĊdów .............................................................................................................. 31 Funkcja show_error() ............................................................................................... 31 Funkcja show_404() ................................................................................................. 32 Funkcja log_message() ............................................................................................. 32 4 CodeIgniter. Zaawansowane tworzenie stron w PHP Zapisywanie stron w plikach tymczasowych (cache) ..................................................... 33 Metoda cache() ......................................................................................................... 34 Usuwanie plików tymczasowych ............................................................................. 34 BezpieczeĔstwo .............................................................................................................. 34 Zabezpieczanie adresów URL .................................................................................. 35 Opcja register_globals .............................................................................................. 35 Opcja error_reporting ............................................................................................... 35 Opcja magic_quotes_runtime ................................................................................... 36 Najlepsze praktyki .................................................................................................... 36 Rozdziaä 3. Klasy systemowe ........................................................................... 37 WydajnoĞü systemu (benchmark) ................................................................................... 37 WyĞwietlanie informacji o zuĪyciu pamiĊci podczas generowania strony ............... 38 Kalendarz (calendar) ....................................................................................................... 39 Metoda generate() .................................................................................................... 39 Wyszczególnianie dat w kalendarzu ......................................................................... 40 Opcje wyĞwietlania kalendarza ................................................................................ 41 Opcje konfiguracji kalendarza .................................................................................. 42 Dostosowywanie wyglądu kalendarza ...................................................................... 42 Konfiguracja (config) ..................................................................................................... 43 Metoda load() ........................................................................................................... 44 Metoda item() ........................................................................................................... 44 Metoda set_item() .................................................................................................... 45 Metoda site_url() ...................................................................................................... 45 Metoda base_url() .................................................................................................... 46 Metoda system_url() ................................................................................................ 46 E-mail (email) ................................................................................................................. 46 Metoda from() .......................................................................................................... 47 Metoda reply_to() ..................................................................................................... 47 Metoda cc() .............................................................................................................. 47 Metoda bcc() ............................................................................................................ 47 Metoda subject() ....................................................................................................... 47 Metoda message() .................................................................................................... 48 Metoda set_alt_message() ........................................................................................ 48 Metoda clear() .......................................................................................................... 48 Metoda attach() ........................................................................................................ 48 Metoda send() ........................................................................................................... 48 Metoda print_debugger() .......................................................................................... 48 Ustawianie zawijania wierszy w treĞci wiadomoĞci ................................................. 49 Ustawianie opcji ....................................................................................................... 49 Opcje wysyáania wiadomoĞci e-mail ........................................................................ 49 Kodowanie i szyfrowanie (encrypt) ................................................................................ 50 Metoda encode() ....................................................................................................... 51 Metoda decode() ....................................................................................................... 52 Metoda sha1() ........................................................................................................... 53 Przesyáanie plików na serwer (upload) ........................................................................... 53 Ustawianie preferencji .............................................................................................. 55 Metoda do_upload() ................................................................................................. 57 Metoda display_errors() ........................................................................................... 57 Metoda data() ........................................................................................................... 57 Walidacja formularzy (form_validation) ........................................................................ 58 Metoda set_rules() .................................................................................................... 62 Metoda run() ............................................................................................................. 62 Twoja wáasna metoda ............................................................................................... 63 Spis treĈci 5 Funkcja form_error() ................................................................................................ 64 Funkcja validation_errors() ...................................................................................... 64 FTP (ftp) ......................................................................................................................... 64 Metoda connect() ...................................................................................................... 65 Metoda upload() ....................................................................................................... 66 Metoda download() .................................................................................................. 66 Metoda rename() ...................................................................................................... 67 Metoda move() ......................................................................................................... 68 Metoda delete_file() ................................................................................................. 68 Metoda delete_dir() .................................................................................................. 69 Metoda list_files() .................................................................................................... 70 Metoda mirror() ........................................................................................................ 70 Metoda mkdir() ........................................................................................................ 71 Metoda chmod() ....................................................................................................... 72 Metoda close() .......................................................................................................... 72 Generowanie tabel HTML (table) ................................................................................... 73 Metoda generate() .................................................................................................... 74 Metoda set_caption() ................................................................................................ 74 Metoda set_heading() ............................................................................................... 75 Metoda add_row() .................................................................................................... 75 Metoda make_columns() .......................................................................................... 75 Metoda set_template() .............................................................................................. 76 Metoda set_empty() .................................................................................................. 76 Metoda clear() .......................................................................................................... 77 Metoda function() ..................................................................................................... 78 Wprowadzanie danych (input) ........................................................................................ 79 Filtrowanie XSS ....................................................................................................... 80 Wykorzystywanie $_POST, $_COOKIE i $_SERVER ........................................... 80 Metoda get() ............................................................................................................. 80 Metoda get_post() .................................................................................................... 81 Metoda set_cookie() ................................................................................................. 81 Metoda ip_address() ................................................................................................. 82 Metoda valid_ip() ..................................................................................................... 83 Metoda user_agent() ................................................................................................. 83 Metoda request_headers() ........................................................................................ 84 Metoda get_request_header() ................................................................................... 84 àadowanie klas i przeksztaácanie ich w obiekty ............................................................. 85 Metoda library() ....................................................................................................... 85 Metoda view() .......................................................................................................... 86 Metoda model() ........................................................................................................ 86 Metoda database() .................................................................................................... 87 Metoda helper() ........................................................................................................ 87 Metoda language() .................................................................................................... 87 JĊzyki (lang) ................................................................................................................... 88 Tworzenie pliku z wersją jĊzykową ......................................................................... 88 Metoda load() ........................................................................................................... 89 Metoda line() ............................................................................................................ 89 Automatyczne áadowanie plików jĊzykowych ......................................................... 90 Generowanie strony (output) .......................................................................................... 90 Metoda set_output() ................................................................................................. 90 Metoda set_content_type() ....................................................................................... 90 Metoda set_header() ................................................................................................. 91 Metoda set_status_header() ...................................................................................... 91 Metoda enable_profiler() .......................................................................................... 91 6 CodeIgniter. Zaawansowane tworzenie stron w PHP Dzielenie treĞci (pagination) ........................................................................................... 91 Metoda initialize() .................................................................................................... 92 Metoda create_links() ............................................................................................... 93 Opcje podziaáu treĞci na strony ................................................................................ 93 BezpieczeĔstwo (security) .............................................................................................. 95 Filtrowanie XSS ....................................................................................................... 95 Metoda xss_clean() .................................................................................................. 95 Metoda sanitize_filename() ...................................................................................... 96 Ochrona przed atakami typu CSRF .......................................................................... 97 Sesja (session) ................................................................................................................ 97 Metoda userdata() ..................................................................................................... 98 Metoda set_userdata() .............................................................................................. 98 Metoda all_userdata() ............................................................................................... 99 Metoda unset_userdata() ........................................................................................ 100 Ustawienia sesji ...................................................................................................... 100 Wygląd strony (parser) ................................................................................................. 101 Metoda parse() ....................................................................................................... 102 URI (uri) ....................................................................................................................... 103 Metoda segment() ................................................................................................... 103 Metoda uri_to_assoc() ............................................................................................ 103 Metoda assoc_to_uri() ............................................................................................ 104 Przeglądarka uĪytkownika (user_agent) ....................................................................... 105 Identyfikacja przeglądarki uĪytkownika ................................................................. 105 Metoda is_browser() .............................................................................................. 106 Metoda is_mobile() ................................................................................................ 107 Metoda is_robot() ................................................................................................... 107 Metoda is_referral() ................................................................................................ 108 Metoda browser() ................................................................................................... 108 Metoda version() .................................................................................................... 109 Metoda mobile() ..................................................................................................... 109 Metoda robot() ....................................................................................................... 110 Metoda platform() .................................................................................................. 110 Metoda referrer() .................................................................................................... 111 Metoda agent_string() ............................................................................................ 111 Metoda accept_lang() ............................................................................................. 112 Metoda accept_charset() ......................................................................................... 113 Kompresja plików (zip) ................................................................................................ 113 Metoda add_data() .................................................................................................. 114 Metoda add_dir() .................................................................................................... 114 Metoda read_file() .................................................................................................. 115 Metoda read_dir() ................................................................................................... 115 Metoda archive() .................................................................................................... 116 Metoda download() ................................................................................................ 116 Metoda get_zip() .................................................................................................... 117 Metoda clear_data() ................................................................................................ 117 Rozdziaä 4. Sterowniki systemu do obsäugi bazy danych .................................. 119 Praca z bazą danych ...................................................................................................... 119 Wczytanie sterownika (load- database) ....................................................................... 120 Poáączenie z bazą danych — konfiguracja danych dostĊpowych ................................. 120 Poáączenie z bazą danych (database) ............................................................................ 122 Metoda reconnect() ....................................................................................................... 123 Metoda close() .............................................................................................................. 124 Wykonywanie zapytania (query) .................................................................................. 125 Spis treĈci 7 Metoda query() ............................................................................................................. 126 Zabezpieczanie danych (escape, escape_str i escape_like_str) ..................................... 126 Bezpieczne zapytania (query) ....................................................................................... 127 Generowanie rezultatów zapytania ............................................................................... 128 Metoda result() ....................................................................................................... 128 Metoda result_array() ............................................................................................. 129 Metoda num_rows() ............................................................................................... 129 Metoda free_result() ............................................................................................... 130 Metoda insert_id() .................................................................................................. 131 Metoda affected_rows() ......................................................................................... 131 Metoda count_all() ................................................................................................. 132 Metoda platform() .................................................................................................. 132 Metoda version() .................................................................................................... 133 Metoda last_query() ............................................................................................... 133 Informacje o tabelach ................................................................................................... 134 Metoda list_tables() ................................................................................................ 134 Metoda table_exists() ............................................................................................. 134 Informacje o polach tabeli ............................................................................................ 135 Metoda list_fields() ................................................................................................ 135 Metoda field_exists() .............................................................................................. 136 Metoda field_data() ................................................................................................ 137 Rozdziaä 5. Klasy pomocnicze ........................................................................ 139 Tablica (array) .............................................................................................................. 139 Funkcja element() ................................................................................................... 139 Funkcja random_element() ..................................................................................... 140 Funkcja elements() ................................................................................................. 141 Wysyáanie danych z formularza ............................................................................. 142 Pliki cookie (cookie) ..................................................................................................... 143 Funkcja set_cookie() .............................................................................................. 143 Funkcja get_cookie() .............................................................................................. 143 Funkcja delete_cookie() ......................................................................................... 143 Data (date) .................................................................................................................... 144 Funkcja now() ........................................................................................................ 144 Funkcja standard_date() ......................................................................................... 144 Funkcja local_to_gmt() .......................................................................................... 145 Funkcja unix_to_human() ...................................................................................... 146 Funkcja timespan() ................................................................................................. 146 Funkcja days_in_month() ....................................................................................... 147 Funkcja timezones() ............................................................................................... 148 Funkcja timezone_menu() ...................................................................................... 148 Katalog (directory) ....................................................................................................... 150 Funkcja directory_map() ........................................................................................ 150 Pobieranie (download) .................................................................................................. 152 Funkcja force_download() ..................................................................................... 152 E-mail (email) ............................................................................................................... 153 Funkcja valid_email() ............................................................................................. 153 Funkcja send_email() ............................................................................................. 154 Plik (file) ...................................................................................................................... 154 Funkcja write_file() ................................................................................................ 154 Funkcja read_file() ................................................................................................. 155 Funkcja delete_files() ............................................................................................. 155 Funkcja get_dir_file_info() .................................................................................... 156 Funkcja get_file_info() ........................................................................................... 158 8 CodeIgniter. Zaawansowane tworzenie stron w PHP Funkcja get_mime_by_extension() ........................................................................ 159 Funkcja symbolic_permissions() ............................................................................ 159 Funkcja octal_permissions() ................................................................................... 160 Formularz (form) .......................................................................................................... 161 Funkcja form_open() .............................................................................................. 161 Funkcja form_open_multipart() ............................................................................. 162 Funkcja form_hidden() ........................................................................................... 162 Funkcja form_input() ............................................................................................. 163 Funkcja form_password() ....................................................................................... 164 Funkcja form_upload() ........................................................................................... 164 Funkcja form_textarea() ......................................................................................... 165 Funkcja form_dropdown() ..................................................................................... 165 Funkcja form_multiselect() .................................................................................... 166 Funkcje form_fieldset() i form_fieldset_close() ..................................................... 167 Funkcja form_checkbox() ...................................................................................... 167 Funkcja form_radio() ............................................................................................. 168 Funkcja form_submit() ........................................................................................... 169 Funkcja form_reset() .............................................................................................. 169 Funkcja form_button() ........................................................................................... 170 Funkcja form_close() ............................................................................................. 171 Funkcja form_prep() .............................................................................................. 171 HTML (html) ................................................................................................................ 171 Funkcja br() ............................................................................................................ 172 Funkcja heading() ................................................................................................... 172 Funkcja img() ......................................................................................................... 173 Funkcja link_tag() .................................................................................................. 174 Funkcja nbs() .......................................................................................................... 175 Funkcje ol() i ul() ................................................................................................... 175 Funkcja meta() ....................................................................................................... 177 Funkcja doctype() ................................................................................................... 179 JĊzyk (language) ........................................................................................................... 179 Funkcja lang() ........................................................................................................ 180 Liczba (number) ........................................................................................................... 181 Funkcja byte_format() ............................................................................................ 181 ĝcieĪka (path) ............................................................................................................... 182 Funkcja set_realpath() ............................................................................................ 183 BezpieczeĔstwo (security) ............................................................................................ 184 Funkcja xss_clean() ................................................................................................ 184 Funkcja sanitize_filename() ................................................................................... 184 Funkcja do_hash() .................................................................................................. 185 Funkcja strip_image_tags() .................................................................................... 185 Funkcja encode_php_tags() .................................................................................... 186 Ciąg (string) .................................................................................................................. 187 Funkcja random_string() ........................................................................................ 187 Funkcja increment_string() .................................................................................... 188 Funkcja alternator() ................................................................................................ 188 Funkcja repeater() .................................................................................................. 189 Funkcja reduce_double_slashes() ........................................................................... 190 Funkcja trim_slashes() ........................................................................................... 190 Funkcja quotes_to_entities() .................................................................................. 191 Funkcja strip_quotes() ............................................................................................ 191 Tekst (text) ................................................................................................................... 192 Funkcja word_limiter() ........................................................................................... 192 Funkcja character_limiter() .................................................................................... 193 Funkcja ascii_to_entities() ..................................................................................... 193 Spis treĈci 9 Funkcja entities_to_ascii() ..................................................................................... 194 Funkcja highlight_code() ....................................................................................... 194 Funkcja word_wrap() ............................................................................................. 195 Funkcja ellipsize() .................................................................................................. 196 URL (url) ...................................................................................................................... 197 Funkcja site_url() ................................................................................................... 197 Funkcja base_url() .................................................................................................. 197 Funkcja current_url() .............................................................................................. 198 Funkcja uri_string() ................................................................................................ 198 Funkcja index_page() ............................................................................................. 199 Funkcja anchor() .................................................................................................... 199 Funkcja redirect() ................................................................................................... 200 XML (xml) ................................................................................................................... 200 Funkcja xml_convert() ........................................................................................... 201 Rozdziaä 6. Tworzenie pierwszej aplikacji ........................................................ 203 RozpoczĊcie pracy ........................................................................................................ 203 Baza danych ................................................................................................................. 204 Gáówny plik aplikacji ................................................................................................... 204 Plik konfiguracyjny ...................................................................................................... 204 Konfiguracja automatycznego áadowania ..................................................................... 204 Konfiguracja bazy danych ............................................................................................ 205 Konfiguracja domyĞlnego kontrolera ........................................................................... 205 Tworzenie pliku do przepisywania adresów ................................................................. 205 Kontroler — logowanie administratora ........................................................................ 206 Kontroler — wylogowanie administratora ................................................................... 208 Kontroler — strona gáówna .......................................................................................... 209 Kontroler — kategoria wpisów .................................................................................... 212 Kontroler — wpis ......................................................................................................... 215 Kontroler — edycja wpisów ......................................................................................... 219 Model — logowanie uĪytkownika ................................................................................ 227 Model — strona gáówna ............................................................................................... 228 Model — kategoria ....................................................................................................... 229 Model — wpis .............................................................................................................. 231 Model — polecenia wspóádzielone ............................................................................... 233 Model — edycja ........................................................................................................... 233 Widok — nagáówek ...................................................................................................... 237 Widok — stopka ........................................................................................................... 240 Widok — menu ............................................................................................................ 240 Widok — menu administratora .................................................................................... 242 Widok — menu administratora przed zalogowaniem ................................................... 242 Widok — kategoria ...................................................................................................... 243 Widok — edytowanie kategorii .................................................................................... 245 Widok — dodawanie kategorii ..................................................................................... 246 Widok — wpisy ............................................................................................................ 246 Widok — nowy wpis .................................................................................................... 249 Widok — edytowanie wpisu ........................................................................................ 251 Widok — najnowsze wpisy .......................................................................................... 253 Widok — zaloguj ......................................................................................................... 254 Widok — strona gáówna ............................................................................................... 255 Widok — zmieĔ hasáo .................................................................................................. 256 ZakoĔczenie .................................................................................................................. 257 10 CodeIgniter. Zaawansowane tworzenie stron w PHP Nazwy zastrzeĔone ....................................................................... 259 Podsumowanie ............................................................................. 261 Skorowidz .................................................................................... 263 Rozdziaä 4. Sterowniki systemu do obsäugi bazy danych Sterownik przeznaczony do obsáugi bazy danych umoĪliwia korzystanie z jej zaso- bów. CodeIgniter pozwala na wykorzystywanie takich baz danych jak na przykáad MySQL i PostgreSQL. DziĊki temu jest dogodną platformą do tworzenia zaawanso- wanych aplikacji — umoĪliwia przeprowadzenie róĪnych operacji na rekordach, takich jak umieszczanie ich w tabeli, aktualizowanie czy usuwanie. Praca z bazñ danych Zanim zaczniemy przygodĊ z bazą danych, musimy utworzyü dwie bazy: pierwszą o na- zwie codeigniter oraz drugą — codeigniter2. Najprawdopodobniej pracujesz na opro- gramowaniu XAMPP, wiĊc w celu ich utworzenia moĪesz skorzystaü z narzĊdzia phpMyAdmin, do którego dostĊp uzyskasz, wpisując adres URL w pasku adresu prze- glądarki internetowej: http://localhost/phpMyAdmin. NastĊpnie w pierwszej bazie o nazwie codeigniter naleĪy wykonaü poniĪszy kod za- pytaĔ SQL: CREATE TABLE IF NOT EXISTS tabela ( id int(11) NOT NULL AUTO_INCREMENT, tytul varchar(255) COLLATE utf8_unicode_ci NOT NULL, PRIMARY KEY ( id ) ) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=3 ; INSERT INTO tabela ( id , tytul ) VALUES (1, Treħè 1 ), (2, Treħè 2 ); CREATE TABLE IF NOT EXISTS tabela_post ( post_id int(11) NOT NULL AUTO_INCREMENT, post_tytul varchar(255) COLLATE utf8_unicode_ci NOT NULL, post_tresc text COLLATE utf8_unicode_ci NOT NULL, 120 CodeIgniter. Zaawansowane tworzenie stron w PHP post_aktywny char(1) COLLATE utf8_unicode_ci NOT NULL, PRIMARY KEY ( post_id ) ) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=3 ; INSERT INTO tabela_post ( post_id , post_tytul , post_tresc , post_aktywny ) VALUES (1, Temat wiadomoħci , , t ), (2, Kolejny temat wiadomoħci , , t ); CREATE TABLE IF NOT EXISTS uzytkownicy ( uzytkownik_id int(11) NOT NULL AUTO_INCREMENT, uzytkownik_nazwa varchar(255) COLLATE utf8_unicode_ci NOT NULL, PRIMARY KEY ( uzytkownik_id ) ) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=1 ; W przypadku zainstalowania oprogramowania XAMPP uĪytkownik mający peáen do- stĊp do baz danych to root, a jego hasáo jest puste. Wczytanie sterownika (load- database) Sterownik sáuĪący do obsáugi bazy danych jest uruchamiany poprzez metodĊ database() z obiektu load (listing 4.1). Wszystkie dane potrzebne do nawiązania poáączenia z bazą danych definiuje siĊ w pliku konfiguracyjnym. Listing 4.1. àadowanie sterownika bazy danych ?php if(!defined( BASEPATH )) { exit( No direct script access allowed ); } class Mvc extends CI_Controller { public function index() { $this- load- database(); } } ? Poäñczenie z bazñ danych — konfiguracja danych dostöpowych Aby zapewniü sobie moĪliwoĞü wykorzystania bazy danych, najpierw naleĪy skonfi- gurowaü dane dostĊpowe: okreĞliü nazwĊ hosta, nazwĊ uĪytkownika i jego hasáo, wska- zaü nazwĊ bazy danych oraz zdefiniowaü inne potrzebne wáaĞciwoĞci. W przypadku CodeIgnitera dane te są przechowywane w pliku application/config/database.php. Rozdziaä 4. i Sterowniki systemu do obsäugi bazy danych 121 Plik ten zawiera tablicĊ, w której ustawia siĊ róĪnego rodzaju dane dostĊpowe do bazy danych (listing 4.2). Listing 4.2. Tablica konfiguracji danych dostĊpowych do bazy danych $db[ default ][ hostname ] = localhost ; $db[ default ][ username ] = root ; $db[ default ][ password ] = ; $db[ default ][ database ] = codeigniter ; $db[ default ][ dbdriver ] = mysql ; $db[ default ][ dbprefix ] = ; $db[ default ][ pconnect ] = TRUE; $db[ default ][ db_debug ] = FALSE; $db[ default ][ cache_on ] = FALSE; $db[ default ][ cachedir ] = ; $db[ default ][ char_set ] = utf8 ; $db[ default ][ dbcollat ] = utf8_general_ci ; $db[ default ][ swap_pre ] = ; $db[ default ][ autoinit ] = TRUE; $db[ default ][ stricton ] = FALSE; $db[ default ][ port ] = 3306; PoniĪej zostaáy objaĞnione dostĊpne parametry:  hostname — nazwa hosta bazy danych,  username — nazwa uĪytkownika,  password — hasáo uĪytkownika,  database — nazwa bazy danych,  dbdriver — typ sterownika bazy danych, przykáadowe wartoĞci tego parametru to: mysql, postgres, odbc itd.,  dbprefix — prefiks nazw tabel w bazie danych, który bĊdzie automatycznie dodawany w przypadku korzystania z interfejsu Active Record,  pconnect (TRUE/FALSE) — definiuje, czy chcemy uĪywaü staáego poáączenia,  db_debug (TRUE/FALSE) — wyĞwietlanie komunikatów o báĊdach bazy danych,  cache_on (TRUE/FALSE) — wáączenie pamiĊci podrĊcznej do przechowywania wyników zapytaĔ,  cachedir — katalog na serwerze do tymczasowego przechowywania wyników zapytaĔ do bazy danych,  char_set — zestaw znaków wykorzystywany do pracy z bazą danych,  dbcollat — ustawienie kodowania pól w bazie danych,  swap_pre — prefiks nazw tabel, stosowany podczas pracy nad wersją rozwojową aplikacji,  autoinit — okreĞlenie automatycznego áączenia siĊ z bazą danych po wáączeniu interfejsu, 122 CodeIgniter. Zaawansowane tworzenie stron w PHP  stricton (TRUE/FALSE) — wymuszenie poáączenia z bazą danych w trybie Strict Mode1,  port — port wykorzystany do nawiązania poáączenia z bazą danych. Nie wszystkie opcje konfiguracyjne dostĊpne w pliku database.php są zawsze po- trzebne. To, jakie dane bĊdziesz musiaá zdefiniowaü, zaleĪy od rodzaju bazy danych. Przedstawiona powyĪej konfiguracja jest odpowiednia dla bazy MySQL. Poäñczenie z bazñ danych (database) CodeIgniter umoĪliwia dwa sposoby áączenia siĊ z bazą danych. Pierwszy z nich po- lega na kaĪdorazowym zaáadowaniu odpowiedniego sterownika podczas uruchamia- nia aplikacji, co powoduje automatyczne nawiązanie poáączenia z bazą danych. Opcja ta jest bardzo przydatna, gdy mamy zamiar utworzyü aplikacjĊ korzystającą z zasobów tylko jednej bazy danych. Drugim sposobem jest rĊczne zestawianie poáączenia za pomocą metody database(). Pierwszym parametrem tej metody jest nazwa klucza tablicy, w której znajdują siĊ dane potrzebne do poáączenia z bazą danych. Jak pamiĊtasz, tablicĊ tĊ deklarujemy w pliku application/config/database.php. Kopiujemy juĪ obecną w tym pliku tablicĊ $db ´[ default ] i zmieniamy jej klucz na dowolny inny, waĪne jednak, by byá on zgodny z nazwami kluczy w jĊzyku PHP (listing 4.3). MoĪe siĊ on nazywaü na przykáad drugiepolaczenie (listing 4.4). Listing 4.3. Fragment zmodyfikowanego pliku database.php $db[ default ][ hostname ] = localhost ; $db[ default ][ username ] = root ; $db[ default ][ password ] = ; $db[ default ][ database ] = codeigniter ; $db[ default ][ dbdriver ] = mysql ; $db[ default ][ dbprefix ] = ; $db[ default ][ pconnect ] = TRUE; $db[ default ][ db_debug ] = FALSE; $db[ default ][ cache_on ] = FALSE; $db[ default ][ cachedir ] = ; $db[ default ][ char_set ] = utf8 ; $db[ default ][ dbcollat ] = utf8_general_ci ; $db[ default ][ swap_pre ] = ; $db[ default ][ autoinit ] = TRUE; $db[ default ][ stricton ] = FALSE; $db[ default ][ port ] = 3306 $db[ drugiepolaczenie ][ hostname ] = localhost ; $db[ drugiepolaczenie ][ username ] = root ; $db[ drugiepolaczenie ][ password ] = ; 1 Strict Mode — tzw. tryb Ğcisáy pracy, w którym baza danych nie bĊdzie podejmowaáa prób obsáuĪenia danych przekazanych w nieprawidáowym formacie — przyp. red. Rozdziaä 4. i Sterowniki systemu do obsäugi bazy danych 123 $db[ drugiepolaczenie ][ database ] = codeigniter2 ; $db[ drugiepolaczenie ][ dbdriver ] = mysql ; $db[ drugiepolaczenie ][ dbprefix ] = ; $db[ drugiepolaczenie ][ pconnect ] = TRUE; $db[ drugiepolaczenie ][ db_debug ] = FALSE; $db[ drugiepolaczenie ][ cache_on ] = FALSE; $db[ drugiepolaczenie ][ cachedir ] = ; $db[ drugiepolaczenie ][ char_set ] = utf8 ; $db[ drugiepolaczenie ][ dbcollat ] = utf8_general_ci ; $db[ drugiepolaczenie ][ swap_pre ] = ; $db[ drugiepolaczenie ][ autoinit ] = TRUE; $db[ drugiepolaczenie ][ stricton ] = FALSE; $db[ drugiepolaczenie ][ port ] = 3306; Listing 4.4. RĊczne áączenie siĊ z bazą danych $this- load- database( drugiepolaczenie ); Na etapie tworzenia projektu aplikacji naleĪy siĊ dobrze zastanowiü, z ilu baz danych bĊdzie siĊ korzystaü. W zaleĪnoĞci od tego, czy bĊdzie to jedna baza, czy wiĊksza ich liczba, konstrukcja poleceĔ w metodzie bĊdzie nieco inna (listingi 4.5 i 4.6). Listing 4.5. Wykonywanie zapytaĔ w przypadku áączenia siĊ z tylko jedną bazą danych $this- db- query(); $this- db- result(); Listing 4.6. Wykonywanie zapytaĔ w przypadku áączenia siĊ z dwiema lub wiĊkszą liczbą baz danych $DB1- query(); $DB1- result(); $DB2- query(); $DB2- result(); PamiĊtaj, Īe poszczególne obiekty obsáugujące bazy danych zawierają w swojej na- zwie liczby odpowiadające kolejnoĞci dokonywania poáączeĔ. ZnajomoĞü tych numerów umoĪliwi prawidáowe odwoáywanie siĊ do tych obiektów. Metoda reconnect() Podczas pracy aplikacji niekiedy dochodzi do utraty poáączenia z bazą danych, na przykáad na skutek przekroczenia limitu bezczynnoĞci serwera bazy danych. Aby unik- nąü ponownego definiowania wszystkich argumentów, w celu ponownego poáączenia siĊ z bazą wystarczy wywoáaü metodĊ reconnect(), która automatycznie podtrzyma poáą- czenie lub — w przypadku jego utraty — ponownie je nawiąĪe (listing 4.7). 124 CodeIgniter. Zaawansowane tworzenie stron w PHP Listing 4.7. Podtrzymanie lub powtórne nawiązanie poáączenia z bazą danych ?php if(!defined( BASEPATH )) { exit( No direct script access allowed ); } class Mvc extends CI_Controller { public function index() { $this- load- database(); $Informacje = $this- db- query( SELECT * FROM tabela ); echo pre ; print_r($Informacje); echo /pre ; $this- db- reconnect(); $Informacje = $this- db- query( SELECT * FROM tabela ); echo pre ; print_r($Informacje); echo /pre ; } } ? Metoda close() CodeIgniter zapewnia automatyczne zamykanie poáączenia z bazą danych, jednak jeĪeli chcesz zamknąü je rĊcznie, moĪesz wywoáaü metodĊ close() (listing 4.8). Listing 4.8. ZakoĔczenie poáączenia z bazą danych ?php if(!defined( BASEPATH )) { exit( No direct script access allowed ); } class Mvc extends CI_Controller { public function index() { $this- load- database(); $this- db- close(); } } ? Rozdziaä 4. i Sterowniki systemu do obsäugi bazy danych 125 Wykonywanie zapytania (query) Zapytanie, które chcemy wykonaü w bazie danych, musi speániaü wymagania stan- dardu jĊzyka SQL zgodnego z bazą danych, którą bĊdziemy wykorzystywaü. Zapyta- nie SQL podajemy jako parametr metody query() z obiektu db (listing 4.9). Przykáadowy rezultat wykonania skryptu obrazuje rysunek 4.1. Listing 4.9. Wykonanie zapytania SQL ?php if(!defined( BASEPATH )) { exit( No direct script access allowed ); } class Mvc extends CI_Controller { public function index() { $this- load- database(); $Informacje = $this- db- query( SELECT * FROM tabela ); echo pre ; print_r($Informacje); echo /pre ; } } ? Rysunek 4.1. Wynik zapytania 126 CodeIgniter. Zaawansowane tworzenie stron w PHP Metoda query() Same zapytania wysyáane do bazy danych konstruuje siĊ w jĊzyku SQL w imple- mentacji odpowiadającej zastosowanej bazie danych. Jednak ze wzglĊdu na obowią- zujące standardy w wiĊkszoĞci przypadków skáadnia SQL jest bardzo podobna. W jĊzyku PHP do uzyskiwania wyników zapytaĔ SQL wykorzystuje siĊ metodĊ query(). Parametrem tej metody jest zapytanie w jĊzyku SQL. Na listingu 4.10 przedstawiono przykáad prostego zapytania do bazy danych. Listing 4.10. Zapytanie do bazy danych ?php if(!defined( BASEPATH )) { exit( No direct script access allowed ); } class Mvc extends CI_Controller { public function index() { $this- load- database(); $this- db- query( SELECT * FROM tabela ); } } ? W przypadku zapytania SQL pobierającego dane z bazy danych, takiego jak SELECT, metoda query() zwraca obiekt zbioru wyników odpowiadający wykonanemu zapytaniu. W dalszej czĊĞci rozdziaáu pokaĪemy, w jaki sposób moĪna przetworzyü ten obiekt. W pozostaáych przypadkach (kiedy w wyniku zapytania nie otrzymujemy zbioru da- nych) wartoĞcią przekazaną przez metodĊ query() jest TRUE, gdy zapytanie zostanie poprawnie wykonane, lub FALSE, gdy nastąpi báąd. Zabezpieczanie danych (escape, escape_str i escape_like_str) Aby uchroniü swoją aplikacjĊ przed atakami typu SQL Injection, trzeba pamiĊtaü o prze- filtrowaniu danych przed ich wprowadzeniem do zapytania SQL i wysáaniem do bazy danych. Jest to bardzo waĪne ze wzglĊdu na bezpieczeĔstwo naszej aplikacji. W tabeli 4.1 przedstawiono dostĊpne w CodeIgniterze metody umoĪliwiające zabezpieczanie danych wpisywanych przez uĪytkownika poprzez wstawianie lewych ukoĞników przed znakami specjalnymi, takimi jak apostrof czy cudzysáów. Rozdziaä 4. i Sterowniki systemu do obsäugi bazy danych 127 Tabela 4.1. Metody zabezpieczające dane Metoda $this- db- escape() Opis Odpowiedni tylko dla ciągów znakowych $this- db- escape_str() Odpowiedni dla wszystkich danych, bez wzglĊdu na ich typ $this- db- escape_ like_str() Odpowiedni dla ciągu znakowego wykorzystanego jako parametr w zapytaniach z uĪyciem sáowa kluczowego LIKE Przykäad $Sql = INSERT INTO tabela (tytul) VALUES ( .$this- db- escape($Tytul). ) ; $Sql = INSERT INTO tabela (tytul) VALUES( .$this- db- escape_str($Tytul). ) ; $Tytul = 20 upustu ; $Sql = SELECT id FROM tabela WHERE tytul LIKE .$this- db- escape_like_ str ($Tytul). ; Bezpieczne zapytania (query) Zastosowanie tego typu zapytaĔ pozwala na zapewnienie wiĊkszego bezpieczeĔstwa aplikacji, poniewaĪ programista nie musi pamiĊtaü o sprawdzaniu danych wejĞciowych. Sterownik bazy danych CodeIgnitera zapewni odpowiednie filtrowanie danych (li- sting 4.11). Listing 4.11. Tworzenie zapytania wiązanego ?php if(!defined( BASEPATH )) { exit( No direct script access allowed ); } class Mvc extends CI_Controller { public function index() { $this- load- database(); $Zapytanie = SELECT * FROM tabela_post WHERE post_id = ? AND post_tytul = ? ´AND post_aktywny = ? ; $Parametry = array(1, Temat wiadomoħci , t ); $this- db- query($Zapytanie, $Parametry); } } ? Metoda query() przyjmuje w tym przypadku dwa parametry. Pierwszym jest zapytanie do bazy danych wraz ze znakami zapytania (?) w miejscach, w których powinny siĊ znaleĨü konkretne wartoĞci. Drugim parametrem jest tablica z tymi wáaĞnie wartoĞciami. 128 CodeIgniter. Zaawansowane tworzenie stron w PHP Musimy pamiĊtaü o jeszcze jednej bardzo waĪnej sprawie: liczba wartoĞci w tablicy musi byü równa liczbie znaków zapytania umieszczonych w pierwszym parametrze. Generowanie rezultatów zapytania Istnieje kilka sposobów generowania rezultatu wykonanego zapytania. Wybór konkret- nego sposobu zaleĪy od tego, jaką wartoĞü chcemy uzyskaü, w jaki sposób ma zostaü zaprezentowana uĪytkownikowi i do czego ma nam sáuĪyü. Metoda result() Metoda result() daje dostĊp do wyniku zapytania uzyskanego z wczeĞniej omówionej metody query(). Wynik ten jest udostĊpniany jako obiekt, który moĪna przetworzyü w pĊtli foreach. Na listingu 4.12 pokazano przykáadowy skrypt. Rezultatem jego wy- konania bĊdzie: 1 Temat wiadomoħci t 2 Kolejny temat wiadomoħci t Listing 4.12. Odbieranie wyniku zapytania za pomocą metody result() ?php if(!defined( BASEPATH )) { exit( No direct script access allowed ); } class Mvc extends CI_Controller { public function index() { $this- load- database(); $Rezultat = $this- db- query( SELECT * FROM tabela_post ); foreach($Rezultat- result() as $dane) { echo $dane- post_id; echo ; echo $dane- post_tytul; echo ; echo $dane- post_aktywny; echo br / ; } } } ? Rozdziaä 4. i Sterowniki systemu do obsäugi bazy danych 129 Metoda result_array() Metoda result_array() umoĪliwia otrzymanie wyniku zapytania w postaci zwykáej tablicy asocjacyjnej, w której kluczami są nazwy kolumn z tabeli (listing 4.13). Listing 4.13. Odbieranie wyników zapytaĔ za pomocą metody result_array() ?php if(!defined( BASEPATH )) { exit( No direct script access allowed ); } class Mvc extends CI_Controller { public function index() { $this- load- database(); $Rezultat = $this- db- query( SELECT * FROM tabela_post ); foreach ($Rezultat- result_array() as $dane) { echo $dane[ post_id ]; echo ; echo $dane[ post_tytul ]; echo ; echo $dane[ post_aktywny ]; echo br / ; } } } ? Metoda num_rows() Aby otrzymaü liczbĊ rekordów uzyskanych w wyniku zapytania, moĪna siĊ posáuĪyü metodą num_rows(). Wywoáujemy ją jako metodĊ obiektu zawierającego rezultat tego zapytania. Na listingu 4.14 pokazano przykáadowy skrypt. Wynikiem jego wykonania bĊdzie liczba 2. Listing 4.14. Przekazywanie liczby wybranych rekordów ?php if(!defined( BASEPATH )) { exit( No direct script access allowed ); } class Mvc extends CI_Controller { public function index() { 130 CodeIgniter. Zaawansowane tworzenie stron w PHP $this- load- database(); $Rezultat = $this- db- query( SELECT * FROM tabela_post ); echo $Rezultat- num_rows(); } } ? Metoda free_result() Zwykle PHP automatycznie zwalnia pamiĊü przy zakoĔczeniu przetwarzania skryptu. JeĞli jednak tworzysz duĪy projekt i chcesz uniknąü ryzyka wystąpienia báĊdu PHP spowodowanego wyczerpaniem siĊ przydzielonych aplikacji zasobów pamiĊci RAM serwera, warto rozwaĪyü rĊczne, a nie automatyczne zwalnianie pamiĊci po kaĪdym wykonaniu zapytania. Do tego celu sáuĪy metoda free_result(). Na listingu 4.15 znaj- duje siĊ przykáad zastosowania tej metody. Listing 4.15. Czyszczenie zawartoĞci zapytania z pamiĊci serwera ?php if(!defined( BASEPATH )) { exit( No direct script access allowed ); } class Mvc extends CI_Controller { public function index() { $this- load- database(); $Rezultat = $this- db- query( SELECT * FROM tabela_post ); foreach ($Rezultat- result_array() as $dane) { echo $dane[ post_id ]; echo ; echo $dane[ post_tytul ]; echo ; echo $dane[ post_aktywny ]; echo br / ; } $Rezultat- free_result(); } } ? Rozdziaä 4. i Sterowniki systemu do obsäugi bazy danych 131 Metoda insert_id() Metoda insert_id() przekazuje identyfikator wartoĞci, która zostaáa ostatnio dodana do tabeli za pomocą zapytania INSERT. Jest on pobierany z pola typu auto_increment. Rezultatem wykonania skryptu z listingu 4.16 bĊdzie liczba 3. Listing 4.16. WyĞwietlanie ostatniego dodanego numeru w polu auto_increment ?php if(!defined( BASEPATH )) { exit( No direct script access allowed ); } class Mvc extends CI_Controller { public function index() { $this- load- database(); $Rezultat = $this- db- query( INSERT INTO tabela_post ´(post_tytul,post_aktywny) VALUES ( Inny post , t ) ); echo $this- db- insert_id(); } } ? Metoda affected_rows() Metoda affected_rows() przekazuje liczbĊ rekordów zmienionych podczas wyko- nywania ostatniego zapytania UPDATE. Rezultatem wykonania skryptu z listingu 4.17 bĊdzie liczba 1. Listing 4.17. WyĞwietlanie liczby rekordów zmienionych podczas ostatniego zapytania ?php if(!defined( BASEPATH )) { exit( No direct script access allowed ); }
Pobierz darmowy fragment (pdf)

Gdzie kupić całą publikację:

CodeIgniter. Zaawansowane tworzenie stron w PHP
Autor:

Opinie na temat publikacji:


Inne popularne pozycje z tej kategorii:


Czytaj również:


Prowadzisz stronę lub blog? Wstaw link do fragmentu tej książki i współpracuj z Cyfroteką: