0% found this document useful (0 votes)
230 views

COM 411 Web Dev First Note-1

Client-server architecture divides computing systems into clients and servers with distinct roles. Clients are user devices that make requests, while servers process requests and provide resources and services. This model is prevalent on the internet, with examples including web browsing where clients (browsers) request pages from servers. It offers advantages like scalability, centralized management, and improved security.

Uploaded by

johnmic07047
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
230 views

COM 411 Web Dev First Note-1

Client-server architecture divides computing systems into clients and servers with distinct roles. Clients are user devices that make requests, while servers process requests and provide resources and services. This model is prevalent on the internet, with examples including web browsing where clients (browsers) request pages from servers. It offers advantages like scalability, centralized management, and improved security.

Uploaded by

johnmic07047
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 105

Client-Server Architecture

Client-server architecture is a computing model that divides a system or network into two
distinct roles: the client and the server. These roles have different responsibilities and work
together to provide various services and functionalities. Here's an explanation of client-server
architecture with examples:

Fig: Client-Server Model

Fig: Client-Server Architecture


Client:
 A client is a user or a device that requests services or resources from a server.
 Clients are typically end-user devices such as computers, smartphones, or tablets.
 Clients initiate communication with the server to request data or services.
 Clients are responsible for the user interface and presenting data to users.
 Example: Web Browsers
When you use a web browser (client) to access a website, it sends a request to a web server (server)
for web pages. The server processes the request and sends back the web pages to be displayed in
your browser.
Server:
 A server is a powerful computer or software system designed to provide services, data, or
resources to clients.
 Servers are responsible for processing client requests and responding with the requested
data or services.
 Servers can be specialized for various purposes, such as web servers, database servers,
email servers, or file servers.
 Example: Email Servers
When you send an email using your email client (e.g., Outlook or Gmail), it communicates with
an email server (e.g., SMTP server) to send your message. When you check your inbox, the email
client connects to an email server (e.g., IMAP server) to retrieve your emails. The server stores
and manages your emails, and the client accesses them as needed.
Client-server architecture offers several advantages:

 Scalability: Servers can handle multiple client requests simultaneously, making it easy to
scale services to accommodate more users or devices.
 Centralized Management: Data and resources are typically centralized on servers,
making it easier to manage and secure them.
 Distributed Processing: Complex tasks can be distributed across multiple servers,
enabling more efficient processing and resource utilization.
 Client Diversity: Clients can be diverse (e.g., different types of devices and operating
systems) while still accessing server-based services.
 Improved Security: Servers can implement security measures to control and monitor
access, enhancing data protection.
Client-server architecture is prevalent in various computing systems, including web applications,
database management systems, email services, online gaming, and more. It enables efficient
communication and resource sharing between clients and servers, offering a structured and
organized approach to networked computing.
Web Pages
Webpages are documents or files displayed in web browsers, typically created using HTML
(Hypertext Markup Language) and often including CSS (Cascading Style Sheets) and JavaScript
for design and interactivity. Webpages are a fundamental component of the World Wide Web, and
they are used to present information, interact with users, and provide various online services.
Here's an explanation of webpages with examples:

Components of Webpages:
 HTML (Hypertext Markup Language): HTML is the core language used to structure the
content of a webpage. It consists of elements, such as headings, paragraphs, links, images,
and more, that define the page's structure.
 CSS (Cascading Style Sheets): CSS is used for styling webpages, allowing web designers
to control the layout, colors, fonts, and other visual aspects of the page.
 JavaScript: JavaScript is a programming language used to add interactivity and dynamic
behavior to webpages. It can be used for features like form validation, animations, and data
manipulation.

Examples of Webpages:
Informational Webpage:
Example: Wikipedia
Description: Wikipedia's webpages present information on a wide range of topics. They contain
text, images, and links, allowing users to access and learn about various subjects.
E-commerce Website:
Example: Amazon
Description: E-commerce webpages like Amazon enable users to browse and purchase products
online. These pages include product listings, images, descriptions, reviews, and shopping cart
functionality.
Social Media Profile:
Example: Facebook Profile
Description: Social media webpages display user profiles with personal information, posts,
images, and interactions with friends or followers.
News Website:
Example: CNN
Description: News websites provide up-to-date news articles, videos, and other multimedia
content, with links to navigate to different categories and stories.
Search Engine Results Page (SERP):
Example: Google Search Results
Description: A SERP webpage displays search results in response to a user's query, listing relevant
websites, images, and other information.
Blog Post:
Example: WordPress Blog Post
Description: Blog posts are webpages that contain articles, images, and comments. They are used
by individuals and organizations to share information, opinions, and news.
Web Application Dashboard:
Example: Gmail
Description: Web application dashboards provide a user interface for accessing and managing
specific services. Gmail's webpage offers email-related features like composing, sending, and
organizing messages.
Online Learning Platform:
Example: Coursera Course Page
Description: Online learning platforms host webpages for individual courses, containing video
lectures, assignments, quizzes, and discussions.
Personal Portfolio Website:
Example: Personal Portfolio of a Web Designer
Description: Personal portfolio webpages showcase the work and skills of individuals, such as web
designers or artists. They often include images, descriptions, and contact information.
Weather Forecast Page:
Example: The Weather Channel Forecast
Description: Weather forecast webpages provide real-time weather information with graphical
representations of temperature, precipitation, and more for specific locations.
Webpages play a crucial role in the dissemination of information and services on the internet. They
can vary in complexity, from simple static pages to highly interactive web applications, and are
designed to cater to different needs and user experiences.
Static And Dynamic Webpage
Static and dynamic webpages are two fundamental types of web content that differ in terms of how
they are generated and displayed to users. Here's an explanation of both types:
Static Webpages:
Static webpages are pre-generated HTML documents that remain unchanged unless manually
edited and updated by a web developer.
They do not change in response to user input or real-time data.
Characteristics:
 Content is fixed and remains the same for all users.
 HTML, CSS, and possibly JavaScript are used to structure and style the content.
 There is no interaction or data processing on the server side.
Examples:
Brochure websites: These websites provide information about a company, product, or service and
do not require user-specific data or interactions.
Personal blogs: Blogs that display articles or posts with static content.
Landing pages: Single webpages designed for marketing purposes and containing fixed
information about a product or promotion.
Advantages:
 Simplicity: Static webpages are easy to create and host.
 Speed: They load quickly because the content is pre-rendered and doesn't require server-
side processing.
Disadvantages:
 Limited interactivity: Static webpages cannot provide dynamic user experiences.
 Manual updates: Any changes or updates to content require manual editing of the HTML
code.
Dynamic Webpages:
Dynamic webpages are generated on the server in real-time or in response to user input.
They can change based on user interactions, database queries, or other external factors.
Characteristics:
 Content can vary based on user-specific data or preferences.
 Server-side scripting languages (e.g., PHP, Python, Ruby) and databases (e.g., MySQL,
PostgreSQL) are used to create dynamic content.
 Real-time data processing and user interaction are possible.
Examples:
 Social media platforms: Platforms like Facebook, Twitter, and Instagram display real-
time feeds, notifications, and user-specific content.
 E-commerce websites: Sites like Amazon or eBay update product availability, prices, and
recommendations based on user behavior and inventory status.
 Web applications: Apps like Gmail, Google Maps, and online banking services provide
dynamic content and features.
Advantages:
 Interactivity: Dynamic webpages can respond to user input and provide personalized
content.
 Real-time updates: Information can change instantly based on changing data or user
actions.
Disadvantages:
 Complexity: Developing and maintaining dynamic websites can be more complex and
require server-side programming expertise.
 Slower load times: Dynamic webpages may take longer to load because they involve
server-side processing.
In summary, static webpages are simple, fixed HTML documents that do not change without
manual intervention. Dynamic webpages, on the other hand, are generated in real-time, allowing
for interactivity, user-specific content, and the display of real-time data. The choice between static
and dynamic webpages depends on the specific requirements of a website or web application.
Many modern websites and applications use a combination of both static and dynamic elements to
provide the best user experience.
PHP
PHP, which stands for "Hypertext Preprocessor," is a widely used server-side scripting language
for web development. It is primarily designed for creating dynamic web pages and web
applications, allowing developers to embed PHP code within HTML and execute it on the server
before sending the resulting HTML to the client's web browser. PHP is known for its ease of use,
flexibility, and robust community support. Here are some key aspects and uses of PHP:
Server-Side Scripting:
PHP is executed on the server, and the resulting HTML is sent to the client's browser. This means
that PHP code is not visible to the end user, enhancing security by keeping sensitive logic on the
server.
Embedding in HTML:
PHP code can be easily embedded within HTML, allowing developers to mix dynamic content
and logic with static web content. PHP code is enclosed in <?php ... ?> tags.
Database Integration:
PHP has extensive support for database integration, making it a popular choice for building
database-driven web applications. It can connect to various database management systems, such
as MySQL, PostgreSQL, and SQLite, to retrieve and manipulate data.
Server Compatibility:
PHP is compatible with various web servers, with the most common being the Apache HTTP
Server. It can also run on other web server software like Nginx and Microsoft IIS.
Open Source:
PHP is open-source, meaning it is freely available and can be modified and extended by the
community. There is an extensive collection of pre-built PHP functions and libraries available.
Cross-Platform:
PHP is cross-platform, which means it can run on different operating systems, including Windows,
Linux, macOS, and more.
Wide Adoption:
PHP has been widely adopted and is the basis for many content management systems (CMS) such
as WordPress and Joomla, as well as e-commerce platforms like Magento.
Common Uses of PHP:
 Web Development: PHP is extensively used to create websites and web applications, both
small and large. It's particularly popular for building e-commerce sites, blogs, forums, and
content management systems.
 User Authentication: PHP is often employed to handle user authentication and access
control, making it possible to create secure login and registration systems.
 Form Processing: PHP can process form data submitted by users, validate it, and interact
with databases to store or retrieve information.
 Content Management Systems (CMS): Many popular CMS platforms, including
WordPress, Drupal, and Joomla, are built using PHP, enabling users to create and manage
content for their websites.
 E-commerce Websites: PHP can be used to develop and maintain online shopping
platforms, with support for product catalogs, shopping carts, and payment processing.
 Data Handling: PHP is used to interact with databases, manipulate data, and generate
dynamic content, such as real-time news feeds or dynamic reports.
 API Development: PHP can be used to create web APIs (Application Programming
Interfaces) for third-party integration or mobile app development.
 Server-Side Scripting: PHP can be employed for server-side scripting to automate tasks,
manage server resources, and create custom server-side scripts for various purposes.
PHP is a versatile and powerful scripting language used by millions of web developers worldwide.
It continues to evolve with each new version, incorporating features and improvements to stay
relevant and efficient in modern web development.
MySQL
MySQL is a popular open-source relational database management system (RDBMS) that is
commonly used in web development to store, manage, and retrieve data. MySQL is often used in
conjunction with PHP to create dynamic web applications that require data storage and retrieval.
Here's an explanation of MySQL and its connection to PHP:

 MySQL is an RDBMS, which means it organizes data in tables with rows and columns,
allowing developers to establish relationships between different data sets.
 It uses Structured Query Language (SQL) for querying and managing data.
 Open Source and Free: MySQL is open source and freely available, making it a cost-
effective choice for many web applications.
 Scalability: MySQL is scalable, capable of handling both small-scale and large-scale
applications. It is often used in high-traffic websites and applications.
 Security: MySQL offers robust security features, including user authentication and
authorization, to protect data from unauthorized access.
 Performance: MySQL is known for its fast performance and efficient data retrieval and
storage mechanisms.
Connection between MySQL and PHP:
PHP and MySQL can work together to create dynamic web applications that interact with
databases. Here's how they connect:
PHP for Server-Side Scripting:
 PHP is a server-side scripting language, which means it runs on the web server and
generates dynamic content on the server before sending it to the client's web browser.
 PHP can process user requests, communicate with the MySQL database, and generate
HTML pages dynamically based on the retrieved data.
MySQL as the Database Backend:
 MySQL is used as the database backend where data is stored and organized.
 PHP scripts can connect to the MySQL database to retrieve data, insert, update, or delete
records, and perform various database operations.
Database Connectivity:
 PHP provides functions and libraries for connecting to MySQL databases. The most
commonly used extension for this purpose is MySQLi (MySQL Improved) and PDO (PHP
Data Objects).
 Developers can establish a connection to the MySQL database server, send SQL queries,
and retrieve the results using PHP functions and objects.
Executing SQL Queries:
PHP scripts create and execute SQL queries to interact with the MySQL database. These queries
can be simple SELECT queries to retrieve data, INSERT queries to add new records, UPDATE
queries to modify existing data, and DELETE queries to remove records.
Here is a basic example of how PHP and MySQL are connected:
<?php

// Establish a connection to the MySQL database

$mysqli = new mysqli("hostname", "username", "password", "database_name");

// Check the connection

if ($mysqli->connect_error) {

die("Connection failed: " . $mysqli->connect_error);

// Execute a SQL query to retrieve data

$query = "SELECT * FROM users";

$result = $mysqli->query($query);

// Process and display the retrieved data

if ($result->num_rows > 0) {

while ($row = $result->fetch_assoc()) {

echo "Name: " . $row["name"] . "<br>";

} else {

echo "No records found.";

// Close the database connection

$mysqli->close();

?>
In this example, PHP connects to a MySQL database, executes a SELECT query to retrieve user
data, and then processes and displays that data. This is a simple illustration of how PHP and
MySQL can work together in a web application. However, in real-world applications, you would
also implement error handling, security measures, and more complex data operations.
BASIC PHP SYNTAX
PHP is a server-side scripting language that is embedded within HTML to create dynamic web
pages. Below is the basic syntax of PHP with an example
<?php
// PHP code goes here
?>
Example of a Simple PHP Script

In this example, we have an HTML document that includes PHP code. Here's a breakdown of the
PHP elements in the example:

<?php and ?> are PHP delimiters. They mark the beginning and end of PHP code.

Inside the PHP block, we have echo followed by a string. The echo statement is used to output text
to the web page. In this case, it displays the text "Today is" concatenated with the current date.

date("Y-m-d") is a PHP function that retrieves the current date in the format "Y-m-d" (year, month,
day).
The result of the PHP code is embedded within an HTML <p> element, so it will be displayed as
part of the web page.

When you load this PHP script in a web browser, you will see the current date displayed on the
web page.

This is a very basic example of PHP usage, and PHP can do much more, including processing
forms, interacting with databases, and creating dynamic web applications. As you become more
familiar with PHP, you can explore its extensive capabilities for web development.
Note

 PHP is an acronym for "PHP: Hypertext Preprocessor"


 PHP is a widely-used, open source scripting language
 PHP scripts are executed on the server
 PHP is free to download and use

What is a PHP File?


 PHP files can contain text, HTML, CSS, JavaScript, and PHP code
 PHP code is executed on the server, and the result is returned to the
browser as plain HTML
 PHP files have extension ".php"

What Can PHP Do?


 PHP can generate dynamic page content
 PHP can create, open, read, write, delete, and close files on the server
 PHP can collect form data
 PHP can send and receive cookies
 PHP can add, delete, modify data in your database
 PHP can be used to control user-access
 PHP can encrypt data

With PHP you are not limited to output HTML. You can output images or PDF
files. You can also output any text, such as XHTML and XML.
Comments in PHP
A comment in PHP code is a line that is not executed as a part of the program.
Its only purpose is to be read by someone who is looking at the code.

Comments can be used to:

 Let others understand your code


 Remind yourself of what you did - Most programmers have experienced
coming back to their own work a year or two later and having to re-figure
out what they did. Comments can remind you of what you were thinking
when you wrote the code

PHP supports several ways of commenting

Syntax for single-line comments:

<!DOCTYPE html>
<html>
<body>

<?php
// This is a single-line comment

# This is also a single-line comment


?>

</body>
</html>

Syntax for multiple-line comments:

<!DOCTYPE html>
<html>
<body>

<?php
/*
This is a multiple-lines comment block
that spans over multiple
lines
*/
?>
</body>
</html>

Using comments to leave out parts of the code:

<!DOCTYPE html>
<html>
<body>

<?php
// You can also use comments to leave out parts of a code line
$x = 5 /* + 15 */ + 5;
echo $x;
?>

</body>
</html>

Creating (Declaring) PHP Variables


In PHP, a variable starts with the $ sign, followed by the name of the variable:

Example
<?php
$txt = "Hello world!";
$x = 5;
$y = 10.5;
?>

After the execution of the statements above, the variable $txt will hold the
value Hello world!, the variable $x will hold the value 5, and the
variable $y will hold the value 10.5.

Note: When you assign a text value to a variable, put quotes around the value.

Note: Unlike other programming languages, PHP has no command for declaring
a variable. It is created the moment you first assign a value to it.

Think of variables as containers for storing data

A variable can have a short name (like x and y) or a more descriptive name
(age, carname, total_volume).
Rules for PHP variables:

 A variable starts with the $ sign, followed by the name of the variable
 A variable name must start with a letter or the underscore character
 A variable name cannot start with a number
 A variable name can only contain alpha-numeric characters and
underscores (A-z, 0-9, and _ )
 Variable names are case-sensitive ($age and $AGE are two different
variables)

Remember that PHP variable names are case-sensitive!

Output Variables
The PHP echo statement is often used to output data to the screen.

The following example will show how to output text and a variable:

Example
<?php
$txt = "Fedponam";
echo "I love $txt!";
?>

The following example will produce the same output as the example above:

Example
<?php
$txt = "Fedponam";
echo "I love " . $txt . "!";
?>

The following example will output the sum of two variables:

Example
<?php
$x = 5;
$y = 4;
echo $x + $y;
?>

PHP is a Loosely Typed Language


In the example above, notice that we did not have to tell PHP which data type
the variable is.

PHP automatically associates a data type to the variable, depending on its


value. Since the data types are not set in a strict sense, you can do things like
adding a string to an integer without causing an error.

In PHP 7, type declarations were added. This gives an option to specify the data
type expected when declaring a function, and by enabling the strict
requirement, it will throw a "Fatal Error" on a type mismatch.

You will learn more about strict and non-strict requirements, and data type
declarations in the following chapters.

PHP Variables Scope


In PHP, variables can be declared anywhere in the script.

The scope of a variable is the part of the script where the variable can be
referenced/used.

PHP has three different variable scopes:

 local
 global
 static

Global and Local Scope


A variable declared outside a function has a GLOBAL SCOPE and can only be
accessed outside a function:
Example
Variable with global scope:

<?php
$x = 5; // global scope

function myTest() {
// using x inside this function will generate an error
echo "<p>Variable x inside function is: $x</p>";
}
myTest();

echo "<p>Variable x outside function is: $x</p>";


?>

A variable declared within a function has a LOCAL SCOPE and can only be
accessed within that function:

Example
Variable with local scope:

<?php
function myTest() {
$x = 5; // local scope
echo "<p>Variable x inside function is: $x</p>";
}
myTest();

// using x outside the function will generate an error


echo "<p>Variable x outside function is: $x</p>";
?>

You can have local variables with the same name in different functions, because
local variables are only recognized by the function in which they are declared.

PHP The global Keyword


The global keyword is used to access a global variable from within a function.

To do this, use the global keyword before the variables (inside the function):
Example
<?php
$x = 5;
$y = 10;

function myTest() {
global $x, $y;
$y = $x + $y;
}

myTest();
echo $y; // outputs 15
?>

PHP also stores all global variables in an array called $GLOBALS[index].


The index holds the name of the variable. This array is also accessible from
within functions and can be used to update global variables directly.

The example above can be rewritten like this:

Example
<?php
$x = 5;
$y = 10;

function myTest() {
$GLOBALS['y'] = $GLOBALS['x'] + $GLOBALS['y'];
}

myTest();
echo $y; // outputs 15
?>

PHP The static Keyword


Normally, when a function is completed/executed, all of its variables are
deleted. However, sometimes we want a local variable NOT to be deleted. We
need it for a further job.

To do this, use the static keyword when you first declare the variable:
Example
<?php
function myTest() {
static $x = 0;
echo $x;
$x++;
}

myTest();
myTest();
myTest();
?>

Then, each time the function is called, that variable will still have the
information it contained from the last time the function was called.

Note: The variable is still local to the function.

PHP echo and print Statements


With PHP, there are two basic ways to get output: echo and print.

PHP echo and print Statements


echo and print are more or less the same. They are both used to output data to
the screen.

The differences are small: echo has no return value while print has a return
value of 1 so it can be used in expressions. echo can take multiple parameters
(although such usage is rare) while print can take one argument. echo is
marginally faster than print.

The PHP echo Statement


The echo statement can be used with or without parentheses: echo or echo().

Display Text
The following example shows how to output text with the echo command (notice
that the text can contain HTML markup):

Example
<?php
echo "<h2>PHP is Fun!</h2>";
echo "Hello world!<br>";
echo "I'm about to learn PHP!<br>";
echo "This ", "string ", "was ", "made ", "with multiple parameters.";
?>

Display Variables

The following example shows how to output text and variables with
the echo statement:

Example
<?php
$txt1 = "Learn PHP";
$txt2 = "FEDPONAM";
$x = 5;
$y = 4;

echo "<h2>" . $txt1 . "</h2>";


echo "Study PHP at " . $txt2 . "<br>";
echo $x + $y;
?>

The PHP print Statement


The print statement can be used with or without parentheses: print or print().

Display Text

The following example shows how to output text with the print command
(notice that the text can contain HTML markup):

Example
<?php
print "<h2>PHP is Fun!</h2>";
print "Hello world!<br>";
print "I'm about to learn PHP!";
?>

Display Variables

The following example shows how to output text and variables with
the print statement:

Example
<?php
$txt1 = "Learn PHP";
$txt2 = "FEDPONAM";
$x = 5;
$y = 4;

print "<h2>" . $txt1 . "</h2>";


print "Study PHP at " . $txt2 . "<br>";
print $x + $y;
?>

PHP Data Types


Variables can store data of different types, and different data types can do
different things.

PHP supports the following data types:

 String
 Integer
 Float (floating point numbers - also called double)
 Boolean
 Array
 Object
 NULL
 Resource

PHP String
A string is a sequence of characters, like "Hello world!".

A string can be any text inside quotes. You can use single or double quotes:
Example
<?php
$x = "Hello world!";
$y = 'Hello world!';

echo $x;
echo "<br>";
echo $y;
?>

PHP Integer
An integer data type is a non-decimal number between -2,147,483,648 and
2,147,483,647.

Rules for integers:

 An integer must have at least one digit


 An integer must not have a decimal point
 An integer can be either positive or negative
 Integers can be specified in: decimal (base 10), hexadecimal (base 16),
octal (base 8), or binary (base 2) notation

In the following example $x is an integer. The PHP var_dump() function returns


the data type and value:

Example
<?php
$x = 5985;
var_dump($x);
?>

PHP Float
A float (floating point number) is a number with a decimal point or a number in
exponential form.

In the following example $x is a float. The PHP var_dump() function returns the
data type and value:
Example
<?php
$x = 10.365;
var_dump($x);
?>

PHP Boolean
A Boolean represents two possible states: TRUE or FALSE.

$x = true;
$y = false;

Booleans are often used in conditional testing. You will learn more about
conditional testing in a later chapter.

PHP Array
An array stores multiple values in one single variable.

In the following example $cars is an array. The PHP var_dump() function


returns the data type and value:

Example
<?php
$cars = array("Volvo","BMW","Toyota");
var_dump($cars);
?>

You will learn a lot more about arrays in later chapters

PHP Object
Classes and objects are the two main aspects of object-oriented programming.

A class is a template for objects, and an object is an instance of a class.


When the individual objects are created, they inherit all the properties and
behaviors from the class, but each object will have different values for the
properties.

Let's assume we have a class named Car. A Car can have properties like model,
color, etc. We can define variables like $model, $color, and so on, to hold the
values of these properties.

When the individual objects (Volvo, BMW, Toyota, etc.) are created, they inherit
all the properties and behaviors from the class, but each object will have
different values for the properties.

If you create a __construct() function, PHP will automatically call this function
when you create an object from a class.

Example
<?php
class Car {
public $color;
public $model;
public function __construct($color, $model) {
$this->color = $color;
$this->model = $model;
}
public function message() {
return "My car is a " . $this->color . " " . $this->model . "!";
}
}

$myCar = new Car("black", "Volvo");


echo $myCar -> message();
echo "<br>";
$myCar = new Car("red", "Toyota");
echo $myCar -> message();
?>

PHP NULL Value


Null is a special data type which can have only one value: NULL.

A variable of data type NULL is a variable that has no value assigned to it.
Tip: If a variable is created without a value, it is automatically assigned a value
of NULL.

Variables can also be emptied by setting the value to NULL:

Example
<?php
$x = "Hello world!";
$x = null;
var_dump($x);
?>

PHP Resource
The special resource type is not an actual data type. It is the storing of a
reference to functions and resources external to PHP.

A common example of using the resource data type is a database call.

We will not talk about the resource type here, since it is an advanced topic.

PHP Strings
A string is a sequence of characters, like "Hello world!".

PHP String Functions


In this chapter we will look at some commonly used functions to manipulate
strings.

strlen() - Return the Length of a String


The PHP strlen() function returns the length of a string.

Example
Return the length of the string "Hello world!":
<?php
echo strlen("Hello world!"); // outputs 12
?>

str_word_count() - Count Words in a String


The PHP str_word_count() function counts the number of words in a string.

Example
Count the number of word in the string "Hello world!":

<?php
echo str_word_count("Hello world!"); // outputs 2
?>

strrev() - Reverse a String


The PHP strrev() function reverses a string.

Example
Reverse the string "Hello world!":

<?php
echo strrev("Hello world!"); // outputs !dlrow olleH
?>

strpos() - Search For a Text Within a String


The PHP strpos() function searches for a specific text within a string. If a match
is found, the function returns the character position of the first match. If no
match is found, it will return FALSE.

Example
Search for the text "world" in the string "Hello world!":

<?php
echo strpos("Hello world!", "world"); // outputs 6
?>
Tip: The first character position in a string is 0 (not 1).

str_replace() - Replace Text Within a String


The PHP str_replace() function replaces some characters with some other
characters in a string.

Example
Replace the text "world" with "Dolly":

<?php
echo str_replace("world", "Dolly", "Hello world!"); // outputs Hello
Dolly!
?>

You can search online for a complete reference of all string functions. The PHP
string reference contains description and example of use, for each function.

PHP Numbers
One thing to notice about PHP is that it provides automatic data type conversion.

So, if you assign an integer value to a variable, the type of that variable will
automatically be an integer. Then, if you assign a string to the same variable, the
type will change to a string.

This automatic conversion can sometimes break your code.

PHP Integers
2, 256, -256, 10358, -179567 are all integers.

An integer is a number without any decimal part.

An integer data type is a non-decimal number between -2147483648 and


2147483647 in 32 bit systems, and between -9223372036854775808 and
9223372036854775807 in 64 bit systems. A value greater (or lower) than this,
will be stored as float, because it exceeds the limit of an integer.
Note: Another important thing to know is that even if 4 * 2.5 is 10, the result is
stored as float, because one of the operands is a float (2.5).

Here are some rules for integers:

 An integer must have at least one digit


 An integer must NOT have a decimal point
 An integer can be either positive, negative or zero
 Integers can be specified in three formats: decimal (10-based),
hexadecimal (16-based - prefixed with 0x) or octal (8-based - prefixed
with 0)

PHP has the following predefined constants for integers:

 PHP_INT_MAX - The largest integer supported


 PHP_INT_MIN - The smallest integer supported
 PHP_INT_SIZE - The size of an integer in bytes

PHP has the following functions to check if the type of a variable is integer:

 is_int()
 is_integer() - alias of is_int()
 is_long() - alias of is_int()

Example
Check if the type of a variable is integer:

<?php
$x = 5985;
var_dump(is_int($x));

$x = 59.85;
var_dump(is_int($x));
?>

PHP Floats
A float is a number with a decimal point or a number in exponential form.

2.0, 256.4, 10.358, 7.64E+5, 5.56E-5 are all floats.

The float data type can commonly store a value up to 1.7976931348623E+308


(platform dependent), and have a maximum precision of 14 digits.
PHP has the following predefined constants for floats (from PHP 7.2):

 PHP_FLOAT_MAX - The largest representable floating point number


 PHP_FLOAT_MIN - The smallest representable positive floating point
number
 PHP_FLOAT_DIG - The number of decimal digits that can be rounded into
a float and back without precision loss
 PHP_FLOAT_EPSILON - The smallest representable positive number x, so
that x + 1.0 != 1.0

PHP has the following functions to check if the type of a variable is float:

 is_float()
 is_double() - alias of is_float()

Example
Check if the type of a variable is float:

<?php
$x = 10.365;
var_dump(is_float($x));
?>

PHP Infinity
A numeric value that is larger than PHP_FLOAT_MAX is considered infinite.

PHP has the following functions to check if a numeric value is finite or infinite:

 is_finite()
 is_infinite()

However, the PHP var_dump() function returns the data type and value:

Example
Check if a numeric value is finite or infinite:

<?php
$x = 1.9e411;
var_dump($x);
?>
PHP NaN
NaN stands for Not a Number.

NaN is used for impossible mathematical operations.

PHP has the following functions to check if a value is not a number:

 is_nan()

However, the PHP var_dump() function returns the data type and value:

Example
Invalid calculation will return a NaN value:

<?php
$x = acos(8);
var_dump($x);
?>

PHP Numerical Strings


The PHP is_numeric() function can be used to find whether a variable is numeric.
The function returns true if the variable is a number or a numeric string, false
otherwise.

Example
Check if the variable is numeric:

<?php
$x = 5985;
var_dump(is_numeric($x));

$x = "5985";
var_dump(is_numeric($x));

$x = "59.85" + 100;
var_dump(is_numeric($x));

$x = "Hello";
var_dump(is_numeric($x));
?>

Note: From PHP 7.0: The is_numeric() function will return FALSE for numeric
strings in hexadecimal form (e.g. 0xf4c3b00c), as they are no longer considered
as numeric strings.

PHP Casting Strings and Floats to Integers


Sometimes you need to cast a numerical value into another data type.

The (int), (integer), or intval() function are often used to convert a value to an
integer.

Example
Cast float and string to integer:

<?php
// Cast float to int
$x = 23465.768;
$int_cast = (int)$x;
echo $int_cast;

echo "<br>";

// Cast string to int


$x = "23465.768";
$int_cast = (int)$x;
echo $int_cast;
?>

PHP Math
PHP has a set of math functions that allows you to perform mathematical
tasks on numbers.
PHP pi() Function
The pi() function returns the value of PI:

Example
<?php
echo(pi()); // returns 3.1415926535898
?>

PHP min() and max() Functions


The min() and max() functions can be used to find the lowest or highest value in a
list of arguments:

Example
<?php
echo(min(0, 150, 30, 20, -8, -200)); // returns -200
echo(max(0, 150, 30, 20, -8, -200)); // returns 150
?>

PHP abs() Function


The abs() function returns the absolute (positive) value of a number:

Example
<?php
echo(abs(-6.7)); // returns 6.7
?>

PHP sqrt() Function


The sqrt() function returns the square root of a number:
Example
<?php
echo(sqrt(64)); // returns 8
?>

PHP round() Function


The round() function rounds a floating-point number to its nearest integer:

Example
<?php
echo(round(0.60)); // returns 1
echo(round(0.49)); // returns 0
?>

Random Numbers
The rand() function generates a random number:

Example
<?php
echo(rand());
?>

To get more control over the random number, you can add the
optional min and max parameters to specify the lowest integer and the highest
integer to be returned.

For example, if you want a random integer between 10 and 100 (inclusive),
use rand(10, 100):

Example
<?php
echo(rand(10, 100));
?>
Complete PHP Math Reference
PHP Math Functions
Function Description

abs() Returns the absolute (positive) value of a number

acos() Returns the arc cosine of a number

acosh() Returns the inverse hyperbolic cosine of a number

asin() Returns the arc sine of a number

asinh() Returns the inverse hyperbolic sine of a number

atan() Returns the arc tangent of a number in radians

atan2() Returns the arc tangent of two variables x and y

atanh() Returns the inverse hyperbolic tangent of a number


base_convert() Converts a number from one number base to another

bindec() Converts a binary number to a decimal number

ceil() Rounds a number up to the nearest integer

cos() Returns the cosine of a number

cosh() Returns the hyperbolic cosine of a number

decbin() Converts a decimal number to a binary number

dechex() Converts a decimal number to a hexadecimal number

decoct() Converts a decimal number to an octal number

deg2rad() Converts a degree value to a radian value

exp() Calculates the exponent of e

expm1() Returns exp(x) - 1


floor() Rounds a number down to the nearest integer

fmod() Returns the remainder of x/y

getrandmax() Returns the largest possible value returned by rand()

hexdec() Converts a hexadecimal number to a decimal number

hypot() Calculates the hypotenuse of a right-angle triangle

intdiv() Performs integer division

is_finite() Checks whether a value is finite or not

is_infinite() Checks whether a value is infinite or not

is_nan() Checks whether a value is 'not-a-number'

lcg_value() Returns a pseudo random number in a range between 0 and 1

log() Returns the natural logarithm of a number


log10() Returns the base-10 logarithm of a number

log1p() Returns log(1+number)

max() Returns the highest value in an array, or the highest value of


several specified values

min() Returns the lowest value in an array, or the lowest value of


several specified values

mt_getrandmax() Returns the largest possible value returned by mt_rand()

mt_rand() Generates a random integer using Mersenne Twister algorithm

mt_srand() Seeds the Mersenne Twister random number generator

octdec() Converts an octal number to a decimal number

pi() Returns the value of PI

pow() Returns x raised to the power of y


rad2deg() Converts a radian value to a degree value

rand() Generates a random integer

round() Rounds a floating-point number

sin() Returns the sine of a number

sinh() Returns the hyperbolic sine of a number

sqrt() Returns the square root of a number

srand() Seeds the random number generator

tan() Returns the tangent of a number

tanh() Returns the hyperbolic tangent of a number

Constants are like variables, except that once they are defined they cannot
be changed or undefined.

PHP Constants
A constant is an identifier (name) for a simple value. The value cannot be
changed during the script.
A valid constant name starts with a letter or underscore (no $ sign before the
constant name).

Note: Unlike variables, constants are automatically global across the entire
script.

Create a PHP Constant


To create a constant, use the define() function.

Syntax
define(name, value, case-insensitive)

Parameters:

 name: Specifies the name of the constant


 value: Specifies the value of the constant
 case-insensitive: Specifies whether the constant name should be case-
insensitive. Default is false. Note: Defining case-insensitive constants
was deprecated in PHP 7.3. PHP 8.0 accepts only false, the value true will
produce a warning.

Example
Create a constant with a case-sensitive name:

<?php
define("GREETING", "Welcome to Fedponam");
echo GREETING;
?>

Example
Create a constant with a case-insensitive name:

<?php
define("GREETING", "Welcome to Fedponam!!", true);
echo greeting;
?>

PHP const Keyword


You can also create a constant by using the const keyword.

Example
Create a constant with the const keyword:

<?php
const MYCAR = "Volvo";
echo MYCAR;
?>

const vs. define()

 const are always case-sensitive


 define() has a case-insensitive option.
 const cannot be created inside another block scope, like inside a function
or inside an if statement.
 define can be created inside another block scope.

PHP Constant Arrays


In PHP7, you can create an Array constant using the define() function.

Example
Create an Array constant:

<?php
define("cars", [
"Alfa Romeo",
"BMW",
"Toyota"
]);
echo cars[0];
?>

Constants are Global


Constants are automatically global and can be used across the entire script.
Instance
This example uses a constant inside a function, even if it is defined outside the
function:

<?php
define("GREETING", "Welcome to W3Schools.com!");

function myTest() {
echo GREETING;
}

myTest();
?>

PHP Predefined Constants


PHP has nine predefined constants that change value depending on where they
are used, and therefor they are called "magic constants".

These magic constants are written with a double underscore at the start and the
end, except for the ClassName::class constant.

Magic Constants
Here are the magic constants, with descriptions and examples:

Constant Description

__CLASS__ If used inside a class, the class name is


returned.

__DIR__ The directory of the file.


__FILE__ The file name including the full path.

__FUNCTION__ If inside a function, the function name is


returned.

__LINE__ The current line number.

__METHOD__ If used inside a function that belongs to a


class, both class and function name is
returned.

__NAMESPACE__ If used inside a namespace, the name of the


namespace is returned.

__TRAIT__ If used inside a trait, the trait name is


returned.

ClassName::class Returns the name of the specified class and


the name of the namespace, if any

Note:

The magic constants are case-insensitive, meaning __LINE__ returns the same
as __line__.
PHP Operators
Operators are used to perform operations on variables and values.

PHP divides the operators in the following groups:

 Arithmetic operators
 Assignment operators
 Comparison operators
 Increment/Decrement operators
 Logical operators
 String operators
 Array operators
 Conditional assignment operators

PHP Arithmetic Operators


The PHP arithmetic operators are used with numeric values to perform common
arithmetical operations, such as addition, subtraction, multiplication etc.

Operator Name Example Result

+ Addition $x + $y Sum of $x and $y

- Subtraction $x - $y Difference of $x and $y

* Multiplication $x * $y Product of $x and $y

/ Division $x / $y Quotient of $x and $y


% Modulus $x % $y Remainder of $x divided by $y

** Exponentiation $x ** $y Result of raising $x to the


$y'th power

PHP Assignment Operators


The PHP assignment operators are used with numeric values to write a value to
a variable.

The basic assignment operator in PHP is "=". It means that the left operand
gets set to the value of the assignment expression on the right.

Assignment Same Description


as...

x=y x=y The left operand gets set to the value of the
expression on the right

x += y x=x+y Addition

x -= y x=x-y Subtraction

x *= y x=x*y Multiplication

x /= y x=x/y Division
x %= y x=x%y Modulus

PHP Comparison Operators


The PHP comparison operators are used to compare two values (number or
string):

Operator Name Example Result

== Equal $x == $y Returns true if $x is equal to


$y

=== Identical $x === $y Returns true if $x is equal to


$y, and they are of the same
type

!= Not equal $x != $y Returns true if $x is not equal


to $y

<> Not equal $x <> $y Returns true if $x is not equal


to $y

!== Not identical $x !== $y Returns true if $x is not equal


to $y, or they are not of the
same type
> Greater than $x > $y Returns true if $x is greater
than $y

< Less than $x < $y Returns true if $x is less than


$y

>= Greater than or $x >= $y Returns true if $x is greater


equal to than or equal to $y

<= Less than or $x <= $y Returns true if $x is less than


equal to or equal to $y

<=> Spaceship $x <=> $y Returns an integer less than,


equal to, or greater than zero,
depending on if $x is less
than, equal to, or greater
than $y. Introduced in PHP 7.

PHP Increment / Decrement Operators


The PHP increment operators are used to increment a variable's value.

The PHP decrement operators are used to decrement a variable's value.

Operator Name Description

++$x Pre-increment Increments $x by one, then returns $x


$x++ Post-increment Returns $x, then increments $x by one

--$x Pre-decrement Decrements $x by one, then returns $x

$x-- Post-decrement Returns $x, then decrements $x by one

PHP Logical Operators


The PHP logical operators are used to combine conditional statements.

Operator Name Example Result

and And $x and $y True if both $x and $y are true

or Or $x or $y True if either $x or $y is true

xor Xor $x xor $y True if either $x or $y is true, but


not both

&& And $x && $y True if both $x and $y are true

|| Or $x || $y True if either $x or $y is true


! Not !$x True if $x is not true

PHP String Operators


PHP has two operators that are specially designed for strings.

Operator Name Example Result

. Concatenation $txt1 . $txt2 Concatenation of $txt1


and $txt2

.= Concatenation $txt1 .= $txt2 Appends $txt2 to $txt1


assignment

PHP Array Operators


The PHP array operators are used to compare arrays.

Operator Name Example Result

+ Union $x + $y Union of $x and $y

== Equality $x == $y Returns true if $x and $y have the


same key/value pairs
=== Identity $x === Returns true if $x and $y have the
$y same key/value pairs in the same
order and of the same types

!= Inequality $x != $y Returns true if $x is not equal to $y

<> Inequality $x <> $y Returns true if $x is not equal to $y

!== Non- $x !== $y Returns true if $x is not identical to


identity $y

PHP Conditional Assignment Operators


The PHP conditional assignment operators are used to set a value depending on
conditions:

Operator Name Example Result

?: Ternary $x = expr1 ? expr2 : expr3 Returns the value of $x.


The value of $x is expr2 if expr1 =
TRUE.
The value of $x is expr3 if expr1 =
FALSE

?? Null $x = expr1 ?? expr2 Returns the value of $x.


coalescing The value of $x
is expr1 if expr1 exists, and is not
NULL.
If expr1 does not exist, or is NULL,
the value of $x is expr2.
Introduced in PHP 7

PHP Conditional Statements


Very often when you write code, you want to perform different actions for
different conditions. You can use conditional statements in your code to do this.

In PHP we have the following conditional statements:

 if statement - executes some code if one condition is true


 if...else statement - executes some code if a condition is true and
another code if that condition is false
 if...elseif...else statement - executes different codes for more than
two conditions
 switch statement - selects one of many blocks of code to be executed

PHP - The if Statement


The if statement executes some code if one condition is true.

Syntax
if (condition) {
code to be executed if condition is true;
}

Example
Output "Have a good day!" if the current time (HOUR) is less than 20:

<?php
$t = date("H");

if ($t < "20") {


echo "Have a good day!";
}
?>

PHP - The if...else Statement


The if...else statement executes some code if a condition is true and another
code if that condition is false.

Syntax
if (condition) {
code to be executed if condition is true;
} else {
code to be executed if condition is false;
}

Example
Output "Have a good day!" if the current time is less than 20, and "Have a good
night!" otherwise:

<?php
$t = date("H");

if ($t < "20") {


echo "Have a good day!";
} else {
echo "Have a good night!";
}
?>

PHP - The if...elseif...else Statement


The if...elseif...else statement executes different codes for more than two
conditions.

Syntax
if (condition) {
code to be executed if this condition is true;
} elseif (condition) {
code to be executed if first condition is false and this condition is
true;
} else {
code to be executed if all conditions are false;
}

Example
Output "Have a good morning!" if the current time is less than 10, and "Have a
good day!" if the current time is less than 20. Otherwise it will output "Have a
good night!":

<?php
$t = date("H");

if ($t < "10") {


echo "Have a good morning!";
} elseif ($t < "20") {
echo "Have a good day!";
} else {
echo "Have a good night!";
}
?>

PHP - The switch Statement


Use the switch statement to select one of many blocks of code to be
executed.

Syntax
switch (n) {
case label1:
code to be executed if n=label1;
break;
case label2:
code to be executed if n=label2;
break;
case label3:
code to be executed if n=label3;
break;
...
default:
code to be executed if n is different from all labels;
}

This is how it works: First we have a single expression n (most often a


variable), that is evaluated once. The value of the expression is then compared
with the values for each case in the structure. If there is a match, the block of
code associated with that case is executed. Use break to prevent the code from
running into the next case automatically. The default statement is used if no
match is found.

Example
<?php
$favcolor = "red";

switch ($favcolor) {
case "red":
echo "Your favorite color is red!";
break;
case "blue":
echo "Your favorite color is blue!";
break;
case "green":
echo "Your favorite color is green!";
break;
default:
echo "Your favorite color is neither red, blue, nor green!";
}
?>

Exercise:
Create a switch statement that will output grade according to your score

PHP Loops
Often when you write code, you want the same block of code to run over and
over again a certain number of times. So, instead of adding several almost equal
code-lines in a script, we can use loops.

Loops are used to execute the same block of code again and again, as long as a
certain condition is true.
In PHP, we have the following loop types:

 while - loops through a block of code as long as the specified condition is


true
 do...while - loops through a block of code once, and then repeats the
loop as long as the specified condition is true
 for - loops through a block of code a specified number of times
 foreach - loops through a block of code for each element in an array

The while loop - Loops through a block of code as long as the specified
condition is true.

The PHP while Loop


The while loop executes a block of code as long as the specified condition is
true.

Syntax
while (condition is true) {
code to be executed;
}

Examples
The example below displays the numbers from 1 to 5:

Example
<?php
$x = 1;

while($x <= 5) {
echo "The number is: $x <br>";
$x++;
}
?>

Example Explained
 $x = 1; - Initialize the loop counter ($x), and set the start value to 1
 $x <= 5 - Continue the loop as long as $x is less than or equal to 5
 $x++; - Increase the loop counter value by 1 for each iteration

This example counts to 100 by tens:

Example
<?php
$x = 0;

while($x <= 100) {


echo "The number is: $x <br>";
$x+=10;
}
?>

Example Explained
 $x = 0; - Initialize the loop counter ($x), and set the start value to 0
 $x <= 100 - Continue the loop as long as $x is less than or equal to 100
 $x+=10; - Increase the loop counter value by 10 for each iteration

Exercises:
Use the while loop to compute the sum of even numbers between 0 to 100

PHP do while Loop


The do...while loop - Loops through a block of code once, and then repeats
the loop as long as the specified condition is true.

The PHP do...while Loop


The do...while loop will always execute the block of code once, it will then check
the condition, and repeat the loop while the specified condition is true.

Syntax
do {
code to be executed;
} while (condition is true);
Examples
The example below first sets a variable $x to 1 ($x = 1). Then, the do while
loop will write some output, and then increment the variable $x with 1. Then
the condition is checked (is $x less than, or equal to 5?), and the loop will
continue to run as long as $x is less than, or equal to 5:

Example
<?php
$x = 1;

do {
echo "The number is: $x <br>";
$x++;
} while ($x <= 5);
?>

Note: In a do...while loop the condition is tested AFTER executing the


statements within the loop. This means that the do...while loop will execute its
statements at least once, even if the condition is false. See example below.

This example sets the $x variable to 6, then it runs the loop, and then the
condition is checked:

Example
<?php
$x = 6;

do {
echo "The number is: $x <br>";
$x++;
} while ($x <= 5);
?>

PHP for Loop


The for loop - Loops through a block of code a specified number of times.
The PHP for Loop
The for loop is used when you know in advance how many times the script
should run.

Syntax
for (init counter; test counter; increment counter) {
code to be executed for each iteration;
}

Parameters:

 init counter: Initialize the loop counter value


 test counter: Evaluated for each loop iteration. If it evaluates to TRUE,
the loop continues. If it evaluates to FALSE, the loop ends.
 increment counter: Increases the loop counter value

Examples
The example below displays the numbers from 0 to 10:

Example
<?php
for ($x = 0; $x <= 10; $x++) {
echo "The number is: $x <br>";
}
?>

xample Explained
 $x = 0; - Initialize the loop counter ($x), and set the start value to 0
 $x <= 10; - Continue the loop as long as $x is less than or equal to 10
 $x++ - Increase the loop counter value by 1 for each iteration

This example counts to 100 by tens:

Example
<?php
for ($x = 0; $x <= 100; $x+=10) {
echo "The number is: $x <br>";
}
?>

Example Explained
 $x = 0; - Initialize the loop counter ($x), and set the start value to 0
 $x <= 100; - Continue the loop as long as $x is less than or equal to 100
 $x+=10 - Increase the loop counter value by 10 for each iteration

Exercise
Use a for loop to compute factors of a given number

PHP foreach Loop


The foreach loop - Loops through a block of code for each element in an
array.

The PHP foreach Loop


The foreach loop works only on arrays, and is used to loop through each
key/value pair in an array.

Syntax
foreach ($array as $value) {
code to be executed;
}

For every loop iteration, the value of the current array element is assigned to
$value and the array pointer is moved by one, until it reaches the last array
element.

Examples
The following example will output the values of the given array ($colors):
Example
<?php
$colors = array("red", "green", "blue", "yellow");

foreach ($colors as $value) {


echo "$value <br>";
}
?>

The following example will output both the keys and the values of the given
array ($age):

Example
<?php
$age = array("Peter"=>"35", "Ben"=>"37", "Joe"=>"43");

foreach($age as $x => $val) {


echo "$x = $val<br>";
}
?>

PHP Break and Continue


PHP Break
You have already seen the break statement used in an earlier chapter of this
tutorial. It was used to "jump out" of a switch statement.

The break statement can also be used to jump out of a loop.

This example jumps out of the loop when x is equal to 4:

Example
<?php
for ($x = 0; $x < 10; $x++) {
if ($x == 4) {
break;
}
echo "The number is: $x <br>";
}
?>

PHP Continue
The continue statement breaks one iteration (in the loop), if a specified condition
occurs, and continues with the next iteration in the loop.

This example skips the value of 4:

Example
<?php
for ($x = 0; $x < 10; $x++) {
if ($x == 4) {
continue;
}
echo "The number is: $x <br>";
}
?>

Break and Continue in While Loop


You can also use break and continue in while loops:

Break Example
<?php
$x = 0;

while($x < 10) {


if ($x == 4) {
break;
}
echo "The number is: $x <br>";
$x++;
}
?>
Continue Example
<?php
$x = 0;

while($x < 10) {


if ($x == 4) {
$x++;
continue;
}
echo "The number is: $x <br>";
$x++;
}
?>

PHP Functions
The real power of PHP comes from its functions.

PHP has more than 1000 built-in functions, and in addition you can create
your own custom functions.

PHP Built-in Functions


PHP has over 1000 built-in functions that can be called directly, from within a
script, to perform a specific task.

Exercise

Select any 10 of the built in functions and clearly discuss them with example

PHP User Defined Functions


Besides the built-in PHP functions, it is possible to create your own functions.

 A function is a block of statements that can be used repeatedly in a


program.
 A function will not execute automatically when a page loads.
 A function will be executed by a call to the function.
Create a User Defined Function in PHP
A user-defined function declaration starts with the word function:

Syntax
function functionName() {
code to be executed;
}

Note: A function name must start with a letter or an underscore. Function


names are NOT case-sensitive.

Tip: Give the function a name that reflects what the function does!

In the example below, we create a function named "writeMsg()". The opening


curly brace ( { ) indicates the beginning of the function code, and the closing
curly brace ( } ) indicates the end of the function. The function outputs "Hello
world!". To call the function, just write its name followed by brackets ():

Example
<?php
function writeMsg() {
echo "Hello world!";
}

writeMsg(); // call the function


?>

PHP Function Arguments


Information can be passed to functions through arguments. An argument is just
like a variable.

Arguments are specified after the function name, inside the parentheses. You
can add as many arguments as you want, just separate them with a comma.

The following example has a function with one argument ($fname). When the
familyName() function is called, we also pass along a name (e.g. Jani), and the
name is used inside the function, which outputs several different first names,
but an equal last name:

Example
<?php
function familyName($fname) {
echo "$fname Refsnes.<br>";
}

familyName("Jani");
familyName("Hege");
familyName("Stale");
familyName("Kai Jim");
familyName("Borge");
?>

The following example has a function with two arguments ($fname and $year):

Example
<?php
function familyName($fname, $year) {
echo "$fname Refsnes. Born in $year <br>";
}

familyName("Hege", "1975");
familyName("Stale", "1978");
familyName("Kai Jim", "1983");
?>

PHP is a Loosely Typed Language


In the example above, notice that we did not have to tell PHP which data type
the variable is.

PHP automatically associates a data type to the variable, depending on its


value. Since the data types are not set in a strict sense, you can do things like
adding a string to an integer without causing an error.

In PHP 7, type declarations were added. This gives us an option to specify the
expected data type when declaring a function, and by adding
the strict declaration, it will throw a "Fatal Error" if the data type mismatches.
In the following example we try to send both a number and a string to the
function without using strict:

Example
<?php
function addNumbers(int $a, int $b) {
return $a + $b;
}
echo addNumbers(5, "5 days");
// since strict is NOT enabled "5 days" is changed to int(5), and it will
return 10
?>

To specify strict we need to set declare(strict_types=1);. This must be on the


very first line of the PHP file.

In the following example we try to send both a number and a string to the
function, but here we have added the strict declaration:

Example
<?php declare(strict_types=1); // strict requirement

function addNumbers(int $a, int $b) {


return $a + $b;
}
echo addNumbers(5, "5 days");
// since strict is enabled and "5 days" is not an integer, an error will
be thrown
?>

The strict declaration forces things to be used in the intended way.

PHP Default Argument Value


The following example shows how to use a default parameter. If we call the
function setHeight() without arguments it takes the default value as argument:

Example
<?php declare(strict_types=1); // strict requirement
function setHeight(int $minheight = 50) {
echo "The height is : $minheight <br>";
}

setHeight(350);
setHeight(); // will use the default value of 50
setHeight(135);
setHeight(80);
?>

PHP Functions - Returning values


To let a function return a value, use the return statement:

Example
<?php declare(strict_types=1); // strict requirement
function sum(int $x, int $y) {
$z = $x + $y;
return $z;
}

echo "5 + 10 = " . sum(5, 10) . "<br>";


echo "7 + 13 = " . sum(7, 13) . "<br>";
echo "2 + 4 = " . sum(2, 4);
?>

PHP Return Type Declarations


PHP 7 also supports Type Declarations for the return statement. Like with the
type declaration for function arguments, by enabling the strict requirement, it
will throw a "Fatal Error" on a type mismatch.

To declare a type for the function return, add a colon ( : ) and the type right
before the opening curly ( { )bracket when declaring the function.

In the following example we specify the return type for the function:

Example
<?php declare(strict_types=1); // strict requirement
function addNumbers(float $a, float $b) : float {
return $a + $b;
}
echo addNumbers(1.2, 5.2);
?>

You can specify a different return type, than the argument types, but make sure
the return is the correct type:

Example
<?php declare(strict_types=1); // strict requirement
function addNumbers(float $a, float $b) : int {
return (int)($a + $b);
}
echo addNumbers(1.2, 5.2);
?>

Passing Arguments by Reference


In PHP, arguments are usually passed by value, which means that a copy of the
value is used in the function and the variable that was passed into the function
cannot be changed.

When a function argument is passed by reference, changes to the argument


also change the variable that was passed in. To turn a function argument into a
reference, the & operator is used:

Example
Use a pass-by-reference argument to update a variable:

<?php
function add_five(&$value) {
$value += 5;
}

$num = 2;
add_five($num);
echo $num;
?>
PHP Arrays
An array stores multiple values in one single variable:

Example
<?php
$cars = array("Volvo", "BMW", "Toyota");
echo "I like " . $cars[0] . ", " . $cars[1] . " and " . $cars[2] . ".";
?>

What is an Array?
An array is a special variable, which can hold more than one value at a time.

If you have a list of items (a list of car names, for example), storing the cars in
single variables could look like this:

$cars1 = "Volvo";
$cars2 = "BMW";
$cars3 = "Toyota";

However, what if you want to loop through the cars and find a specific one? And
what if you had not 3 cars, but 300?

The solution is to create an array!

An array can hold many values under a single name, and you can access the
values by referring to an index number.

Create an Array in PHP


In PHP, the array() function is used to create an array:

array();

In PHP, there are three types of arrays:


 Indexed arrays - Arrays with a numeric index
 Associative arrays - Arrays with named keys
 Multidimensional arrays - Arrays containing one or more arrays

Get The Length of an Array - The count()


Function
The count() function is used to return the length (the number of elements) of an
array:

Example
<?php
$cars = array("Volvo", "BMW", "Toyota");
echo count($cars);
?>

PHP Indexed Arrays


PHP Indexed Arrays
There are two ways to create indexed arrays:

The index can be assigned automatically (index always starts at 0), like this:

$cars = array("Volvo", "BMW", "Toyota");

or the index can be assigned manually:

$cars[0] = "Volvo";
$cars[1] = "BMW";
$cars[2] = "Toyota";

The following example creates an indexed array named $cars, assigns three
elements to it, and then prints a text containing the array values:
Example
<?php
$cars = array("Volvo", "BMW", "Toyota");
echo "I like " . $cars[0] . ", " . $cars[1] . " and " . $cars[2] . ".";
?>

Loop Through an Indexed Array


To loop through and print all the values of an indexed array, you could use
a for loop, like this:

Example
<?php
$cars = array("Volvo", "BMW", "Toyota");
$arrlength = count($cars);

for($x = 0; $x < $arrlength; $x++) {


echo $cars[$x];
echo "<br>";
}
?>

Exercise:
Output the 7th item in the $fruits array.

$fruits = array("Apple", "Banana", "Orange", “Pineapple”,


“Lemon”, “watermelon”, “Mango”, “Guava”, “cashew”);

PHP Associative Arrays


Associative arrays are arrays that use named keys that you assign to them.

There are two ways to create an associative array:

$age = array("Peter"=>"35", "Ben"=>"37", "Joe"=>"43");

or:
$age['Peter'] = "35";
$age['Ben'] = "37";
$age['Joe'] = "43";

The named keys can then be used in a script:

Example
<?php
$age = array("Peter"=>"35", "Ben"=>"37", "Joe"=>"43");
echo "Peter is " . $age['Peter'] . " years old.";
?>

Loop Through an Associative Array


To loop through and print all the values of an associative array, you could use
a foreach loop, like this:

Example
<?php
$age = array("Peter"=>"35", "Ben"=>"37", "Joe"=>"43");

foreach($age as $x => $x_value) {


echo "Key=" . $x . ", Value=" . $x_value;
echo "<br>";
}
?>

Exercise:
Create an associative array containing the age of Aisha, Ahmad, Kabir and John.

PHP Multidimensional Arrays


In the previous pages, we have described arrays that are a single list of
key/value pairs.

However, sometimes you want to store values with more than one key. For
this, we have multidimensional arrays.
PHP - Multidimensional Arrays
A multidimensional array is an array containing one or more arrays.

PHP supports multidimensional arrays that are two, three, four, five, or more
levels deep. However, arrays more than three levels deep are hard to manage
for most people.

The dimension of an array indicates the number of indices you need to


select an element.

 For a two-dimensional array you need two indices to select an element


 For a three-dimensional array you need three indices to select an element

PHP - Two-dimensional Arrays


A two-dimensional array is an array of arrays (a three-dimensional array is an
array of arrays of arrays).

First, take a look at the following table:

Name Stock Sold

Volvo 22 18

BMW 15 13

Saab 5 2
Land Rover 17 15

We can store the data from the table above in a two-dimensional array, like
this:

$cars = array (
array("Volvo",22,18),
array("BMW",15,13),
array("Saab",5,2),
array("Land Rover",17,15)
);

Now the two-dimensional $cars array contains four arrays, and it has two
indices: row and column.

To get access to the elements of the $cars array we must point to the two
indices (row and column):

Example
<?php
echo $cars[0][0].": In stock: ".$cars[0][1].", sold:
".$cars[0][2].".<br>";
echo $cars[1][0].": In stock: ".$cars[1][1].", sold:
".$cars[1][2].".<br>";
echo $cars[2][0].": In stock: ".$cars[2][1].", sold:
".$cars[2][2].".<br>";
echo $cars[3][0].": In stock: ".$cars[3][1].", sold:
".$cars[3][2].".<br>";
?>

We can also put a for loop inside another for loop to get the elements of the
$cars array (we still have to point to the two indices):

Example
<?php
for ($row = 0; $row < 4; $row++) {
echo "<p><b>Row number $row</b></p>";
echo "<ul>";
for ($col = 0; $col < 3; $col++) {
echo "<li>".$cars[$row][$col]."</li>";
}
echo "</ul>";
}
?>

PHP - Sort Functions For Arrays


In this chapter, we will go through the following PHP array sort functions:

 sort() - sort arrays in ascending order


 rsort() - sort arrays in descending order
 asort() - sort associative arrays in ascending order, according to the
value
 ksort() - sort associative arrays in ascending order, according to the key
 arsort() - sort associative arrays in descending order, according to the
value
 krsort() - sort associative arrays in descending order, according to the
key

Sort Array in Ascending Order - sort()


The following example sorts the elements of the $cars array in ascending
alphabetical order:

Example
<?php
$cars = array("Volvo", "BMW", "Toyota");
sort($cars);
?>

The following example sorts the elements of the $numbers array in ascending
numerical order:

Example
<?php
$numbers = array(4, 6, 2, 22, 11);
sort($numbers);
?>
Sort Array in Descending Order - rsort()
The following example sorts the elements of the $cars array in descending
alphabetical order:

Example
<?php
$cars = array("Volvo", "BMW", "Toyota");
rsort($cars);
?>

The following example sorts the elements of the $numbers array in descending
numerical order:

Example
<?php
$numbers = array(4, 6, 2, 22, 11);
rsort($numbers);
?>

Sort Array (Ascending Order), According to


Value - asort()
The following example sorts an associative array in ascending order, according
to the value:

Example
<?php
$age = array("Peter"=>"35", "Ben"=>"37", "Joe"=>"43");
asort($age);
?>
Sort Array (Ascending Order), According to
Key - ksort()
The following example sorts an associative array in ascending order, according
to the key:

Example
<?php
$age = array("Peter"=>"35", "Ben"=>"37", "Joe"=>"43");
ksort($age);
?>

Sort Array (Descending Order), According to


Value - arsort()
The following example sorts an associative array in descending order, according
to the value:

Example
<?php
$age = array("Peter"=>"35", "Ben"=>"37", "Joe"=>"43");
arsort($age);
?>

Sort Array (Descending Order), According to


Key - krsort()
The following example sorts an associative array in descending order, according
to the key:

Example
<?php
$age = array("Peter"=>"35", "Ben"=>"37", "Joe"=>"43");
krsort($age);
?>

Exercise:
Create an array and sort the keys in descending order
PHP Global Variables - Superglobals
Some predefined variables in PHP are "superglobals", which means that they
are always accessible, regardless of scope - and you can access them from any
function, class or file without having to do anything special.

The PHP superglobal variables are:

 $GLOBALS
 $_SERVER
 $_REQUEST
 $_POST
 $_GET
 $_FILES
 $_ENV
 $_COOKIE
 $_SESSION

Super global variables are built-in variables that are always available in all
scopes.

PHP $GLOBALS
$GLOBALS is a PHP super global variable which is used to access global
variables from anywhere in the PHP script (also from within functions or
methods).

PHP stores all global variables in an array called $GLOBALS[index].


The index holds the name of the variable.

The example below shows how to use the super global variable $GLOBALS:
Example
<?php
$x = 75;
$y = 25;

function addition() {
$GLOBALS['z'] = $GLOBALS['x'] + $GLOBALS['y'];
}

addition();
echo $z;
?>

In the example above, since z is a variable present within the $GLOBALS array,
it is also accessible from outside the function!

PHP $_SERVER
$_SERVER is a PHP super global variable which holds information about
headers, paths, and script locations.

The example below shows how to use some of the elements in $_SERVER:

Example
<?php
echo $_SERVER['PHP_SELF'];
echo "<br>";
echo $_SERVER['SERVER_NAME'];
echo "<br>";
echo $_SERVER['HTTP_HOST'];
echo "<br>";
echo $_SERVER['HTTP_REFERER'];
echo "<br>";
echo $_SERVER['HTTP_USER_AGENT'];
echo "<br>";
echo $_SERVER['SCRIPT_NAME'];
?>

The following table lists the most important elements that can go inside
$_SERVER:
Element/Code Description

$_SERVER['PHP_SELF'] Returns the filename of the currently


executing script

$_SERVER['GATEWAY_INTERFACE'] Returns the version of the Common


Gateway Interface (CGI) the server is
using

$_SERVER['SERVER_ADDR'] Returns the IP address of the host


server

$_SERVER['SERVER_NAME'] Returns the name of the host server


(such as www.w3schools.com)

$_SERVER['SERVER_SOFTWARE'] Returns the server identification string


(such as Apache/2.2.24)

$_SERVER['SERVER_PROTOCOL'] Returns the name and revision of the


information protocol (such as
HTTP/1.1)

$_SERVER['REQUEST_METHOD'] Returns the request method used to


access the page (such as POST)
$_SERVER['REQUEST_TIME'] Returns the timestamp of the start of
the request (such as 1377687496)

$_SERVER['QUERY_STRING'] Returns the query string if the page is


accessed via a query string

$_SERVER['HTTP_ACCEPT'] Returns the Accept header from the


current request

$_SERVER['HTTP_ACCEPT_CHARSET'] Returns the Accept_Charset header


from the current request (such as utf-
8,ISO-8859-1)

$_SERVER['HTTP_HOST'] Returns the Host header from the


current request

$_SERVER['HTTP_REFERER'] Returns the complete URL of the


current page (not reliable because not
all user-agents support it)

$_SERVER['HTTPS'] Is the script queried through a secure


HTTP protocol

$_SERVER['REMOTE_ADDR'] Returns the IP address from where


the user is viewing the current page
$_SERVER['REMOTE_HOST'] Returns the Host name from where
the user is viewing the current page

$_SERVER['REMOTE_PORT'] Returns the port being used on the


user's machine to communicate with
the web server

$_SERVER['SCRIPT_FILENAME'] Returns the absolute pathname of the


currently executing script

$_SERVER['SERVER_ADMIN'] Returns the value given to the


SERVER_ADMIN directive in the web
server configuration file (if your script
runs on a virtual host, it will be the
value defined for that virtual host)
(such as [email protected])

$_SERVER['SERVER_PORT'] Returns the port on the server


machine being used by the web server
for communication (such as 80)

$_SERVER['SERVER_SIGNATURE'] Returns the server version and virtual


host name which are added to server-
generated pages

$_SERVER['PATH_TRANSLATED'] Returns the file system based path to


the current script
$_SERVER['SCRIPT_NAME'] Returns the path of the current script

$_SERVER['SCRIPT_URI'] Returns the URI of the current page

PHP $_REQUEST
PHP $_REQUEST is a PHP super global variable which is used to collect data
after submitting an HTML form.

The example below shows a form with an input field and a submit button. When
a user submits the data by clicking on "Submit", the form data is sent to the file
specified in the action attribute of the <form> tag. In this example, we point to
this file itself for processing form data. If you wish to use another PHP file to
process form data, replace that with the filename of your choice. Then, we can
use the super global variable $_REQUEST to collect the value of the input field:

Example
<html>
<body>

<form method="post" action="<?php echo $_SERVER['PHP_SELF'];?>">


Name: <input type="text" name="fname">
<input type="submit">
</form>

<?php
if ($_SERVER["REQUEST_METHOD"] == "POST") {
// collect value of input field
$name = $_REQUEST['fname'];
if (empty($name)) {
echo "Name is empty";
} else {
echo $name;
}
}
?>

</body>
</html>

PHP $_POST
PHP $_POST is a PHP super global variable which is used to collect form data
after submitting an HTML form with method="post". $_POST is also widely used
to pass variables.

The example below shows a form with an input field and a submit button. When
a user submits the data by clicking on "Submit", the form data is sent to the file
specified in the action attribute of the <form> tag. In this example, we point to
the file itself for processing form data. If you wish to use another PHP file to
process form data, replace that with the filename of your choice. Then, we can
use the super global variable $_POST to collect the value of the input field:

Example
<html>
<body>

<form method="post" action="<?php echo $_SERVER['PHP_SELF'];?>">


Name: <input type="text" name="fname">
<input type="submit">
</form>

<?php
if ($_SERVER["REQUEST_METHOD"] == "POST") {
// collect value of input field
$name = $_POST['fname'];
if (empty($name)) {
echo "Name is empty";
} else {
echo $name;
}
}
?>
</body>
</html>

Tip: You will learn more about $_POST in the PHP Forms chapter.

PHP $_GET
PHP $_GET is a PHP super global variable which is used to collect form data
after submitting an HTML form with method="get".

$_GET can also collect data sent in the URL.

Assume we have an HTML page that contains a hyperlink with parameters:

<html>
<body>

<a href="test_get.php?subject=PHP&web=fedponam.edu.ng">Test $GET</a>

</body>
</html>

When a user clicks on the link "Test $GET", the parameters "subject" and "web"
are sent to "test_get.php", and you can then access their values in
"test_get.php" with $_GET.

The example below shows the code in "test_get.php":

Example
<html>
<body>

<?php
echo "Study " . $_GET['subject'] . " at " . $_GET['web'];
?>

</body>
</html>
PHP Regular Expressions
What is a Regular Expression?
A regular expression is a sequence of characters that forms a search pattern.
When you search for data in a text, you can use this search pattern to describe
what you are searching for.

A regular expression can be a single character, or a more complicated pattern.

Regular expressions can be used to perform all types of text search and text
replace operations.

Syntax
In PHP, regular expressions are strings composed of delimiters, a pattern and
optional modifiers.

$exp = "/fedponam/i";

In the example above, / is the delimiter, fedponam is the pattern that is being
searched for, and i is a modifier that makes the search case-insensitive.

The delimiter can be any character that is not a letter, number, backslash or
space. The most common delimiter is the forward slash (/), but when your
pattern contains forward slashes it is convenient to choose other delimiters such
as # or ~.

Regular Expression Functions


PHP provides a variety of functions that allow you to use regular expressions.
The preg_match(), preg_match_all() and preg_replace() functions are some of the
most commonly used ones:

Function Description
preg_match() Returns 1 if the pattern was found in
the string and 0 if not

preg_match_all() Returns the number of times the


pattern was found in the string, which
may also be 0

preg_replace() Returns a new string where matched


patterns have been replaced with
another string

Using preg_match()
The preg_match() function will tell you whether a string contains matches of a
pattern.

Example
Use a regular expression to do a case-insensitive search for "w3schools" in a
string:

<?php
$str = "Visit Fedponam";
$pattern = "/fedponam/i";
echo preg_match($pattern, $str); // Outputs 1
?>

Using preg_match_all()
The preg_match_all() function will tell you how many matches were found for a
pattern in a string.
Example
Use a regular expression to do a case-insensitive count of the number of
occurrences of "ain" in a string:

<?php
$str = "The rain in SPAIN falls mainly on the plains.";
$pattern = "/ain/i";
echo preg_match_all($pattern, $str); // Outputs 4
?>

Using preg_replace()
The preg_replace() function will replace all of the matches of the pattern in a
string with another string.

Example
Use a case-insensitive regular expression to replace Microsoft with W3Schools in
a string:

<?php
$str = "Visit Microsoft!";
$pattern = "/microsoft/i";
echo preg_replace($pattern, "Fedponam", $str); // Outputs "Visit
Fedponam!"
?>

Regular Expression Modifiers


Modifiers can change how a search is performed.

Modifier Description

i Performs a case-insensitive search


m Performs a multiline search (patterns that search for
the beginning or end of a string will match the
beginning or end of each line)

u Enables correct matching of UTF-8 encoded patterns

Regular Expression Patterns


Brackets are used to find a range of characters:

Expression Description

[abc] Find one character from the options between the


brackets

[^abc] Find any character NOT between the brackets

[0-9] Find one character from the range 0 to 9

Metacharacters
Metacharacters are characters with a special meaning:
Metacharacter Description

| Find a match for any one of the patterns separated


by | as in: cat|dog|fish

. Find just one instance of any character

^ Finds a match as the beginning of a string as in:


^Hello

$ Finds a match at the end of the string as in:


World$

\d Find a digit

\s Find a whitespace character

\b Find a match at the beginning of a word like this:


\bWORD, or at the end of a word like this:
WORD\b

\uxxxx Find the Unicode character specified by the


hexadecimal number xxxx
Quantifiers
Quantifiers define quantities:

Quantifier Description

n+ Matches any string that contains at least one n

n* Matches any string that contains zero or more


occurrences of n

n? Matches any string that contains zero or one


occurrences of n

n{x} Matches any string that contains a sequence of X n's

n{x,y} Matches any string that contains a sequence of X to


Y n's

n{x,} Matches any string that contains a sequence of at least


X n's

Note: If your expression needs to search for one of the special characters you
can use a backslash ( \ ) to escape them. For example, to search for one or
more question marks you can use the following expression: $pattern = '/\?+/';
Grouping
You can use parentheses ( ) to apply quantifiers to entire patterns. They also
can be used to select parts of the pattern to be used as a match.

Example
Use grouping to search for the word "banana" by looking for ba followed by two
instances of na:

<?php
$str = "Apples and bananas.";
$pattern = "/ba(na){2}/i";
echo preg_match($pattern, $str); // Outputs 1
?>

PHP Form Handling


The PHP superglobals $_GET and $_POST are used to collect form-data.

PHP - A Simple HTML Form


The example below displays a simple HTML form with two input fields and a
submit button:

Example
<html>
<body>

<form action="welcome.php" method="post">


Name: <input type="text" name="name"><br>
E-mail: <input type="text" name="email"><br>
<input type="submit">
</form>

</body>
</html>
When the user fills out the form above and clicks the submit button, the form
data is sent for processing to a PHP file named "welcome.php". The form data is
sent with the HTTP POST method.

To display the submitted data you could simply echo all the variables. The
"welcome.php" looks like this:

<html>
<body>

Welcome <?php echo $_POST["name"]; ?><br>


Your email address is: <?php echo $_POST["email"]; ?>

</body>
</html>

The output could be something like this:

Welcome John
Your email address is [email protected]

The same result could also be achieved using the HTTP GET method:

Example
<html>
<body>

<form action="welcome_get.php" method="get">


Name: <input type="text" name="name"><br>
E-mail: <input type="text" name="email"><br>
<input type="submit">
</form>

</body>
</html>

and "welcome_get.php" looks like this:

<html>
<body>

Welcome <?php echo $_GET["name"]; ?><br>


Your email address is: <?php echo $_GET["email"]; ?>
</body>
</html>

The code above is quite simple. However, the most important thing is missing.
You need to validate form data to protect your script from malicious code.

Think SECURITY when processing PHP forms!

This page does not contain any form validation, it just shows how you can send
and retrieve form data.

However, the next pages will show how to process PHP forms with security in
mind! Proper validation of form data is important to protect your form from
hackers and spammers!

GET vs. POST


Both GET and POST create an array (e.g. array( key1 => value1, key2 =>
value2, key3 => value3, ...)). This array holds key/value pairs, where keys are
the names of the form controls and values are the input data from the user.

Both GET and POST are treated as $_GET and $_POST. These are superglobals,
which means that they are always accessible, regardless of scope - and you can
access them from any function, class or file without having to do anything
special.

$_GET is an array of variables passed to the current script via the URL
parameters.

$_POST is an array of variables passed to the current script via the HTTP POST
method.

When to use GET?


Information sent from a form with the GET method is visible to everyone (all
variable names and values are displayed in the URL). GET also has limits on the
amount of information to send. The limitation is about 2000 characters.
However, because the variables are displayed in the URL, it is possible to
bookmark the page. This can be useful in some cases.
GET may be used for sending non-sensitive data.

Note: GET should NEVER be used for sending passwords or other sensitive
information!

When to use POST?


Information sent from a form with the POST method is invisible to others (all
names/values are embedded within the body of the HTTP request) and has no
limits on the amount of information to send.

Moreover POST supports advanced functionality such as support for multi-part


binary input while uploading files to server.

However, because the variables are not displayed in the URL, it is not possible
to bookmark the page.

Developers prefer POST for sending form data.

Next, lets see how we can process PHP forms the secure way!

Exercises
If the form in the white section below gets submitted, how can you, in welcome.php,
output the value from the "first name" field?
<form action="welcome.php" method="get">
First name: <input type="text" name="fname">
</form>

PHP Form Validation


Think SECURITY when processing PHP forms!

These pages will show how to process PHP forms with security in mind. Proper
validation of form data is important to protect your form from hackers and
spammers!

The HTML form we will be working at in these chapters, contains various input
fields: required and optional text fields, radio buttons, and a submit button:
The validation rules for the form above are as follows:

Field Validation Rules

Name Required. + Must only contain letters and whitespace

E-mail Required. + Must contain a valid email address (with @ and .)

Website Optional. If present, it must contain a valid URL

Comment Optional. Multi-line input field (textarea)


Gender Required. Must select one

First we will look at the plain HTML code for the form:

Text Fields
The name, email, and website fields are text input elements, and the comment
field is a textarea. The HTML code looks like this:

Name: <input type="text" name="name">


E-mail: <input type="text" name="email">
Website: <input type="text" name="website">
Comment: <textarea name="comment" rows="5" cols="40"></textarea>

Radio Buttons
The gender fields are radio buttons and the HTML code looks like this:

Gender:
<input type="radio" name="gender" value="female">Female
<input type="radio" name="gender" value="male">Male
<input type="radio" name="gender" value="other">Other

The Form Element


The HTML code of the form looks like this:

<form method="post" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF


"]);?>">

When the form is submitted, the form data is sent with method="post".

What is the $_SERVER["PHP_SELF"] variable?

The $_SERVER["PHP_SELF"] is a super global variable that returns the filename


of the currently executing script.
So, the $_SERVER["PHP_SELF"] sends the submitted form data to the page
itself, instead of jumping to a different page. This way, the user will get error
messages on the same page as the form.

What is the htmlspecialchars() function?

The htmlspecialchars() function converts special characters to HTML entities.


This means that it will replace HTML characters like < and > with &lt; and &gt;.
This prevents attackers from exploiting the code by injecting HTML or Javascript
code (Cross-site Scripting attacks) in forms.

Big Note on PHP Form Security


The $_SERVER["PHP_SELF"] variable can be used by hackers!

If PHP_SELF is used in your page then a user can enter a slash (/) and then
some Cross Site Scripting (XSS) commands to execute.

Cross-site scripting (XSS) is a type of computer security vulnerability


typically found in Web applications. XSS enables attackers to inject
client-side script into Web pages viewed by other users.

Assume we have the following form in a page named "test_form.php":

<form method="post" action="<?php echo $_SERVER["PHP_SELF"];?>">

Now, if a user enters the normal URL in the address bar like
"http://www.example.com/test_form.php", the above code will be translated to:

<form method="post" action="test_form.php">

So far, so good.

However, consider that a user enters the following URL in the address bar:

http://www.example.com/test_form.php/%22%3E%3Cscript%3Ealert('hacked')%3C/
script%3E

In this case, the above code will be translated to:

<form method="post" action="test_form.php/"><script>alert('hacked')</scrip


t>
This code adds a script tag and an alert command. And when the page loads,
the JavaScript code will be executed (the user will see an alert box). This is just
a simple and harmless example how the PHP_SELF variable can be exploited.

Be aware of that any JavaScript code can be added inside the <script>
tag! A hacker can redirect the user to a file on another server, and that file can
hold malicious code that can alter the global variables or submit the form to
another address to save the user data, for example.

How To Avoid $_SERVER["PHP_SELF"]


Exploits?
$_SERVER["PHP_SELF"] exploits can be avoided by using the htmlspecialchars()
function.

The form code should look like this:

<form method="post" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF


"]);?>">

The htmlspecialchars() function converts special characters to HTML entities.


Now if the user tries to exploit the PHP_SELF variable, it will result in the
following output:

<form method="post" action="test_form.php/&quot;&gt;&lt;script&gt;alert('h


acked')&lt;/script&gt;">

The exploit attempt fails, and no harm is done!

Validate Form Data With PHP


The first thing we will do is to pass all variables through PHP's htmlspecialchars()
function.

When we use the htmlspecialchars() function; then if a user tries to submit the
following in a text field:

<script>location.href('http://www.hacked.com')</script>

- this would not be executed, because it would be saved as HTML escaped code,
like this:
&lt;script&gt;location.href('http://www.hacked.com')&lt;/script&gt;

The code is now safe to be displayed on a page or inside an e-mail.

We will also do two more things when the user submits the form:

1. Strip unnecessary characters (extra space, tab, newline) from the user
input data (with the PHP trim() function)
2. Remove backslashes (\) from the user input data (with the PHP
stripslashes() function)

The next step is to create a function that will do all the checking for us (which is
much more convenient than writing the same code over and over again).

We will name the function test_input().

Now, we can check each $_POST variable with the test_input() function, and
the script looks like this:

Example
<?php
// define variables and set to empty values
$name = $email = $gender = $comment = $website = "";

if ($_SERVER["REQUEST_METHOD"] == "POST") {
$name = test_input($_POST["name"]);
$email = test_input($_POST["email"]);
$website = test_input($_POST["website"]);
$comment = test_input($_POST["comment"]);
$gender = test_input($_POST["gender"]);
}

function test_input($data) {
$data = trim($data);
$data = stripslashes($data);
$data = htmlspecialchars($data);
return $data;
}
?>

Notice that at the start of the script, we check whether the form has been
submitted using $_SERVER["REQUEST_METHOD"]. If the REQUEST_METHOD is
POST, then the form has been submitted - and it should be validated. If it has
not been submitted, skip the validation and display a blank form.

However, in the example above, all input fields are optional. The script works
fine even if the user does not enter any data.

The next step is to make input fields required and create error messages if
needed.

PHP Forms - Required Fields


This chapter shows how to make input fields required and create error
messages if needed.

PHP - Required Fields


From the validation rules table on the previous page, we see that the "Name",
"E-mail", and "Gender" fields are required. These fields cannot be empty and
must be filled out in the HTML form.

Field Validation Rules

Name Required. + Must only contain letters and whitespace

E-mail Required. + Must contain a valid email address (with @


and .)

Website Optional. If present, it must contain a valid URL

Comment Optional. Multi-line input field (textarea)


Gender Required. Must select one

In the previous chapter, all input fields were optional.

In the following code we have added some new variables: $nameErr, $emailErr,
$genderErr, and $websiteErr. These error variables will hold error messages for
the required fields. We have also added an if else statement for each $_POST
variable. This checks if the $_POST variable is empty (with the
PHP empty() function). If it is empty, an error message is stored in the different
error variables, and if it is not empty, it sends the user input data through
the test_input() function:

<?php
// define variables and set to empty values
$nameErr = $emailErr = $genderErr = $websiteErr = "";
$name = $email = $gender = $comment = $website = "";

if ($_SERVER["REQUEST_METHOD"] == "POST") {
if (empty($_POST["name"])) {
$nameErr = "Name is required";
} else {
$name = test_input($_POST["name"]);
}

if (empty($_POST["email"])) {
$emailErr = "Email is required";
} else {
$email = test_input($_POST["email"]);
}

if (empty($_POST["website"])) {
$website = "";
} else {
$website = test_input($_POST["website"]);
}

if (empty($_POST["comment"])) {
$comment = "";
} else {
$comment = test_input($_POST["comment"]);
}
if (empty($_POST["gender"])) {
$genderErr = "Gender is required";
} else {
$gender = test_input($_POST["gender"]);
}
}
?>

PHP - Display The Error Messages


Then in the HTML form, we add a little script after each required field, which
generates the correct error message if needed (that is if the user tries to submit
the form without filling out the required fields):

Example
<form method="post" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF
"]);?>">

Name: <input type="text" name="name">


<span class="error">* <?php echo $nameErr;?></span>
<br><br>
E-mail:
<input type="text" name="email">
<span class="error">* <?php echo $emailErr;?></span>
<br><br>
Website:
<input type="text" name="website">
<span class="error"><?php echo $websiteErr;?></span>
<br><br>
Comment: <textarea name="comment" rows="5" cols="40"></textarea>
<br><br>
Gender:
<input type="radio" name="gender" value="female">Female
<input type="radio" name="gender" value="male">Male
<input type="radio" name="gender" value="other">Other
<span class="error">* <?php echo $genderErr;?></span>
<br><br>
<input type="submit" name="submit" value="Submit">

</form>
The next step is to validate the input data, that is "Does the Name field contain
only letters and whitespace?", and "Does the E-mail field contain a valid e-mail
address syntax?", and if filled out, "Does the Website field contain a valid URL?".

PHP Forms - Validate E-mail and URL


This chapter shows how to validate names, e-mails, and URLs.

PHP - Validate Name


The code below shows a simple way to check if the name field only contains
letters, dashes, apostrophes and whitespaces. If the value of the name field is
not valid, then store an error message:

$name = test_input($_POST["name"]);
if (!preg_match("/^[a-zA-Z-' ]*$/",$name)) {
$nameErr = "Only letters and white space allowed";
}

The preg_match() function searches a string for pattern, returning true


if the pattern exists, and false otherwise.

PHP - Validate E-mail


The easiest and safest way to check whether an email address is well-formed is
to use PHP's filter_var() function.

In the code below, if the e-mail address is not well-formed, then store an error
message:

$email = test_input($_POST["email"]);
if (!filter_var($email, FILTER_VALIDATE_EMAIL)) {
$emailErr = "Invalid email format";
}

PHP - Validate URL


The code below shows a way to check if a URL address syntax is valid (this
regular expression also allows dashes in the URL). If the URL address syntax is
not valid, then store an error message:
$website = test_input($_POST["website"]);
if (!preg_match("/\b(?:(?:https?|ftp):\/\/|www\.)[-a-z0-
9+&@#\/%?=~_|!:,.;]*[-a-z0-9+&@#\/%=~_|]/i",$website)) {
$websiteErr = "Invalid URL";
}

PHP - Validate Name, E-mail, and URL


Now, the script looks like this:

Example
<?php
// define variables and set to empty values
$nameErr = $emailErr = $genderErr = $websiteErr = "";
$name = $email = $gender = $comment = $website = "";

if ($_SERVER["REQUEST_METHOD"] == "POST") {
if (empty($_POST["name"])) {
$nameErr = "Name is required";
} else {
$name = test_input($_POST["name"]);
// check if name only contains letters and whitespace
if (!preg_match("/^[a-zA-Z-' ]*$/",$name)) {
$nameErr = "Only letters and white space allowed";
}
}

if (empty($_POST["email"])) {
$emailErr = "Email is required";
} else {
$email = test_input($_POST["email"]);
// check if e-mail address is well-formed
if (!filter_var($email, FILTER_VALIDATE_EMAIL)) {
$emailErr = "Invalid email format";
}
}

if (empty($_POST["website"])) {
$website = "";
} else {
$website = test_input($_POST["website"]);
// check if URL address syntax is valid (this regular expression also
allows dashes in the URL)
if (!preg_match("/\b(?:(?:https?|ftp):\/\/|www\.)[-a-z0-
9+&@#\/%?=~_|!:,.;]*[-a-z0-9+&@#\/%=~_|]/i",$website)) {
$websiteErr = "Invalid URL";
}
}

if (empty($_POST["comment"])) {
$comment = "";
} else {
$comment = test_input($_POST["comment"]);
}

if (empty($_POST["gender"])) {
$genderErr = "Gender is required";
} else {
$gender = test_input($_POST["gender"]);
}
}
?>

The next step is to show how to prevent the form from emptying all the input
fields when the user submits the form.

PHP Complete Form Example


This chapter shows how to keep the values in the input fields when the user hits the submit
button.

PHP - Keep The Values in The Form


To show the values in the input fields after the user hits the submit button, we add a little PHP script
inside the value attribute of the following input fields: name, email, and website. In the comment
textarea field, we put the script between the <textarea> and </textarea> tags. The little script outputs
the value of the $name, $email, $website, and $comment variables.

Then, we also need to show which radio button that was checked. For this, we must manipulate the
checked attribute (not the value attribute for radio buttons):

Name: <input type="text" name="name" value="<?php echo $name;?>">

E-mail: <input type="text" name="email" value="<?php echo $email;?>">


Website: <input type="text" name="website" value="<?php echo $website;?>">

Comment: <textarea name="comment" rows="5" cols="40"><?php echo $comment;?


></textarea>

Gender:
<input type="radio" name="gender"
<?php if (isset($gender) && $gender=="female") echo "checked";?>
value="female">Female
<input type="radio" name="gender"
<?php if (isset($gender) && $gender=="male") echo "checked";?>
value="male">Male
<input type="radio" name="gender"
<?php if (isset($gender) && $gender=="other") echo "checked";?>
value="other">Other

You might also like