Lecture-1 PHP Introduction
Live Lecture
· Introduction to php
· Practical Exercise
Lecture-2 Software installation and Setup
Live Lecture
· Recommended software overview
· Install on windows
· Install Atom on Windows
· Practical Exercise
Lecture-3 Variables
Live Lecture
· Write Your First PHP Code: Display a Message in Your Web Browser
· Variables in PHP:What They are, How to Create & Name Them
· Basic Variable Types: Strings and Numbers
· Basic Variable Types: Boolean and Null
· Perform Operations on Variables: Operators
· Strings: Using Single or Double Quotes and Variable Interpolation
· PHP concepts, variables and operators
· Variables and Operators
· Practical Exercise
Lecture-4 Arrays
Live Lecture
· Introduction to Arrays: Create an Array and Access its Elements
· Assign Manual Array Indexes and Create Associative Arrays
· Create and Access Multidimensional Arrays
· Process Each Element of an Array: foreach Loops
· Process the value & index of each array element using a foreach loop
· Practical Exercise
Lecture-5 Control Structures
Live Lecture
· Run Code Conditionally: the if Construct
· Compare One Value to another: Comparison Operators
· Run Code Multiple Times Based on a Condition: While Loops
· Run Code a Specific Number of Times: For Loops
· Add More Conditions to an If Statement Using Elseif
· Perform Different Actions Based on Different Conditions: The Switch Statement
· Control structures and comparison operators
· Practical Exercise
Lecture-6 An introduction to HTML
Live Lecture
· The Language of Web Pages: An Introduction to Html
· Use Head and Body Elements to Structure an Html Document
· Structure the Content of your Page Using Heading and Paragraph Elements
· Give Text Emphasis or Importance Using the em and Strong Elements
· Display Ordered and Unordered Lists of Items
· Insert Images into an Html Document
· Add a Link from One Page to Another Using a Hyperlink
· Add Semantic Structure to The Body of an Html Document
· HTML basics
· Practical Exercise
Lecture-7 Mixing PHP and HTML
Live Lecture
· Create Dynamic Content: Mixing HTML and PHP
· Use PHP Control Structures Mixed with HTML
· Make HTML More Readable: Use Whitespace and Comments
· Addendum: changes to the available resources in the following video
· Make PHP Easier to Maintain: Use Comments and Coding Standards
· Mixing PHP and HTML
· Practical Exercise
Lecture-8 An Introduction to Databases
Live Lecture
· Where to Store Data in a Dynamic Website: An Introduction to Databases
· Access the Database Server Using phpMyAdmin And Create a Database
· Use Tables to Store Structured Data in a Database
· Select Some Data from The Database: An Introduction to Sql
· Using Indexes: Make Queries Faster and Order the Result Set
· Connect to the Database from PHP
· Query the Database from PHP And Get the Results
· Combine PHP and HTML to Show a Formatted List of Articles
· Databases - connecting and selecting data
· Practical Exercise
Lecture-9 Multiple Pages in PHP
Live Lecture
· Add a New Page to Show a Single Article
· Passing Data in the URL: Send the Article ID Using the Query String
· Avoid SQL Injection: Validate the ID Passed in from the Query String
· Don't Repeat Yourself: Extract Repeated Code to a Separate File
· Organise and Secure Access to the Included Files
· Multiple pages in PHP
· Practical Exercise
Lecture-10 An Introduction to HTML Forms
Live Lecture
· Getting Data from the User: An Introduction to Forms in HTML
· Change the Method the Form Uses to Send its Data: get vs post
· Get Different Types of Data from the User: Basic Input Types
· Access Data from the form on the Server
· Add a Multi-line Text Control: The Textarea Element
· Present a Fixed List of Options: The Select Element
· Toggle an Option on or off: checkboxes
· Select only one Option from a List: Radio Buttons
· Add an Accessible Caption to Each Input: The Label Element
· Make the Form Easier to Use: Fieldsets and placeholders
· Common form Control Attributes: Readonly, disabled and autofocus
· Validate Input Using HTML5 form Validation
· Forms in HTML
· Practical Exercise
Lecture-11 Inserting Data into the Database from PHP
Live Lecture
· Introduction to MySQL
· Understanding MySQL
· Open source database capabilities
· MySQL administration
· Data types
· Tables and queries
· Installation of MySQL
· Learning to deploy MySQL Constraints
· MySQL ALTER TABLE Command
· Working with MySQL IN Operator
· MySQL Sorting
· MySQL Joins
· Understanding MySQL Sequences
· Add a Form to Insert a New Article
· Insert a New Article into the Database & Get the ID of the New Record
· How SQL Injection Attacks Work
· Avoid SQL Injection Attacks: Escape Input
· Avoid SQL Injection Attacks: Use Prepared Statements
· Inserting data into the database
· Databases - inserting data
· Practical Exercise
Lecture-12 An Introduction to Functions and Validation in PHP
Live Lecture
· Functions: Define and Call a Function in PHP
· Create a Function to Connect to the Database
· Validate the Form Data & redisplay the Form with Error Messages if Invalid
· Maintain Previously-supplied Data When redisplaying an Invalid Form
· Avoid Cross-site Scripting (XSS) Attacks: Escape Untrusted Content
· Insert NULL if the Publication Date is Empty
· Validate the Publication Date is a Valid Date and Time
· Redirect to the Article Page After Inserting a New Article
· Functions in PHP
· Practical Exercise
Lecture-13 Editing Data in the Database from PHP
Live Lecture
· Editing Existing Articles: Create a Function to Get a Single Article
· Add a Form for Editing an Existing Article
· Add a Validation Function and Validate the Form Data
· Change Existing Data in the Database: The SQL UPDATE Statement
· Update an Existing Article in the Database
· Create a Function to Redirect to Another URL
· Databases - updating data using MySQL
· Practical Exercise
Lecture-14 Deleting Data from the Database from PHP
Live Lecture
· Delete Existing Data in the Database: The SQL DELETE Statement
· Delete an Existing Article in the Database
· Use the POST Request Method to Delete the Article
· Get Confirmation from the User Before Deleting the Article
· Improve Database Performance: Only use SELECT * when Necessary
· Updating and deleting data in the database
· Practical Exercise
Lecture-15 Using Sessions to Log in and Restrict Access
Live Lecture
· Make the Web Browser Remember you between Visits: An Introduction to Sessions
· Store Data in the Browser: Cookies in PHP
· Store a Value in the Session to Log in and Log out a User
· Add a Login form and Process the User's Login Credentials
· Completely Destroy the Session on Logout and Redirect Back to the Index Page
· Increase Security: Prevent Session Fixation Attacks
· Restrict Access to a Page to a Logged-in User Only
· Sessions and cookies
· Practical Exercise
Lecture-16 An Introduction to Object-Oriented PHP
Live Lecture
· Classes and Objects: An Introduction to Object-Oriented PHP
· Object Attributes: Adding Properties to a Class
· Object Functions: Adding Methods to a Class
· Object Initialisation: The Constructor Method
· Control Access: Public and Private visibility of Properties and Methods
· Public Properties vs Getter and Setter Methods
· Static Properties and Methods
· Constants: Using Define and const to Create Constant Values
· Inheritance: Using the Extends Keyword to reuse Code and reduce Repetition
· Overriding Methods and Using the Parent Keyword to Call the Parent Class Code
· Control Access: Protected Visibility of Properties and Methods
· Object-oriented PHP
· Practical Exercise
Lecture-17 PDO: PHP Data Objects
Live Lecture
· Add a Database Class and Connect to the Database Using PHP Data Objects (PDO)
· Queries in PDO: Change the Index Page to Use the New Database Class
· Catch Database Errors Using Exceptions and try ... catch Blocks
· Prepared Statements with Named Parameters in PDO: view an Individual Article
· Create an Article Class and Use it on the Index and Article Pages
· Fetch the Database Record as an Object Instead of an Array
· Update the Article Record Using PDO
· Move the Validation Function to the Article Class
· Delete the Article Record Using PDO
· Insert a new Article Record Using PDO and get the ID of the New Record
· Practical Exercise
Lecture-18 Authentication Using the Database
Live Lecture
· Create a User Class and a Method to Authenticate a User
· Create a Table to Store User Data in the Database
· Authenticate the User with Data from the Database
· Store Passwords Securely: PHP Password Hashing Functions
· Store the Password as a Hash in the Database and Verify it on Login
· PDO and password hashing
· Practical Exercise
Lecture-19 Class Autoloading
Live Lecture
· Convert the auth Include into a Class
· Convert the url Include into a Class
· Autoloading Classes: Require Class Files Automatically
· Add an Initialisation Script Including an Autoloader
· Returning a Value Using Require: Add a Script to get the Database Connection
· Practical Exercise
Lecture-20 Site Administration
Live Lecture
· Move all Authentication-related Code to the Auth Class
· Create an Admin Index and Load Classes Relative to the site root Directory
· Displaying Tabular Data in HTML: Tables
· Display the Admin List of Articles in a Table and Restrict Access to the Page
· Add Sitewide Navigation Links
· Move the Edit and Delete Article Scripts to the admin Area
· Move the New Article Script to the admin Area
· Autoloading classes and requiring files
· Practical Exercise
Lecture-21 Pagination
Live Lecture
· Pagination: Split Database Results up Into Pages
· Add a Method to the Article Class to get a Single Page of Article Records
· Add a Paginator Class and Calculate the offset and Limit from the Page Number
· Get the Page Number from the Query String
· Validate the Page Number using the filter_var Function
· Add Previous and Next Pagination Links
· Calculate the Total Number of Records and Pages
· Add Pagination to the admin Index and Create Shared Pagination Links
· Tables and pagination
· Practical Exercise
Lecture-22 Uploading Files
Live Lecture
· Uploading Files: Add a Form to Upload an Article Image
· Handle the Upload Error Code
· Restrict the Size of all Uploaded Files using PHP Configuration Settings
· Restrict the Size of an Uploaded File in an Individual Form
· Restrict the Type of an Uploaded File
· Create a Folder for Uploads and Move the Uploaded File into it
· Sanitise the Uploaded Filename as a Security Precaution
· Don't Overwrite Existing Files in the Uploads Folder
· Save the Filename to the Article Record in the Database
· Display the Uploaded Image if an Article has one
· Delete the Previous image File when an Article Image is Updated
· Add an Option to Delete an Article's Image file
· Uploading files
· Practical exercise
Lecture-23 Database Relationships
Live Lecture
· Database Relationships: Create a Table and Data for Categories
· One-to-one Relationships Between Tables
· One-to-many Relationships Between Tables
· Joins: Selecting Data from Multiple, Related Tables at Once
· Relationship Constraints
· Many-to-many Relationships Between Tables
· Practical Exercise
Lecture-24 Using Relationships: Article Categories
Live Lecture
· Show an Article's Categories on the Individual Article Page
· Get an Article's Categories in an Object Method
· Add a Category Class and form Inputs to edit an Article's Categories
· Insert Article Categories while Avoiding Duplicate Records in the Join Table
· Insert Article Categories More Efficiently using a Single Query
· Delete Article Category Records if Unchecked in the Form
· Add Categories When Inserting a new Article Record
· Pagination and Joins: Show Categories in the Index Page
· Database relationships
· Practical Exercise
Lecture-25 JavaScript and PHP
Live Lecture
· Execute Code in the Browser: An Introduction to JavaScript
· Using the jQuery Library
· Add jQuery and a Custom Script file to the CMS
· Add Delete Confirmation Using JavaScript and POST
· Client-side form Validation Using the jQuery Validation Plugin
· An Introduction to Ajax with PHP
· Use JSON to Safely Encode Structured Data in an Ajax Request
· JavaScript and PHP
· Practical Exercise
Lecture-26 Dates and Times
Live Lecture
· Only Show an Individual Article if it's been Published
· Only Show Published Articles on the Index Page
· Use the Date Time Class & the Time Element to Show the Published Date & Time
· Show the Published Date and Time of Articles in the admin Area
· Publish Unpublished Articles Using an Ajax Request
· Practical Exercise
Lecture-27 An Introduction to CSS
Live Lecture
· Add Styling and Formatting to HTML: An Introduction to CSS
· Using CSS Frameworks: Bootstrap et al
· Add a General Layout and Style the Navigation Links
· Add Styling and Layout to Forms and Tables
· Add a Custom Stylesheet and Style the List of Articles
· Add a Date and Time Picker Plugin to make Selecting Dates and Times Easier
· CSS basics
· Practical Exercise
Lecture-28 Sending Emails from PHP
Live Lecture
· Add a Contact Page for Sending an Email
· Validate the Submitted Contact Form
· Get Access to a Mail Server
· How to Send Email from PHP: The Mail Function and PHP Mailer
· Send Email from the Contact Page Using PHP Mailer
· Practical Exercise
Lecture-29 Configuration and Error Handling
Live Lecture
· Extract Environment-dependent Settings out into a Single Configuration File
· Deny Direct Access to the config file from a Browser
· Handing Errors and Exceptions: user-defined Handling Functions
· Display Error and Exception Details Depending on the Environment
· HTTP Status Codes and Handling Ajax Errors
· Sending emails and error handling
· Practical Exercise
Project Development
· Deployment: Publish your Code on a Live Server
· Project Discussion
· Requirements analysis of Project