Matthew M.

Matthew M.

HTTP POST: File Uploads

Slide Duration:

Table of Contents

Section 1: Advanced PHP with MySQL
Course Introduction

13m 36s

Intro
0:00
Advanced PHP w/ MySQL
0:13
Course Introduction
0:14
Course Content
0:59
Web Application: Educator Store
1:45
Web Application: Educator Store
1:46
Object-Oriented Programming
6:09
Object-Oriented Programming Overview
6:10
MySQL
6:50
MySQL Overview
6:51
Example: Command Prompt & MySQL
8:34
What You Will Learn
9:34
What You Will Learn
9:35
Course Prerequisites
11:52
Course Prerequisites
11:53
Advanced Course Development Environment

18m 46s

Intro
0:00
Lesson Overview
0:11
Lesson Overview
0:12
Development Environment Setup
1:36
Firefox Web Browser, XAMPP, and PSPad Text Editor
1:37
Course Directory Structure
4:36
Course Directory Structure
4:37
phpDocumentor
7:23
phpDocumentor Overview
7:24
Parsing Source Code
7:44
docs Subdirectory
9:06
Asvanced PHP Course Documentation Example
10:21
Previous Educator PHP Students
14:14
Lib Directory Changes
14:38
Images Directory Changes
14:57
VERSION Constant
15:40
Comments Noting a Specific Version Number
17:04
Homework Challenge
17:30
Homework Challenge
17:31
Introduction to File I/O

35m 37s

Intro
0:00
Lesson Overview
0:10
Lesson Overview
0:11
File I/O
1:34
File I/O Overview
1:35
Performing file I/O: 3 Steps
1:52
File Permissions
2:28
Read Permission & Write Permission
2:29
fopen()
4:47
fopen()
4:48
Two Required Parameters
5:01
Successful fopen(): File Handle and Resource
5:21
FALSE and E_WARNING Error
6:00
Example
6:39
File Paths
7:10
File Paths
7:11
File Access Modes
9:18
File Access Modes
9:19
Coding Example: fopen()
10:31
Using Relative and Absolute Path & Non-Existent File
10:32
File Pointers
15:55
File Pointers
15:56
Example File
16:11
Opening a File with fopen() Using 'r' as the Access Mode
16:22
fgets()
17:55
fgets() Overview
17:56
Coding Example: fgets() - Reading a Line at a Time
18:26
feof()
20:10
feof() Overview
20:09
Coding Example: feof()
20:50
fclose()
23:43
fclose() Overview
23:44
Coding Example: fclose()
25:02
Coding Example: Current Stock
26:10
Coding Example: Current Stock
26:11
trim ()
31:39
trim () Overview and Example
31:40
Homework Challenge
33:35
Homework Challenge
33:36
Web Application Development

36m 36s

Intro
0:00
Lesson Overview
0:16
Lesson Overview
0:17
Version 1.0 Changelog
0:31
catalog.php
0:32
Function Library: fileLIB.php
5:00
Version 1.1 Changelog
27:12
createItemDataArray() and createDeptDataArray()
27:13
outputSimpleItemLink() and outputSimpleDeptLink()
32:06
HTTP & the POST Method

34m 36s

Intro
0:00
Lesson Overview
0:10
Lesson Overview
0:11
HTTP Model
1:28
HTTP Model
1:29
Client-Server Model 2 Steps Process
2:00
HTTP Messages
2:23
HTTP Messages
2:24
HTTP Requests
3:09
HTTP Requests
3:10
Example: HTTP Request Header
3:17
Coding Example: HTTP Requests
4:29
HTTP Responses
7:15
HTTP Responses
7:16
Example: HTTP Response (Header & Body)
8:00
header()
11:47
header() Overview
11:48
Coding Example: header
14:02
Coding Example: header() Error
14:52
GET Method
18:55
GET Method
18:56
Coding Example: GET Method
20:13
POST Method
21:09
POST Method
21:10
Coding Example: Sample Form Using the POST Method
23:50
Accessing POST Data in PHP
26:38
Accessing POST Data in PHP
26:39
Coding Example: Accessing POST Data via $_POST
28:15
GET vs. POST
29:54
GET vs. POST
29:55
Example: Accessing POST Data via $_POST
31:20
Example: Accessing POST Data via $_POST
31:21
Homework Challenge
33:00
Homework Challenge
33:01
Web Application Development

14m 11s

Intro
0:00
Version 2.0 Changelog
0:09
Updating the Site's Current Form to Use the POST Method
0:10
Creating Admin Website
2:55
Dynamically Generated Department List
12:40
Writing to Files

17m 38s

Intro
0:00
Lesson Overview
0:09
Lesson Overview
0:10
Review of File I/O
0:40
Review of File I/O
0:41
fwrite()
1:38
fwrite()
1:39
fputs()
2:20
'r+'
2:31
Coding Example: fwrite()
2:59
fopen() Access Modes
8:41
'a' and 'a+'
8:42
'w' and 'w+'
11:34
Homework Challenge
14:47
Homework Challenge
14:48
Web Application Development

28m 14s

Intro
0:00
Lesson Overview
0:08
Lesson Overview
0:09
Updated Open File Functions
0:19
openItemsDataFile ( ), openDeptsDataFile ( ), and openLastAddedFile ( )
0:20
insertItem()
6:25
insertItem() Overview
6:26
Functions: createItemDataString ( ) and updateLastItemAdded ( )
7:07
addItemToDepartment ()
16:03
addItemToDepartment () Overview
16:04
Functions: createDeptDataString ( ) and updateDepartment ( )
17:55
HTTP POST: File Uploads

22m 51s

Intro
0:00
Lesson Overview
0:10
Lesson Overview
0:11
POST Data Encoding
1:13
POST Data Encoding
1:14
When Data is Included in the Body of the HTTP POST Request and is of the Content Type
1:31
When Uploading Files Using HTTP POST
3:17
Uploading Files
6:22
Uploading Files
6:23
If Encoding Type is Not Set to Multipart/Formdata
9:27
$_FILES Superglobal
10:59
$_FILES Superglobal
11:00
Structure of $_FILES
12:15
Structure of $_FILES: Name, Type, tmp_name, Error, and Size
12:16
Coding Example: $_FILES Superglobal
13:34
Moving an Uploaded File
15:39
Introduction to Moving an Uploaded File
15:40
move_uploaded_file ( ): Definition and Example
16:40
Homework Challenge
21:19
Homework Challenge
21:20
Web Application Development

15m 30s

Intro
0:00
Lesson Overview
0:09
Lesson Overview
0:10
Uploading Item Image File
1:22
Uploading Item Image File
1:23
Uploading Item Image File (cont.)
2:43
Altering insertItem ( )
2:44
Helpfer Functions: getFileExtension ( ) and moveUploadedFile ( )
4:30
isValidItem ( )
13:03
Introduction to Object-Oriented Programming

32m 44s

Intro
0:00
Lesson Overview
0:11
Lesson Overview
0:12
Object-Oriented Programming
0:56
Introduction to Object-Oriented Programming
0:57
Associative Arrays
5:27
Associative Arrays
5:28
Classes
7:27
Classes Overview
7:28
Defining Classes
8:24
Defining Classes
8:25
Declaring Class Properties
9:25
Coding Example: Classes
10:11
Objects
12:18
Objects Overview
12:19
Classes vs. Objects
12:49
Classes vs. Objects
12:50
Instantiating Classes
14:58
Instantiating Classes
14:59
Coding Example: Instantiate an Item Object
16:30
Object Properties
19:21
Access and Set an Object's Property
19:22
Coding Example: Set & Access the Properties of an Item Object
24:23
Homework Challenge
30:22
Homework Challenge
30:23
Web Application Development

17m 47s

Intro
0:00
Lesson Overview
0:11
Lesson Overview
0:12
Version 5.0 Overview
0:50
Version 5.0 Overview and Examples
0:51
Outputting Object Properties
12:38
Outputting Object Properties
12:39
Array Object Properties
14:18
Access and Set Array Value
14:19
Object Methods

39m 57s

Intro
0:00
Lesson Overview
0:12
Lesson Overview
0:13
Object Methods
0:52
Definition of Object Methods
0:53
Calling Object Methods
3:25
Calling Object Methods
3:26
Coding Example: Simple Object Methods
4:44
Object Methods and Return Values
7:02
$this Variable
10:06
$this Variable: Definition and Example
10:07
$this Variable (cont.)
15:51
$this Variable (cont.)
15:52
Getters & Setters
21:21
Getters & Setters Methods
21:22
Object Methods In Strings
25:46
Object Methods In Strings
25:47
Coding Example: Outputting Method Return Values in Strings
27:41
Using $this to Call Other Methods
28:49
Using $this to Call Other Methods
28:50
Homework Challenge
34:18
Homework Challenge: 1-3
34:19
Homework Challenge (cont.)
36:20
Homework Challenge: 4-6
36:21
Homework Challenge (cont.)
37:52
Homework Challenge: 7-10
37:53
Web Application Development

17m 30s

Intro
0:00
Lesson Overview
0:11
Lesson Overview
0:12
Version 6.0 Overview
0:40
Version 6.0 Changes & Examples
0:41
Item Methods
0:53
Item Class Definition: getImageFilename()
0:54
Coding Example: getImageFilename()
1:58
Department Methods
7:33
addItem(), removeItem(), and isItemInDept() Method
7:34
addItemtToDepartment() & buildDeptObject() Functions
11:46
A Default Value Needed to Be Set for $items
16:26
Object Constructors

22m 20s

Intro
0:00
Lesson Overview
0:11
Lesson Overview
0:12
Object Constructors
0:32
Introduction to Object Constructors
0:33
Coding Example: Object Constructors
1:43
Defining Constructors
3:26
Defining Constructors
3:27
Coding Example: Constructors with No Arguments
4:24
Constructor Arguments
8:09
Constructor Arguments
8:10
Coding Example: Constructor Arguments
9:49
Important Notes
16:13
Important Notes
16:14
Homework Challenge
17:35
Homework Challenge: 1 - 4
17:36
Homework Challenge (cont.)
19:13
Homework Challenge: 5 - 9
19:14
Homework Challenge (cont.)
21:40
Homework Challenge: 10 and 11
21:41
Web Application Development

16m 19s

Intro
0:00
Lesson Overview
0:11
Lesson Overview
0:12
Version 7.0 Overview
0:39
Version 7.0 Overview
0:40
Item Constructor
2:19
Item Constructor
2:20
Department Constructor
7:47
Department Constructor
7:48
Customer Constructor
12:23
Customer Constructor
12:24
More Magic Methods

53m 37s

Intro
0:00
Lesson Overview
0:13
Lesson Overview
0:14
Magic Methods
1:12
Magic Methods
1:13
Destructors
2:45
Destructors Overview
2:46
Coding Example: Calling Destructors
4:30
Coding Example: Object Destructor
9:19
_to String ()
16:12
_to String () Overview
16:13
Coding Example: _to String () Magic Method
18:10
Access Modifiers
21:23
Introduction to Access Modifiers
21:24
Access Modifiers: Public
21:39
Access Modifiers: Private
22:18
Access Modifiers: Protected
22:41
Object Properties and Methods
23:06
Coding Example: Public Access Modifiers
26:48
Coding Example: Private Access Modifiers
28:30
_get()
31:37
_get() Overview
31:38
Coding Example: _get () Magic Method
33:30
_set ()
36:23
_set () & the Magic Method
36:24
Using Getters & Setters
44:37
Coding Example: Using Getters & Setters
44:38
Homework Challenge
50:33
Homework Challenge: 1 - 6
50:34
Homework Challenge (cont.)
51:41
Homework Challenge: 7 - 12
51:42
Web Application Development

31m 12s

Intro
0:00
Version 8.0 Review
0:12
Version 8.0 Review
0:13
private Object Properties
1:15
private Object Properties
1:16
Coding Example
2:54
_toString() Methods
6:51
_toString() Methods
6:52
Coding Example
8:09
DataFile Class
13:27
DataFile Class & I/O Operations
13:28
Using DataFile Class: Instantiate a DataFile, DataFile open () Method, and DataFile close () Method
18:09
Homework Challenge
29:35
Homework Challenge
29:36
Classes vs. Objects

37m 49s

Intro
0:00
Lesson Overview
0:09
Lesson Overview
0:10
Class vs. Object Review
0:58
Class vs. Object Review
0:59
Static Properties
2:42
Static Properties
2:43
Scope Resolution Operator (::)
5:26
Scope Resolution Operator (::) & Static Property
5:27
Coding Example: Accessing a Static Property Using the Scope Resolution Operator
7:57
Coding Example: Accessing a Static Property in a Class Definition
10:33
Coding Example: Using a Static Property as an Instance Counter
14:18
Static Methods
18:51
Static Methods Overview
18:52
Coding Example: Static Methods
21:39
Classes vs. Objects
26:28
Classes vs. Objects: Diagrams
26:29
Class Constants
30:24
Class Constants Definition
30:25
Coding Example: Using Class Constants
31:55
Homework Challenge
34:01
Homework Challenge: 1 - 5
34:02
Homework Challenge (cont.)
35:25
Homework Challenge: 6 - 10
35:26
Web Application Development

21m 7s

Intro
0:00
Version 9.0 Overview
0:12
Version 9.0 Changes & Examples
0:13
Output Class
1:08
Output Class & Static Methods
1:09
outputHtmlSelector ( ) Method
2:43
outputItemSelector ( ) Method
4:53
outputDeptSelector ( ) Method
6:42
buildObject() Methods
11:54
buildObject() Methods & Examples
11:55
Exceptions

22m 43s

Intro
0:00
Lesson Overview
0:12
Lesson Overview
0:13
try Blocks
0:44
try Blocks Definition
0:45
catch Blocks
2:03
catch Blocks: Definition and Syntax
2:04
Coding Example: try/catch Blocks
3:48
When an Exception Object is Caught & Error Handling
5:59
Exception Class
7:02
Exception Class
7:03
Coding Example: Using try/catch to Catch an Exception Thrown from a Method
8:04
Re-Throwing Exceptions
16:39
Re-Throwing Exceptions
16:40
Coding Example: Re-throwing an Exception
17:21
Homework Challenge
20:40
Homework Challenge: 1 - 5
20:41
Homework Challenge (cont.)
22:17
Homework Challenge: 6
22:18
Web Application Development

22m

Intro
0:00
Version 10.0 Overview
0:11
Updating addItem.php, addItemToDept.php, and error.php
0:12
Updating DataFile Class: open ( ) Method & try/catch blocks
7:45
Version 10.1 Overview
13:37
Version 10.1 Changes & Examples
13:38
Updating DataFile Class: close ( ) Method & logWarning ( )
20:17
Cookies

39m 47s

Intro
0:00
Lesson Overview
0:09
Lesson Overview
0:10
What is a Cookie?
1:15
Definition of Cookie
1:16
HTTP - A Stateless Protocol
2:17
HTTP - A Stateless Protocol
2:18
Purpose of Cookies
4:10
Set - Cookie Header
6:21
Introduction to Set - Cookie Header
6:22
Coding Example: Set - Cookie Header
7:38
Cookie Header
9:45
Introduction to Cookie Header
9:46
Example: Cookie Header
10:27
setcookie()
12:33
Introduction to setcookie()
12:34
Example: Using setcookie
13:54
Cookies Attributes
15:48
Cookies Attributes Overview
15:49
Common Cookies Attributes: Domain
16:24
Common Cookies Attributes: Path
17:04
Common Cookies Attributes: Expires
19:34
Coding Example: Setting Cookie Attributes
20:58
$_COOKIE Superglobal
27:03
$_COOKIE Superglobal
27:04
Coding Example: Accessing Cookies from PHP Using $_COOKIE
29:45
Security Implications
34:44
Security Implications
34:45
Homework Challenge
36:10
Homework Challenge: 1 - 4
36:11
Homework Challenge (cont.)
37:47
Homework Challenge: 5 - 7
37:48
Web Application Development

39m 11s

Intro
0:00
Lesson Overview
0:17
Lesson Overview
0:18
instanceof Operator
1:34
instanceof Operator
1:35
Objects with Object Properties
2:53
Objects with Object Properties
2:54
Version 11.0 Overview
6:41
Version 11.0 Changes: Cart and CartItem Classes
6:42
Version 11.0 Coding Example
10:40
Version 11.1 Overview
31:03
Version 11.1 Changes & Examples
31:04
Introduction to Sessions

46m 8s

Intro
0:00
Lesson Overview
0:08
Lesson Overview
0:09
What is a Session?
0:53
What is a Session?
0:54
Client-Side Sessions
3:51
Client-Side Sessions
3:52
Server-Side Sessions
5:04
Server-Side Sessions
5:05
Session IDs
6:26
Session IDs
6:27
The SID is Used by the Server to:
7:08
A Client Passes an SID to the Server with Each HTTP Request Via:
8:15
Sessions in PHP
12:19
Sessions in PHP
12:20
session_start()
14:40
session_start() Overview
14:41
Coding Example: Using session_start () to Continue a Session
18:03
$_SESSION Superglobal
22:06
$_SESSION Superglobal Overview
22:07
Coding Example: Setting a Session Variable via $_SESSION
25:22
Accessing Session Data
28:08
Accessing Session Data
28:09
Deleting Session Data
31:43
Deleting Session Data
31:44
Coding Example: Deleting Session Data
32:16
Configuring PHP Sessions
36:14
session.cookie_lifetime, session.cookie_domain, and session.cookie_path
36:15
Coding Example: Configuring PHP Sessions
37:28
Configuring PHP Sessions (cont.)
40:56
session.use_cookies, session.use_trans_sid, and session.use_only_cookies
40:57
Coding Example: Configuring PHP Sessions
42:25
Homework Challenge
42:55
Homework Challenge: 1 - 5
42:56
Homework Challenge (cont.)
44:10
Homework Challenge: 6 - 10
44:11
Homework Challenge (cont.)
45:27
Homework Challenge: 11 - 13
45:28
Web Application Development

11m

Intro
0:00
Version 12.0 Overview
0:12
Version 12.0 Changes Part I: Updating 'viewCart.php' & 'checkout.php'
0:13
Version 12.0 Changes Part II
5:03
Destroying Sessions

29m 59s

Intro
0:00
Lesson Overview
0:12
Lesson Overview
0:13
Destroying Sessions
1:02
Destroying Sessions
1:03
session_destroy()
2:10
session_destroy() Overview
2:11
Coding Example: Setting a Session Variable and Destroying a Session
3:18
Deleting Session Cookies
8:38
Deleting Session Cookies
8:39
Coding example: Deleting Session Cookies
9:17
Review of Steps
21:07
Review of Steps
21:08
Garbage Collection
21:50
Garbage Collection Overview
21:51
Coding Example: Garbage Collection
24:30
Homework Challenge
26:28
Homework Challenge: 1 - 4
26:29
Homework Challenge (cont.)
28:16
Homework Challenge: 5 - 9
28:17
Web Application Development

19m 14s

Intro
0:00
Lesson Overview
0:13
Lesson Overview
0:14
_autoload()
0:46
Introduction to _autoload ()
0:47
Version 13.0 Overview
4:06
_autoload () and SessionManager Class
4:07
Updating 'viewCart.php' & 'checkout.php'
11:16
Introduction to Databases

21m 24s

Intro
0:00
Lesson Overview
0:16
Lesson Overview
0:17
Flat Files
1:09
Flat Files: Definition and Example
1:10
Problems Associated with Using Flat Files as a Database
2:15
Relational Databases
3:29
Relational Databases
3:30
Relational Database Management System (RDBMS)
3:50
Tables
7:43
Tables
7:44
Columns
9:24
Columns
9:25
What is SQL?
10:45
Introduction to Structured Query Language
10:46
Standard Data Types of SQL
12:23
Primary Keys
13:19
Primary Keys
13:20
Primary Key Examples
16:36
Primary Key Examples
16:37
Introduction to MySQL

28m 11s

Intro
0:00
Lesson Overview
0:11
Lesson Overview
0:12
What is MySQL?
1:33
MySQL
1:34
MySQL Monitor
5:16
MySQL Monitor Overview
5:17
XAMPP & MySQL
5:58
In the MySQL Command: hostname, username and -p
7:05
Connecting to a MySQl Server
9:52
Connecting to a MySQl Server
9:53
Using MySQl Monitor
13:48
Using MySQl Monitor
13:49
GRANT Command
15:10
GRANT SQL Command
15:11
Privileges & Objects
18:18
Username, Hostname, and Password
19:37
Specifying Objects
20:05
Creating a PHP User Account
21:41
Creating a PHP User Account Overview
21:42
Meaning of all & *.*
23:35
Example: Creating a PHP User Account
23:48
Required Homework
26:27
Required Homework: 1 - 5
26:28
Required Homework (cont.)
27:28
Required Homework: 6
27:29
Creating Databases & Tables

23m 1s

Intro
0:00
Lesson Overview
0:08
Lesson Overview
0:09
Creating a Database
1:40
Introduction to Creating a Database
1:41
Example: Creating a Database
3:33
CREATE TABLE Command
6:43
CREATE TABLE Command
6:44
Data Types
7:39
Numeric Data Types: INT, INT UNSIGNED, and DECIMAL
7:40
String Data Types: CHAR (M), VARCHAR (M), and TEXT
9:23
Colum Attributes
11:00
PRIMARY KEY Attribute
11:01
AUTO INCREMENT Attribute
11:35
Items Table
13:07
Items Table
13:08
Useful Commands
17:04
SHOW TABLES Command & DESCRIBE Utility Statement
17:05
Example: Creating an Items Table
17:58
Required Homework
20:51
Required Homework: 1 - 6
20:52
Required Homework (cont.)
21:55
Required Homework: 7 - 9
21:56
SQL Command: INSERT

27m 11s

Intro
0:00
Lesson Overview
0:11
Lesson Overview
0:12
INSERT Command
1:20
SQL INSERT Command
1:21
Specifying Values
3:16
Columns with Numeric Data Types
3:17
Columns with String Data Types
3:34
Columns with AUTO INCREMENT
4:07
Inserting Items
5:21
Inserting Items
5:22
Example: Inserting Items
7:03
SQL Text Files
14:04
SQL Monitor Client
14:05
MySQL Monitor & the < Operator
15:15
Example
17:35
Required Homework
22:32
Required Homework: 1 - 6
22:33
Required Homework (cont.)
24:19
Required Homework: 7 - 10
24:20
SQL Command: SELECT

24m 57s

Intro
0:00
Lesson Overview
0:10
Lesson Overview
0:11
SELECT Command
0:42
SELECT Command: Definition and Syntax
0:43
Results of a SELECT Query
1:53
To Specify the Retrieval of All Columns from a Table
3:06
Example: SELECT Command
4:18
WHERE Clause
7:11
WHERE Clause
7:12
A SELECT Query with WHERE Clause has the Following Syntax
8:10
A Where Condition can Contain both Logical and Comparison Operators
9:44
Literal Values
13:24
Literal Values
13:25
Example: Literal Values
14:18
ORDER BY Clause
15:31
ORDER BY Clause & SELECT Query
15:32
Ascending and Descending Order
17:30
An ORDER BY Clause can Specify Multiple Columns to Order the Rows by
18:01
Example: SELECT Query with WHERE and ORDER BY Clause
20:32
Homework Challenge
21:59
Homework Challenge
22:00
Homework Challenge (cont.)
23:54
Homework Challenge
23:55
Using PHP from MySQL

32m 43s

Intro
0:00
Lesson Overview
0:10
Lesson Overview
0:11
PHP/MySQL Architecture
0:56
PHP/MySQL Architecture
0:57
MySQLi Extension
3:05
MySQLi Extension
3:06
Steps to Using MySQL from PHP
5:53
Four Steps to Using MySQL from PHP
5:54
Step # 3
7:18
Connecting to a Database
8:12
To Connect to a MySQL Database
8:13
To Test for Connection Errors
10:20
Running an SQL Statement
11:54
Running an SQL Statement
11:55
Example
13:30
Processing the Results
15:58
For non-SELECT Queries
15:59
MySQLi Object Property: affected_rows
16:19
For INSERT Statements on Tables with an AUTO_INCREMENT Column
18:07
Closing the Connection
19:45
Closing the Connection
19:46
Coding Example
21:24
Coding Example: Using MySQL from PHP
21:25
Homework Challenge
29:00
Homework Challenge: 1 - 4
29:01
Homework Challenge (cont.)
31:10
Homework Challenge: 5 - 9
31:11
Web Application Development

30m 30s

Intro
0:00
Lesson Overview
0:14
Lesson Overview
0:15
sprintf()
1:28
sprintf() Overview
1:29
Example
1:56
INSERT Statements with sprintf()
5:15
INSERT Statements with sprintf()
5:16
Version 14.0 Overview
10:00
Version 14.0 Changes & Examples Part 1
10:01
Version 14.0 Changes & Examples Part 2
21:58
SELECT QUERIES from PHP

24m 22s

Intro
0:00
Lesson Overview
0:14
Lesson Overview
0:15
SELECT Queries
1:21
SELECT Queries
1:22
MySQLi_Result Class
3:17
MySQLi_Result Class: num_rows
3:18
MySQLi_Result Class: fetch_assoc ( ) and fetch_object ( )
3:59
fetch_assoc()
5:17
fetch_assoc() Overview
5:18
Coding Example: Using fetch_assoc()
9:00
stdClass Objects
12:46
stdClass Objects
12:47
fetch_object()
14:19
fetch_object() Overview
14:20
Coding Example: Using fetch_object()
16:45
Freeing Result Set Memory
18:42
Freeing Result Set Memory
18:43
Coding Example: Using free ( )
20:01
Homework Challenge
22:07
Homework Challenge: 1 - 5
22:08
Web Application Development

17m 6s

Intro
0:00
Version 15.0 Overview
0:13
Version 15.0 Changes & Examples Part 1
0:14
Version 15.0 Changes & Examples Part 2
8:43
Linking Tables

24m 32s

Intro
0:00
Lesson Overview
0:16
Lesson Overview
0:17
A Departments Table
1:08
Departments Table
1:09
How Could We Model This in a Table: Option 1
1:26
How Could We Model This in a Table: Option 2
3:12
Database Normalization
4:37
Database Normalization
4:38
Foreign Keys
8:47
Foreign Keys
8:48
Linking Table
11:26
Linking Table
11:27
Multiple Column Primary Keys
15:30
Multiple Column Primary Keys
15:31
Example
18:51
Required Homework
22:34
Required Homework: 1 - 3
22:35
Required Homework (cont.)
24:10
Required Homework: 4
24:11
Web Application Development

24m

Intro
0:00
Version 16.0 Overview
0:11
Version 16.0 Changes
0:12
Version 16.0 Coding Examples
4:12
Version 16.0 (cont.)
18:30
Version 16.0 Changes & Examples Part 2
18:31
SQL Command: DELETE

10m 33s

Intro
0:00
Lesson Overview
0:12
Lesson Overview
0:13
DELETE Statement
0:30
DELETE Statement & Its WHERE Clause
0:31
Delete All Rows From a Table
2:57
Using DELETE from PHP
4:04
Using DELETE from PHP Overview
4:05
Coding Example: Using DELETE from PHP
6:37
Homework Challenge
8:53
Homework Challenge: 1 - 4
8:54
Web Application Development

16m 2s

Intro
0:00
Version 17.0 Overview
0:11
Version 17.0 Changes
0:12
Version 17.0 Coding Example
2:51
Transactions
12:50
Database Transaction
12:51
Steps in Using Transactions
14:00
SQL Command: UPDATE

32m 14s

Intro
0:00
Lesson Overview
0:10
Lesson Overview
0:11
UPDATE Statement
0:54
UPDATE Statement & Its WHERE Clause
0:55
Example: UPDATE Statement
3:32
Using UPDATE from PHP
5:21
Using UPDATE from PHP Overview
5:22
Coding Example: Using UPDATE from PHP
6:53
htmlspecialchars()
9:04
htmlspecialchars()
9:05
Encoding Special Characters
9:23
Coding Example: htmlspecialchars()
13:41
addslashes()
20:40
addslashes()
20:41
Coding Example: addslashes()
22:52
Homework Challenge
27:55
Homework Challenge: 1 - 2
27:56
Homework Challenge (cont.)
30:14
Homework Challenge: 3 - 5
30:15
Homework Challenge (cont.)
30:41
Homework Challenge: 6 - 9
30:42
Web Application Development

12m 33s

Intro
0:00
Version 18.0 Overview
0:12
Version 18.0 Changes
0:13
Version 18.0 Coding Example
1:24
SQL: Joins

42m 16s

Intro
0:00
Lesson Overview
0:11
Lesson Overview
0:12
DATETIME Data Type
1:52
DATETIME Data Type
1:53
Modeling Orders
5:12
Modeling Orders
5:13
Customers Table
10:46
Customers Table
10:47
Example
16:18
Example: Order Table in MySQL
16:19
Joins
22:26
Joins Overview
22:27
Inner Join
23:09
Example: Joins
24:11
Join Conditions
28:14
Join Conditions
28:15
Example
28:32
Join Queries
30:00
Example: Join Conditions in MySQL
30:36
Implicit Joins
34:42
Implicit Joins
34:43
Example: Implicit Joins
35:57
Aliases
37:28
Introduction to Aliases
37:29
Example: Aliases
38:55
Required Homework
40:32
Problem 1
40:33
Problem 2
41:01
Problem 3
41:17
Web Application Development

29m 34s

Intro
0:00
Lesson Overview
0:12
Lesson Overview
0:13
Inserting Orders
0:44
Inserting Orders
0:45
Version 19.0 Overview
3:45
Version 19.0 Changes & Example Part 1
3:46
Version 19.0 Changes & Example Part 2
13:18
Version 19.1 Overview
21:10
Version 19.1 Changes
21:11
Version 19.1 Coding Example
22:18
User Authentication

26m 13s

Intro
0:00
Lesson Overview
0:10
Lesson Overview
0:11
User Authentication
1:31
User Authentication
1:32
Authentication with Sessions
2:34
Authentication with Sessions
2:35
Four Steps in Authentication via Sessions
2:50
Using Sessions to Restrict Access
3:58
Using Sessions to Restrict Access
3:59
Coding Example: Restricted Access Area
4:47
Authentication Methods
5:54
Authentication Methods Overview
5:55
Coding Example: Authentication Methods
7:31
Logging Out
9:57
Logging Out
9:58
Coding Example: Log Out
10:47
Users Table
13:50
Users Table
13:51
Example: Creating a Users Table
15:08
Password Hashing
17:30
Password Hashing
17:31
PHP and MySQL Built-in Hash Functions: sha1 ( ) and md5 ( )
18:43
Coding Example: Password Hashing
19:27
Required Homework
24:41
Required Homework: 1 - 4
24:42
Web Application Development

14m 36s

Intro
0:00
Version 20.0 Overview
0:13
Version 20.0 Changes & Examples Part 1
0:14
Version 20.0 Changes & Examples Part 2
5:05
Version 20.0 Changes & Examples Part 3
7:29
Version 20.0 (cont.)
8:31
Version 20.0 Changes & Examples Part 4
8:32
Loading...
This is a quick preview of the lesson. For full access, please Log In or Sign up.
For more information, please see full course syllabus of Advanced PHP
Bookmark & Share Embed

Share this knowledge with your friends!

Copy & Paste this embed code into your website’s HTML

Please ensure that your website editor is in text mode when you paste the code.
(In Wordpress, the mode button is on the top right corner.)
  ×
  • - Allow users to view the embedded video in full-size.
Since this lesson is not free, only the preview will appear on your website.
  • Discussion

  • Study Guides

  • Download Lecture Slides

  • Table of Contents

  • Transcription

  • Related Services

Lecture Comments (2)

1 answer

Last reply by: Mustaqim Mustapha
Sun May 13, 2012 3:02 PM

Post by Mustaqim Mustapha on May 13, 2012

Hi, great teaching skills that you have, ive been following your videos all the way from introduction to PHP. Im building a website that necessite image uploads, my question is, is there a way to create a script that is able to connect to the camera of a device if i run the website on mobile devices.

For example, i have a browse button (if i run the wabpage on the computer)and at the same time, i want my webpage can be run on mobile devices and so, i need to have 'choose from library' and 'take a picture' buttons if i open the webpage on mobile devices.

Do you know if its possible to make such script or do you have any webpages that i can consult to?

Thank you.

HTTP POST: File Uploads

  • When using the POST method to submit data from an HTML form, the data is encoded using URL-encoding by default.
  • When uploading files using HTTP POST however, the form’s data must be encoded differently. The form data should be of the content type:
    • multipart/form-data
  • This is done by setting the enctype attribute of the HTML <form> tag to multipart/form-data.
  • An HTML <input> tag with its type attribute set to file is used to upload files from an HTML form.
  • In PHP, information about files uploaded to a script are accessed using the $_FILES superglobal. The superglobal is a multi-dimensional associative array where the keys are the names of any file input tags submitted on a form and the values are associative arrays containing information about each file uploaded.
  • The associative array provided for each file uploaded by $_FILES has the following keys:
    • name – original filename of the uploaded file
    • type – content type of the uploaded file
    • tmp_name – an absolute path to the location where the file has been temporarily uploaded to
    • error – error code for file upload
    • size – number of bytes of the file uploaded
  • An error code of 0 means a file was successfully uploaded.
  • Uploaded files are stored in the temporary directory of the environment PHP is running in. This directory can be changed by modifying the upload_tmp_dir directive in ‘php.ini’. In XAMPP, this directive has been set to: 'xampp/tmp'.
  • move_uploaded_file() will move an uploaded file from the temporary upload directory to the directory of your choice. Note: the user account PHP is being run as must have write permissions on the directory the file is being moved to.
  • Additional Resources:

HTTP POST: File Uploads

Lecture Slides are screen-captured images of important points in the lecture. Students can download and print out these lecture slide images to do practice problems as well as take notes while watching the lecture.

  • Intro 0:00
  • Lesson Overview 0:10
    • Lesson Overview
  • POST Data Encoding 1:13
    • POST Data Encoding
    • When Data is Included in the Body of the HTTP POST Request and is of the Content Type
    • When Uploading Files Using HTTP POST
  • Uploading Files 6:22
    • Uploading Files
    • If Encoding Type is Not Set to Multipart/Formdata
  • $_FILES Superglobal 10:59
    • $_FILES Superglobal
  • Structure of $_FILES 12:15
    • Structure of $_FILES: Name, Type, tmp_name, Error, and Size
    • Coding Example: $_FILES Superglobal
  • Moving an Uploaded File 15:39
    • Introduction to Moving an Uploaded File
    • move_uploaded_file ( ): Definition and Example
  • Homework Challenge 21:19
    • Homework Challenge

Transcription: HTTP POST: File Uploads

Hello again, and welcome back to Educator.com's Advanced PHP with MySQL course.0000

In today's lesson, we are going to be learning how to upload files using the HTTP POST method.0005

The first thing we are going to talk about is something known as POST data encoding.0012

which describes how the data that you submit from an HTML form using the POST method is encoded0016

before it is sent to the web server, so that the web server knows how to interpret it.0024

We are going to go through the process of uploading some files, and then we are going to talk about what is known as the FILES superglobal.0028

And that is the way to access information about uploaded files from your PHP code.0037

Our POST data, we have been accessing using the POST superglobal.0045

We are still going to use that to access general POST name/value pairs; but for file uploads, we are going to be using this new superglobal.0050

And then, additionally, we are going to talk about, once you have uploaded a file on an HTML form,0060

how, in your PHP script, you can move that to a location that you want to--0065

because when files are uploaded, they are uploaded to the temporary directory.0069

When the POST method is used to submit an HTML form, data is encoded, by default, using URL encoding.0076

We talked a little bit about that in our review on HTTP, where we introduced the POST method.0083

When you use the POST method to submit a form, it creates (as we learned in our HTTP lesson) a header of the HTTP that describes0093

that it is using the POST method; it tells a little bit about what the content is...0105

There is a blank line, and then there is the body of that HTTP request, which contains the data that you are submitting on the form.0109

Well, that data, by default, follows this content type called application/ and this long phrase here, which says it is URL-encoded data.0117

And if we go and look at, for example, a form we are going to be working with today, called enctype.html0130

(which refers to encoding type)--it is a form that is going to allow you to submit a first name and a last name.0137

Here, we have explicitly set the encoding to this URL-encoded form; but if we left it out by default, that would be the default.0147

And so, if we go ahead and submit the form, and we use our Firebug add-on to see what the POST data looks like0154

(and in this case, we are just posting the data to the same file, enctype.html),0168

if we look at our POST data, we can see that here, the data we supplied was URL-encoded.0176

Hopefully, you can see that; it is a little bit small.0183

And it says the content type was application/x-www-form-urlencoded.0185

That is the standard encoding for data submitted by an HTML form using POST.0191

However, when we want to upload a file, you need to change that encoding; you need to use a different type of encoding.0198

And the content type in the encoding that you are going to be using is something called multipart/form-data.0205

The way that you do that is by setting the enctype attribute of your HTML form tag.0213

So, if we go back and look at enctype.html, and we scroll over here, we can see that it was set to this URL encoding, which is the default anyway.0221

And if we change it to multipart/form-data, we are going to see that, when we submit this form,0234

even though we are not doing a file upload here, we are going to take a look at how that data is encoded in the body of our POST request.0243

So, if we go ahead and run this same form again (actually, I have to refresh it so that it updates with the new encoding type),0252

and we go ahead and submit the query, if we look at our POST data, we can see that it is very different.0268

Whereas before (let me open up a second window, so we can compare them, and get rid of this so it goes to default),0277

in the old way, our POST data was formatted in this URL-encoded method down here;0305

in the new method using the multipart/form-data, what it does is sets the content type to multipart/form-data.0311

And then, it has our data that we submitted encoded in a different way.0320

Here, you can see that it is saying that we have submitted a variable called firstName; the value of it is Matthew.0326

We have a variable named lastName; we are submitting the value for that of Machaj.0334

The way that this works is: for each input element that you have on a form that you submit,0340

when you submit it using multipart/form-data as the encoding, it defines this string, known as a boundary.0346

And it creates a boundary, and in between each boundary, it has the information about each input element that was submitted.0354

So here, we have firstName and lastName.0362

It is not really important how that encoding works--the browser does it for you, and PHP knows how to interpret that and understand it.0366

But it is just to give you an idea of what is going on behind the scenes, when you use this multipart/form-data,0373

which is what we are going to be using for uploading files.0379

The way we upload files using an HTML form is using an input tag that has the type 'file.'0383

And so, we create this input tag and set the type equal to file, and then we associate a name to it, just as we would any other input element.0391

So, we are going to say that this file we are going to be uploading is going to be associated with the name imageFile.0399

And let's go and take a look at a script that shows this in action: uploadFile.html is a file we have created0405

that is going to submit the form data using multipart/form-data encoding here at the end.0413

But what we have done is added an extra input element here, a file input element called uploadedFile.0422

And so, what we are going to do is try uploading a text file.0428

And the file is called uploadFile.txt, and it just contains some basic text information.0431

And then, we are going to take a look at what the body of the POST data looks like, now that we have included an uploaded file.0438

If we fill out the form as before, this time we are going to include this uploadFile.txt, and we submit the form.0446

We go and look at our POST data (the body of the POST request); we can see that things have changed a little bit.0458

We still have our two sections for the firstName and lastName variable.0466

Here, firstName is equal to Matthew; lastName is equal to Machaj.0471

But then, we have a new section down here that is for our file that we uploaded.0473

Here, we can see the name that we gave to this uploadFile input element; it is called uploadedFile.0477

It lists the file name of the file that we uploaded, which was called uploadFile.txt.0485

And then, it provides the content type of that file that we uploaded (in this case, it was plain text).0490

And then, it provides the information or the data of that particular file.0495

And so, that is how the multipart/form-data (the body) changes a little bit when you add a file to upload.0500

Now, if we do the same thing...that was on a text file; if we do it on a binary file (for example, an image,0509

which is something we are going to be doing in our web application for uploading item images), and we submit the form,0515

and we look at the POST data, we can see: everything is the same here, except that, in our third section,0523

the file name for uploadedFile has been changed to the GIF file that we uploaded; the content type has been changed to image/gif,0532

which says the data file we have uploaded is a GIF file; and then, this right here is the data of the GIF image.0539

It is not legible, because it is not text--it is binary data.0550

But this is the information contained in that GIF file, and the web server will know how to interpret that.0554

Now, one thing to note is that if (let's go back and look at our slide) you are trying to upload a file,0562

and you don't set the encoding type to multipart/form-data, then the file doesn't actually get uploaded.0570

And all that you end up getting is a name/value pair, which is the name of the file input element that you set in your form0577

(in this case, imageFile), and then its value gets set to the name of the file that you uploaded.0588

For example, if we erase our encoding type from multipart/form-data and set it to the default and save this file,0593

when we go and refresh the file and upload our form...we try to upload an image file, and we submit it or post the form data...0607

we can see that what it has done is encoded our data as URL-encoded data.0628

It has the first name and last name encoded, as you would expect; and then, as mentioned, it just says that the uploadedFile variable is named blank.gif.0635

That is all the information, if this data were being posted to a PHP script, that you would get.0643

The file would not actually have been uploaded.0649

That is one thing that is important to notice: you have to be careful to appropriately set the encoding type for your form.0651

How do we access files that we have uploaded and information about those files in PHP?0661

Well, we mentioned, in the lesson overview, that there is another superglobal that PHP provides called $_FILES.0668

That contains information about all of the different files that have been uploaded by a particular script.0676

FILES is a multidimensional array, and the keys of that array are the names of any input file elements that you had.0682

For example, you can upload multiple files on a particular web page.0691

For example, you could have multiple input file elements.0697

Let's say we call this one uploadedFile2.0706

The keys of this FILES array are the names of those file input elements.0712

For example, the way we would access information about the uploadedFile input tag is: we would use uploadedFile as the key to the FILES array.0717

Now, what that is going to return is an associative array that contains information about that different file that was uploaded.0729

The FILES superglobal is a superglobal that provides information about all of the files that a particular form has uploaded.0736

And then, as we know, the keys to that file are the names of any file input elements we have in our particular HTML form.0746

And the associative array that it returns for a particular uploaded image has a couple of keys in it.0753

The first one is the key name, which is the original name of the uploaded file.0761

There is a type key, which is the content type of the uploaded file.0765

For example, if we uploaded a GIF image, it would be image/gif.0768

A really important one is called temp_name, which is an absolute path to the temporary location of the uploaded file,0773

because when you upload a file using an HTML form, it uploads it to a temporary directory.0779

It has an error key, which provides an error code for the file upload, which says if any problems occurred during the upload.0786

And then, it has a size key that says the number of bytes in the file that was uploaded.0794

One thing to note is that an error coded 0 means that a file was successfully updated without any problems.0798

And if you look at this link here, which is in the Quick Notes, you can take a look at some of the other errors that are possible to be set in the FILES superglobal.0805

If we go and look at our uploadFile.html, the action has been updated so that, instead of just posting the information to itself,0815

it is posting to a PHP script we have created, call processFileUpload.php.0828

Everything else in the form is the same; and if we look at our processFileUpload.php form, we can see that0835

what we are doing is accessing the FILES superglobal, which is going to contain information about all of the uploaded files.0844

In this case, we are saying, "Give us the information about the file that was uploaded with the file input element named uploadedFile."0850

If we look back at our form, we can see that our file input element had the name uploadedFile.0861

And then, this is just going to output the data that is contained in that FILES associative array.0866

If we go and try to upload a file again, now it is going to post it to this script.0873

I'm not going to bother including a first and last name--just upload a file.0878

If we upload the text file uploadFile.txt, and we go ahead and try and upload that,0882

we can see here that the FILES array, in the key uploadedFile, contains an associative array with this information.0889

And this is what we had discussed in the slide we were just on.0898

The name of the file that was uploaded was uploadFile.txt, and that is the name of the file on the client machine.0902

The type of the file is a plain text file, in this particular case.0908

This right here, which is really important, lists where that file has been temporarily saved.0912

And we can see that it has been given this random file name with a .tmp extension, and it is located in this temporary directory.0918

We can see that the error code was 0, which means that it was successfully uploaded.0927

And then also, we can see that it had 87 bytes; that was how big the file was.0931

By default, as mentioned, when you upload a file using an HTML form, it gets stored in a temporary directory.0943

And by default, it gets stored in a temporary directory of the environment that PHP is running in.0949

Now, one thing that you can do is: there is a configuration directive in php.ini called upload_tmp_dir,0956

and that allows you to set where you want any uploaded files to be stored.0963

In this case, in XAMPP, this upload_tmp_dir directive is set to this tmp directory in the xampp root directory.0969

And so, if we go back and look at our script, we can see that that is what we have here.0979

Within our Windows User folder, we have our XAMPP folder, and then we have this tmp directory.0985

And that is where it stores uploaded files; so we have that configuration set in XAMPP, and by default, it is this directory here.0993

Now, typically what you are going to want to do is: you are not going to want1002

to leave that in a temporary directory--you are going to want to move it somewhere.1004

For example, if you are uploading an image with an item for our store, we are going to store it in the Images directory for our application.1006

Well, PHP provides a function called move_uploaded_file, which allows you1014

to move an uploaded file from the temporary directory to the directory of your choice.1019

Now, the one thing to note is that whatever directory you are going moving it to, you have to have write permissions on that directory.1026

And specifically, the user that the PHP Interpreter is running as has to have write permissions on that directory.1033

Let's take a look at a script that is going to use this move_uploaded_file function.1040

Here is our script called move_uploaded_file.php, which we are going to post our form data to.1048

At the beginning here, we have the same output as we had on our last form, where we are just updating the information related to the uploaded file.1055

And then, what we do is: we are creating a string that is a path to where we want to move that uploaded file.1063

In this particular case, we want to store it in our lecture_examples directory, and we want to give it the same name that it was uploaded with.1070

So, the name of the original file on the client that was uploaded is in this position in the FILES associative array.1078

We go to FILES; we look up our uploaded file image; and then, we get the name.1093

If we look back at our script, we can see, the name is the file that we have uploaded.1099

What we do is create the path of where we are going to move it to; and in this particular case, we are just going to move it to the lecture 9 examples directory.1109

We are going to name it the same name that it was uploaded as.1115

This is just a little information that is output, that is saying, "We are moving the file from this temp location to this new location."1119

And then here, we call the move_uploaded_file function.1126

And what we do is provide the source file...this takes two parameters: the first one is the source file,1131

or the path to the temporary file; and the temporary file is stored in this tmp_name key in the FILES superglobal.1137

Again, if we look back here, we can see that tmp_name for this particular file was stored as phpB704.tmp.1148

So, when we provide this value to our move_uploaded_file, it is going to know where the temporary file is located.1155

And then, we are going to pass it the path to the new location, where we are going to store the particular file.1165

I'm just going to update our uploadFile form, so that it sends the data to this new move_uploaded_file script.1171

I'll go ahead and refresh that script.1190

And if we look (just so you know) right now, the files we are uploading are located in the data directory of our lecture 9 examples directory.1194

And what we are going to be doing is uploading one of those files to this same directory where all of these scripts are.1202

In this case, you can see that there are just two HTML files and a PHP file.1208

If we go ahead in our form and upload this blank.gif file, what we are going to be doing is uploading it and moving it to the same directory as the script.1212

When we submit the form (minimize this) we can say that the name of the file we uploaded was blank.gif.1222

It was a GIF file; this is the temporary name that it was assigned when it was uploaded to the xampp tmp directory.1234

There were no errors, and it was 799 bytes.1241

Here is our little output message that says the file was moved from this tmp file name to our lecture_examples/lecture_9 directory,1246

and it called blank.gif, which is the same name of the file as it was originally uploaded.1255

If we go back and look at our lecture 9 directory, we can see that blank.gif is now in there.1261

And if we go back and do it in the web browser, we can see that blank.gif has been uploaded into this file.1265

That is how you move a file from a temporary directory into the directory of your choice.1273

For today's homework challenge, I want you to create an HTML form that allows you to upload a file.1281

It is going to include an input element of the file type.1287

And then, I want you to create a PHP script that is going to process the file upload.1293

The script should output all of the information about the uploaded file that is contained in the FILES array.1297

And if you remember, you are going to have to access that information by providing a key to FILES.1303

And that key is going to be the name that you associate with your file input element.1309

And then, move the uploaded file from whatever temporary directory PHP assigned it to (the default XAMPP distribution is going to be xampp/tmp).1314

And then, move it into the same directory as whatever script you create.1325

So, you will be doing the same thing that we had done in our example in the lectures.1328

And then, just run the script and verify that the file was successfully moved to where it was supposed to be.1334

A couple things to make sure of: make sure that you appropriately set the encoding type attribute of your HTML form tag to multipart/form-data.1340

Otherwise, it is not going to work: it is not going to update the file, and you will not be able to access any information about the file in that FILES superglobal.1348

And then also, when moving the file, I want you to make use of the move_uploaded_file that is built into PHP.1359

That ends today's lesson; thank you for watching Educator.com--I look forward to seeing you next time.1366

Educator®

Please sign in to participate in this lecture discussion.

Resetting Your Password?
OR

Start Learning Now

Our free lessons will get you started (Adobe Flash® required).
Get immediate access to our entire library.

Membership Overview

  • Available 24/7. Unlimited Access to Our Entire Library.
  • Search and jump to exactly what you want to learn.
  • *Ask questions and get answers from the community and our teachers!
  • Practice questions with step-by-step solutions.
  • Download lecture slides for taking notes.
  • Track your course viewing progress.
  • Accessible anytime, anywhere with our Android and iOS apps.