Main PHP Tutorial8+
Basics
Introduction to PHP Language
Getting Started
Executing PHP Code
Problem with Encodings
Displaying PHP Errors
Full Code to Run PHP
Improved Code to Run
Overview of Initial PHP Commands
Comments in PHP
Comments in Tutorial
Variable Dumping
Functions in PHP
Variables
Using Variables
Changing Variable Values
Mathematical Operations with Numbers
Mathematical Operations with Variables
Priority of Mathematical Operations
Equal Priority
Grouping Parentheses
Grouping Nuances
Fractions
Negative Numbers
Remainder of Division
Exponentiation
Exponentiation Priority
Strings
String Concatenation
Spaces When Concatenating Strings
String Length
Problem with Cyrillic
Tags
Tag Attributes
Boolean Values
null Value
Automatic Type Conversion
Automatic Type Conversion to String
Nuances of Conversion to String
Conversion to Number
Conversion to Fraction
Converting Fraction to Integer
Converting Number to String
String Characters
Digits in String
Accessing Number Digits
Nuances of the Assignment Operation
Shortened Operations
Incrementation
Prefix and Postfix Type
Practice on Finding Errors
Practice on Operations
Practice on Formulas
Arrays
Introduction to Arrays
Viewing Array Contents
Individual Array Element
Associative Arrays
Trick with Keys
Element Order
Array Length
Changing Elements
Overwriting Array Elements
Incrementing Elements
Filling Arrays
Explicitly Specifying Keys
Keys from Variables
Practice on Finding Errors
Conditions
if-else Construct
Greater Than and Less Than Operators
Checking for Equality
Checking for Inequality
Comparing Variables
Data Types and if-else Construct
Numbers in Quotes
Equality by Value and Type
Inequality by Value and Type
Nuances When Comparing Data Types
Complex Conditions in if-else
Logical AND
Logical OR
Priority of Comparison Operations
Grouping Conditions
Inverting Statements
if-else Construct and Boolean Values
Non-Strict Comparison of Boolean Values
Shorthand if
Nuance of Shortened Operations
isset Command
Warning Suppression
Checking Array Elements
empty Command
Optionality of else Command
Optionality of Curly Braces
The Problem of Optional Braces
if-else Combinations
elseif Construct
Nested if
switch Construct
Optionality of default
match Construct
Optionality of break
Ternary Operator
Null Coalescing Operator
Null Coalescing Operator Chains
Logical Operations
Determining Part of an Hour
Checking Length of Strings and Arrays
Checking String Character
Checking Remainder of Division
Practice on Finding Errors
if else Practice
Loops
Introduction
foreach Loop
foreach Loop with Keys
while Loop
for Loop
Conditions in Loops
Accumulating Sum of Numbers
Accumulating Sum of Elements
Forming Strings in a Loop
Optionality of Curly Braces
The Problem of Optional Braces
break Statement
continue Statement
Working with Flags
Nested Loops
for Loop for Arrays
Filling Arrays in a Loop
Modifying Arrays in a Loop
Code Writing Tips
Practice on Finding Errors
Practice on Loops
Multidimensionality
Introduction
Three-Dimensional Array
Associative Arrays
Arbitrary Arrays
Iterating Over Multidimensional Arrays
Iterating Over Three-Dimensional Array
Working with Keys
Filling Multidimensional Arrays
Filling with Numbers in Order
Array of Associative Arrays
Converting Multidimensional Arrays
Mathematical Functions
String Functions
String Length
Character Case
Extracting Strings
Checking Strings
Searching Strings
Splitting Strings
Trimming String Ends
Outputting String with Insertion
Formatting Number Representation
Reversing String
Filling String
Working with Tags
Character Codes
Counting Substrings
String Parts
Array Functions
Searching Arrays
End Elements
Array Slicing
Array Splicing
Range in Array
Filling Arrays
Merging Arrays
Keys-Values
Reversing
Replacement
Removing Duplicates
Counting Elements
Splitting into Subarrays
Sorting
Multiple Operations
Random
Time
Working with Timestamp
Formatting
Parsing Dates in Free Format
Checking Correctness
Time Zone
Modification
String Comparison
Comparing Date Without Year
Date Falling Within an Interval
Timestamp Comparison
Custom Functions
Introduction
Function Parameters
Multiple Parameters
Variable Parameters
Optional Parameters
return Statement
Sequential Function Calls
Subtle Point of return
Loop and return
Using return in Loops
Technique for Working with return
Flags in Functions
Logical Operators in Functions
Function Tips
Practice on Finding Errors
Practice on Functions
Scope
Primitive References
Array References
References in foreach
Internal Variables
External Variables
Variables with Same Name
Global Variables
Changing Parameters
Reference Parameters
Recursion
Recursion
Example with Parameter
Sum of Array Elements
Recursion and Multidimensional Arrays
Sum of Multidimensional Array
Manipulating Elements
Regular Expressions
Introduction
Repetition Operators
Grouping Parentheses
Escaping Special Characters
List of Special Characters
Curly Braces
Limiting Greediness
Character Groups
Character Classes
Inverting Character Classes
Cyrillic Specifics
Special Characters Inside Character Classes
Character Groups Inside Character Classes
Exception Special Characters Inside Character Classes
Caret Symbol Inside Character Classes
Hyphen Nuances Inside Character Classes
Start and End of String
Word Boundary (End or Beginning)
'or' Command'
Delimiters
Escaping Delimiters
Backslash
Checking String
Automated Regex Testing
Checking Entire String
Capturing Groups in Search
Finding All Matches
All Matches to Capturing Groups
Changing Search Behavior
Non-Capturing Parentheses
Capturing Groups in Replacement
Capturing Groups in Expression
Named Capturing Groups
Named Capturing Groups Inside Expression
General Capturing Group Number
Lookahead
Lookbehind
Replacement with Callback
Modifiers
Case-Insensitive Regex Flag
Comments in Regex
Working with Unicode in Regex
Changing Regex Greediness
Escaping Regular Characters in Regex
Multiple Regex Modifiers
Automatic Escaping of Special Characters
Array Filtering
Splitting String into Array
Forming Strings
Inserting Variables
Inserting Array Elements
Inserting Associative Array Elements
Loop and Inserting Variables
Inserting Array Elements in a Loop
Inserting Multidimensional Array Elements in a Loop
Generating Tags
Generating Tags with Attributes
Loop and Generating Tags
Loop and Generating Tags from Arrays
Loop and Generating Tags and Attributes
Loop and Generating HTML Tables
Generating HTML Table Using a Single Loop
Generating HTML Table Using Two Nested Loops
Inserting PHP Code into HTML
Short echo Command
Outputting Variable to HTML
Outputting Array Elements to HTML
Conditions and PHP Code Break
else Block in PHP Code Break
elseif Block in PHP Code Break
Loops and PHP Code Break
Array in Loop Within PHP Code Break
Forms
Introduction to Forms
Form Submission Method
Getting Form Data
Getting Form Data via GET Method
Getting Form Data via POST Method
Processing Form in a Single File
Hiding Form After Submission
Saving Form Values
Saving Form Default Value
Shortened Code for Saving Default Values
textarea Element
Saving textarea Value After Submission
Checkbox
Nuances of Using Checkboxes
Saving Value in Checkbox
Radio Buttons
Saving Value in Radio Buttons
Selects
value Attribute in Selects
Saving Value in Selects
GET-Queries
GET-Requests Using Links
Practice
Sessions
Introduction to Sessions
Potential Problems
Using Sessions on a Single Page
Deleting Sessions
Terminating Entire Session
Sessions and Forms
Storing Arrays in Sessions
Cookies
Introduction to Cookies
Problem with Setting Cookies
Instant Cookie Setting
Page Refresh Counter
Cookie Lifetime
Deleting Cookies
Instant Cookie Deletion
File System
Reading Files
Writing Files
Combination of Operations
Relative Paths
Absolute Paths
Advantages of Absolute Path
Absolute Paths to Script
Renaming Files
Moving Files
Copying Files
Deleting Files
Determining File Sizes
Checking File Existence
Creating Folders
Deleting Folders
Renaming Folders
Moving Folders
Reading Folder Contents
Distinguishing Folder from File
Parsing Folder Contents
Inserting Files
Dividing Layout into Elements
Storing Insertion in a Variable
Including Files
Single File Inclusion
Storing Connection in a Variable
Databases
Introduction to Databases
PhpMyAdmin
Test Table users
Preparatory Manipulations
Sending Queries to the Database
Finding Errors in Database
Testing Functionality
Problems with Encodings
Full Test Code
Getting Result
Getting Result as an Array
Forming an Array in a Loop
Selecting Records
Logical Operations
Selection Fields
Inserting Records
Inserting Records When Columns Are Missing
Updating Records
Deleting Records
Sorting Records
Limiting Quantity
Counting Quantity
Getting Count
Advanced Queries
Database Organization
Linking Tables
Retrieving Data from Related Tables
Chain of Related Tables
Linking Through a Junction Table
Related Relationships
Multiple Children
Double Link
Practice
Database Practice
Working with HTTP
HTTP Tutorial
HTTP Request Method
HTTP Request Headers
Array of HTTP Request Headers
HTTP Response Headers
Problem with HTTP Response Headers
Problem with include
Sending HTTP Response Start Line
Sending HTTP Response Status
Redirects
Introduction to Redirects
Instant Redirect
GET Queries and Redirect
Self-Redirect with Added Parameters
Flash Messages
Flash Messages Array
Saving Forms
Success Messages on Submission
Redirect on Form Validation
Authentication
Introduction
Authorization
Sessions
Exiting Session
Registration
Authorization Immediately Upon Registration
Adding id to Session
Hiding Password
Checking Login for Availability
Validation
Hashing
Adding Salt to Registration
Adding Salt to Authorization
password_hash Function
Profile
Account
Changing Password
Password Confirmation
Account Deletion
Permissions
Registration with Role Separation
Permissions and Database Normalization