Podstawowy samouczek PHP8+

Podstawy

Wprowadzenie do języka PHP Rozpoczęcie pracy Wykonywanie kodu PHP Problem z kodowaniem Wyświetlanie błędów PHP Pełny kod do uruchomienia PHP Ulepszony kod do uruchomienia Przegląd początkowych komend PHP Komentarze w PHP Komentarze w podręczniku Dumpowanie zmiennych Funkcje w PHP Zmienne Używanie zmiennych Zmiana wartości zmiennych Operacje matematyczne na liczbach Operacje matematyczne na zmiennych Priorytet operacji matematycznych Równy priorytet Nawiasy grupujące Niuanse grupowania Ułamki Liczby ujemne Reszta z dzielenia Potęgowanie Priorytet potęgowania Łańcuchy znaków Łączenie łańcuchów znaków Spacje przy łączeniu łańcuchów Długość łańcucha Problem z cyrylicą Znaczniki Atrybuty znaczników Wartości logiczne Wartość null Automatyczna konwersja typów Automatyczna konwersja na łańcuch znaków Niuanse konwersji na łańcuch znaków Konwersja na liczbę Konwersja na ułamek Konwersja ułamka na liczbę całkowitą Konwersja liczby na łańcuch znaków Znaki łańcucha Cyfry w łańcuchu znaków Odwołanie do cyfr liczby Niuanse pracy z operacją przypisania Operacje skrócone Inkrementacja Typ przedrostkowy i przyrostkowy Praktyka wyszukiwania błędów Praktyka operacji Praktyka formuł

Tablice

Wprowadzenie do tablic Podgląd zawartości tablicy Pojedynczy element tablicy Tablice asocjacyjne Sztuczka z kluczami Kolejność elementów Długość tablicy Zmiana elementów Nadpisywanie elementów tablicy Inkrementacja elementów Wypełnianie tablic Jawne określanie kluczy Klucze ze zmiennych Praktyka w wyszukiwaniu błędów

Warunki

Konstrukcja if-else Operatory większe i mniejsze Sprawdzanie równości Sprawdzanie nierówności Porównywanie zmiennych Typy danych i konstrukcja if-else Liczby w cudzysłowach Równość według wartości i typu Nierówność według wartości i typu Niuanse przy porównywaniu typów danych Złożone warunki w if-else Logiczne I Logiczne LUB Priorytet operacji porównania Grupowanie warunków Inwertowanie zdań Konstrukcja if-else i wartości logiczne Niescisłe porównywanie wartości logicznych Skrócony if Niuanse skróconych operacji Komenda isset Tłumienie ostrzeżeń Sprawdzanie elementów tablicy Komenda empty Opcjonalność komendy else Opcjonalność nawiasów klamrowych Problem opcjonalności nawiasów Kombinacje if-else Konstrukcja elseif Zagnieżdżone if Konstrukcja switch Opcjonalność default Konstrukcja match Opcjonalność break Operator trójargumentowy Operator łączenia z null Łańcuchy operatorów łączenia z null Operacje logiczne Określanie części godziny Sprawdzanie długości ciągów znaków i tablic Sprawdzanie znaku ciągu Sprawdzanie reszty z dzielenia Praktyka wyszukiwania błędów Praktyka if else

Pętle

Wprowadzenie Pętla foreach Pętla foreach z kluczami Pętla while Pętla for Warunki w pętlach Akumulacja sumy liczb Akumulacja sumy elementów Formowanie ciągów znaków w pętli Opcjonalność klamer Problem opcjonalności klamer Instrukcja break Instrukcja continue Praca z flagami Pętle zagnieżdżone Pętla for dla tablic Wypełnianie tablic w pętli Modyfikowanie tablic w pętli Wskazówki dotyczące pisania kodu Praktyka - znajdowanie błędów Praktyka - pętle

Wielowymiarowość

Wprowadzenie Tablica trójwymiarowa Tablice asocjacyjne Tablice dowolne Iteracja przez tablice wielowymiarowe Iteracja przez tablicę trójwymiarową Praca z kluczami Wypełnianie tablic wielowymiarowych Wypełnianie liczbami po kolei Tablica tablic asocjacyjnych Konwersja tablic wielowymiarowych

Funkcje matematyczne

Potęgi Zaokrąglanie Ekstrema Moduły Operacje na tablicach

Funkcje tekstowe

Długość ciągu Wielkość liter Wycinanie ciągów Sprawdzanie ciągów Wyszukiwanie w ciągach Podział ciągów Czyszczenie końców ciągu Wyświetlanie ciągu z wstawianiem Formatowanie reprezentacji liczb Odwracanie ciągu Wypełnianie ciągu Praca z tagami Kody znaków Zliczanie podciągów Części ciągu

Funkcje tablicowe

Wyszukiwanie w tablicach Elementy końcowe Wycinanie tablic Wstawianie i usuwanie w tablicach Zakres w tablicy Wypełnianie tablic Scalanie tablic Klucze i wartości Odwracanie Zastępowanie Usuwanie duplikatów Zliczanie elementów Podział na podtablice Sortowanie Operacje na zbiorach

Losowość

Losowa liczba Losowy element tablicy Mieszanie tablic Mieszanie ciągów znaków

Czas

Praca z timestamp Formatowanie Analiza dat w dowolnym formacie Weryfikacja poprawności Strefa czasowa Modyfikacja Porównywanie łańcuchowe Porównywanie dat bez roku Sprawdzanie czy data mieści się w przedziale Porównywanie timestamp

Funkcje użytkownika

Wprowadzenie Parametry funkcji Kilka parametrów Parametry-zmienne Parametry opcjonalne Instrukcja return Sekwencyjne wywołanie funkcji Delikatny punkt return Pętla i return Zastosowanie return w pętlach Sposób pracy z return Flagi w funkcjach Operatory logiczne w funkcjach Porady dotyczące funkcji Praktyka w znajdowaniu błędów Praktyka z funkcjami

Zakres widoczności

Referencje-prymitywy Referencje-tablice Referencje w foreach Zmienne wewnętrzne Zmienne zewnętrzne Zmienne o tej samej nazwie Zmienne globalne Zmiana parametrów Parametry-referencje

Rekurencja

Rekurencja Przykład z parametrem Suma elementów tablicy Rekurencja i tablice wielowymiarowe Suma tablicy wielowymiarowej Manipulacje elementami

Wyrażenia regularne

Wprowadzenie Operatory powtórzeń Nawiasy grupujące Ekranowanie znaków specjalnych Lista znaków specjalnych Nawiasy klamrowe Ograniczenie zachłanności Grupy znaków Zbiory znaków Inwersja zbiorów znaków Specyfika cyrylicy Znaki specjalne wewnątrz zbiorów Grupy znaków wewnątrz zbiorów Znaki specjalne-wyjątki wewnątrz zbiorów Symbol daszka wewnątrz zbiorów Specyfika myślnika wewnątrz zbiorów Początek i koniec linii Koniec lub początek słowa Polecenie 'lub' Ograniczniki Ekranowanie ograniczników Ukośnik odwrotny Sprawdzanie ciągu znaków Automatyczne testowanie wyrażeń regularnych Sprawdzanie całego ciągu znaków Kieszenie przy wyszukiwaniu Wyszukiwanie wszystkich dopasowań Wszystkie dopasowania na kieszenie Zmiana zachowania wyszukiwania Niezachowujące nawiasy Kieszenie przy zamianie Kieszenie w wyrażeniu Nazwane kieszenie Nazwane kieszenie wewnątrz wyrażenia Wspólny numer kieszeni Podgląd do przodu Podgląd do tyłu Zamiana z callbackiem Modyfikatory Ignorowanie wielkości liter w wyrażeniach regularnych Komentarze w wyrażeniu regularnym Praca z unikodem w wyrażeniach regularnych Zmiana zachłanności wyrażeń regularnych Ekranowanie zwykłych znaków w wyrażeniach regularnych Kilka modyfikatorów wyrażeń regularnych Automatyczne ekranowanie znaków specjalnych Filtrowanie tablicy Podział ciągu znaków na tablicę

Tworzenie ciągów znaków

Wstawianie zmiennych Wstawianie elementów tablicy Wstawianie elementów tablic asocjacyjnych Pętla i wstawianie zmiennych Wstawianie elementów tablic w pętli Wstawianie elementów wielowymiarowych tablic w pętli Generowanie znaczników Generowanie znaczników z atrybutami Pętla i generowanie znaczników Pętla i generowanie znaczników z tablic Pętla i generowanie znaczników i atrybutów Pętla i generowanie tabel HTML Generowanie tabeli HTML za pomocą jednej pętli Generowanie tabeli HTML za pomocą dwóch zagnieżdżonych pętli Wstawianie kodu PHP w HTML Krótka instrukcja echo Wyświetlanie zmiennej w HTML Wyświetlanie elementów tablicy w HTML Warunki i przerwanie kodu PHP Blok else w przerwaniu kodu PHP Blok elseif w przerwaniu kodu PHP Pętle i przerwanie kodu PHP Tablica w pętli w przerwaniu kodu PHP

Formularze

Wprowadzenie do formularzy Metoda wysyłania formularza Pobieranie danych z formularzy Pobieranie danych z formularzy metodą GET Pobieranie danych z formularzy metodą POST Obsługa formularza w jednym pliku Ukrywanie formularza po wysłaniu Zachowywanie wartości formularza Zachowywanie domyślnej wartości formularza Skrócony kod do zachowywania wartości domyślnych Element textarea Zachowywanie wartości textarea po wysłaniu Checkbox Niuanse używania checkboxów Zachowywanie wartości w checkboxie Przyciski radiowe Zachowywanie wartości w przyciskach radiowych Selekty Atrybut value w selekach Zachowywanie wartości w selekach Zapytania GET Zapytania GET za pomocą linków Praktyka

Sesje

Wprowadzenie do sesji Możliwe problemy Używanie sesji na jednej stronie Usuwanie sesji Zakończenie całej sesji Sesje i formularze Zapisywanie tablic w sesjach

Cookies

Wprowadzenie do ciasteczek Problem ustawiania ciasteczek Natychmiastowe ustawianie ciasteczek Licznik odświeżeń strony Czas życia ciasteczka Usuwanie ciasteczek Natychmiastowe usuwanie ciasteczek

System plików

Odczyt plików Zapisywanie plików Kombinacja operacji Ścieżki względne Ścieżki bezwzględne Zalety ścieżek bezwzględnych Bezwzględne ścieżki do skryptu Zmiana nazwy plików Przenoszenie plików Kopiowanie plików Usuwanie plików Określanie rozmiaru plików Sprawdzanie istnienia plików Tworzenie katalogów Usuwanie katalogów Zmiana nazwy katalogów Przenoszenie katalogów Odczyt zawartości katalogu Rozróżnianie katalogu od pliku Analizowanie zawartości katalogu Wstawianie plików Dzielenie znaczników na elementy Zapisywanie wstawki do zmiennej Dołączanie plików Jednokrotne dołączanie plików Zapisywanie dołączenia do zmiennej

Bazy danych

Wprowadzenie do baz danych PhpMyAdmin Tabela testowa users Manipulacje przygotowawcze Wysyłanie zapytań do bazy danych Wyszukiwanie błędów w bazie danych Testowanie funkcjonalności Problemy z kodowaniem Pełny kod testowy Uzyskiwanie wyniku Uzyskiwanie wyniku w postaci tablicy Tworzenie tablicy w pętli Wybór rekordów Operacje logiczne Pola wyboru Wstawianie rekordów Wstawianie rekordów przy brakujących kolumnach Aktualizacja rekordów Usuwanie rekordów Sortowanie rekordów Ograniczenie ilości Liczenie ilości Uzyskiwanie ilości Zaawansowane zapytania

Organizacja Bazy Danych

Łączenie tabel Pobieranie danych z połączonych tabel Łańcuch połączonych tabel Łączenie za pomocą tabeli łączącej Relacje rodzinne Kilku potomków Podwójna relacja Praktyka

Praktyka Bazy Danych

Tabela testowa users Formatowanie wyjścia Usuwanie danych Przeglądanie danych Dodawanie danych Edycja danych

Praca z HTTP

Podręcznik HTTP Metoda żądania HTTP Nagłówki żądania HTTP Tablica nagłówków żądania HTTP Nagłówki odpowiedzi HTTP Problem z nagłówkami odpowiedzi HTTP Problem z include Wysyłanie linii początkowej odpowiedzi HTTP Wysyłanie statusu odpowiedzi HTTP

Przekierowania

Wprowadzenie do przekierowań Natychmiastowe przekierowanie Zapytania GET i przekierowanie Samoprzekierowanie z dodawaniem parametrów Wiadomości flash Tablica wiadomości flash Zapisywanie formularzy Komunikaty o powodzeniu wysłania Przekierowanie przy walidacji formularza

Uwierzytelnianie

Wprowadzenie Autoryzacja Sesje Wylogowanie z sesji Rejestracja Autoryzacja od razu po rejestracji Dodanie id do sesji Ukrywanie hasła Sprawdzanie zajętości loginu Walidacja Hashowanie Dodanie soli do rejestracji Dodanie soli do autoryzacji Funkcja password_hash Profil Konto Zmiana hasła Potwierdzenie hasła Usuwanie konta Uprawnienia Rejestracja z podziałem uprawnień Uprawnienia i normalizacja bazy danych

Silnik strony

Wprowadzenie Użycie htaccess Silnik na plikach Tytuł w silniku na plikach Tytuły w tablicy Tytuły w treści Strona 404 w silniku na plikach Silnik na bazie danych Przyjazny URL w silniku Proste routowanie Routowanie z nazwanymi parametrami Kilka parametrów w roucie Praktyka
espt