Php Tutorialw3schoolspdf
Php Tutorialw3schoolspdf
www.w3schools.com Organized by
Nur Dwi Muryanto, 2009
PHP Tutorial
PHP Tutorial
PHP is a powerful server-side scripting language for creating
dynamic and interactive websites.
The PHP syntax is very similar to Perl and C. PHP is often used
together with Apache (web server) on various operating systems.
It also supports ISAPI and can be used with Microsoft's IIS on
Windows.
PHP References
At W3Schools you will find complete references of all PHP functions:
Array functions
Calendar functions
Date functions
Directory functions
Error functions
Filesystem functions
Filter functions
FTP functions
HTTP functions
LibXML functions
Mail functions
Math functions
Misc functions
MySQL functions
SimpleXML functions
String functions
XML Parser functions
Page 1 of
Tutorial PHP by
www.w3schools.com Organized by
Nur Dwi Muryanto, 2009
Zip functions
Introduction to PHP
PHP is a server-side scripting language.
What You Should Already Know
Before you continue you should have a basic understanding of the following:
HTML
Some scripting knowledge
If you want to study these subjects first, find the tutorials on our Home page.
What is PHP?
PHP stands for PHP: Hypertext Preprocessor
PHP is a server-side scripting language, like ASP
PHP scripts are executed on the server
PHP supports many databases (MySQL, Informix, Oracle, Sybase,
Solid, PostgreSQL, Generic ODBC, etc.)
PHP is an open source software
PHP is free to download and use
What is MySQL?
MySQL is a database server
MySQL is ideal for both small and large applications
MySQL supports standard SQL
MySQL compiles on a number of platforms
MySQL is free to download and use
PHP + MySQL
PHP combined with MySQL are cross-platform (you can develop
in Windows and serve on a Unix platform)
Why PHP?
PHP runs on different platforms (Windows, Linux, Unix, etc.)
PHP is compatible with almost all servers used today (Apache, IIS, etc.)
PHP is FREE to download from the official PHP resource: www.php.net
Page 2 of
Tutorial PHP by
www.w3schools.com Organized by
Nur Dwi Muryanto, 2009
PHP is easy to learn and runs efficiently on the server side
Where to Start?
To get access to a web server with PHP support, you can:
Install Apache (or IIS) on your own server, install PHP, and MySQL
Or find a web hosting plan with PHP and MySQL support
PHP Installation
What do You
Need?
If your server supports PHP you don't need to do anything. Just create some .php
files in your web directory, and the server will parse them for you. Because it is
free, most web hosts offer PHP support.
However, if your server does not support PHP, you must install PHP.
Download PHP
Download PHP for free here: http://www.php.net/downloads.php
Page 3 of
Tutorial PHP by
www.w3schools.com Organized by
Nur Dwi Muryanto, 2009
PHP Syntax
PHP code is executed on the server, and the plain HTML result is sent to the
browser.
Basic PHP Syntax
A PHP scripting block always starts with <?php and ends with ?>. A PHP scripting
block can be placed anywhere in the document.
On servers with shorthand support enabled you can start a scripting block with <?
and end with ?>.
For maximum compatibility, we recommend that you use the standard form (<?php)
rather than the shorthand form.
<?php
?>
A PHP file normally contains HTML tags, just like an HTML file, and some PHP
scripting code.
Below, we have an example of a simple PHP script which sends the text "Hello
World" to the browser:
<html>
<body>
<?php
echo "Hello World";
?>
</body>
</html>
Each code line in PHP must end with a semicolon. The semicolon is a separator and
is used to distinguish one set of instructions from another.
There are two basic statements to output text with PHP: echo and print. In the
example above we have used the echo statement to output the text "Hello World".
Note: The file must have the .php extension. If the file has a .html extension, the
PHP code will not be executed.
Page 4 of
Tutorial PHP by
www.w3schools.com Organized by
Nur Dwi Muryanto, 2009
Comments in PHP
In PHP, we use // to make a single-line comment or /* and */ to make a large
comment block.
<html>
<body>
<?php
//This is a comment
/*
This is
a comment
block
*/
?>
</body>
</html>
PHP Variables
Variables are used for storing values, such as numbers, strings or function results,
so that they can be used many times in a script.
Variables in PHP
Variables are used for storing a values, like text strings, numbers or arrays.
When a variable is set it can be used over and over again in your script
in PHP:
$var_name = value;
New PHP programmers often forget the $ sign at the beginning of the variable. In
that case it will not work.
Page 5 of
Tutorial PHP by
www.w3schools.com Organized by
Nur Dwi Muryanto, 2009
Let's try creating a variable with a string, and a variable with a number:
Page 6 of
Tutorial PHP by
www.w3schools.com Organized by
Nur Dwi Muryanto, 2009
<?php
$txt = "Hello World!";
$number = 16;
?>
In the example above, you see that you do not have to tell PHP which data type the
variable is.
PHP automatically converts the variable to the correct data type, depending on how
they are set.
In a strongly typed programming language, you have to declare (define) the type
and name of the variable before using it.
PHP String
A string variable is used to store and manipulate a piece of text.
Strings in PHP
String variables are used for values that contains character strings.
In this tutorial we are going to look at some of the most common functions and
operators used to manipulate strings in PHP.
After we create a string we can manipulate it. A string can be used directly in a
function or it can be stored in a variable.
Page 7 of
Tutorial PHP by
www.w3schools.com Organized by
Nur Dwi Muryanto, 2009
Below, the PHP script assigns the string "Hello World" to a string variable called
$txt:
<?php
$txt="Hello World";
echo $txt;
?>
Now, lets try to use some different functions and operators to manipulate our string.
The Concatenation Operator
There is only one string operator in PHP.
The concatenation operator (.) is used to put two string values together.
If we look at the code above you see that we used the concatenation operator two
times. This is because we had to insert a third string.
Between the two string variables we added a string with a single character, an
empty space, to separate the two variables.
Using the strlen() function
The strlen() function is used to find the length of a string.
Page 8 of
Tutorial PHP by
www.w3schools.com Organized by
Nur Dwi Muryanto, 2009
?>
The length of a string is often used in loops or other functions, when it is important
to know when the string ends. (i.e. in a loop, we would want to stop the loop after
the last character in the string)
Using the strpos() function
The strpos() function is used to search for a string or character within a string.
If a match is found in the string, this function will return the position of the first
match. If no match is found, it will return FALSE.
As you see the position of the string "world" in our string is position 6. The reason
that it is 6, and not 7, is that the first position in the string is 0, and not 1.
Complete PHP String Reference
For a complete reference of all string functions, go to our complete PHP String
Reference.
The reference contains a brief description and examples of use for each function!
PHP Operators
Page 9 of
Tutorial PHP by
www.w3schools.com Organized by
Nur Dwi Muryanto, 2009
Operators are used to operate on values.
PHP Operators
This section lists the different operators used in PHP.
Arithmetic Operators
Assignment Operators
Comparison Operators
Page 10 of
Tutorial PHP by
www.w3schools.com Organized by
Nur Dwi Muryanto, 2009
Operator Description Example
== is equal to 5==8 returns false
!= is not equal 5!=8 returns true
> is greater than 5>8 returns false
< is less than 5<8 returns true
>= is greater than or equal to 5>=8 returns false
<= is less than or equal to 5<=8 returns true
Logical Operators
Page 11 of
Tutorial PHP by
www.w3schools.com Organized by
Nur Dwi Muryanto, 2009
elseif statement - is used with the if...else statement to
execute a set of code if one of several condition are true
The If...Else Statement
If you want to execute some code if a condition is true and another code if a
condition is false, use the if....else statement.
Syntax
if (condition)
code to be executed if condition is true;
else
code to be executed if condition is false;
Example
The following example will output "Have a nice weekend!" if the current day is
Friday, otherwise it will output "Have a nice day!":
<html>
<body>
<?php
$d=date("D");
if ($d=="Fri")
echo "Have a nice weekend!";
else
echo "Have a nice day!";
?>
</body>
</html>
If more than one line should be executed if a condition is true/false, the lines should
be enclosed within curly braces:
<html>
<body>
<?php
$d=date("D");
if ($d=="Fri")
{
echo "Hello!<br />";
echo "Have a nice weekend!";
echo "See you on Monday!";
}
?>
</body>
Page 12 of
Tutorial PHP by
www.w3schools.com Organized by
Nur Dwi Muryanto, 2009
</html>
Syntax
if (condition)
code to be executed if condition is true;
elseif (condition)
code to be executed if condition is true;
else
code to be executed if condition is false;
Example
The following example will output "Have a nice weekend!" if the current day is
Friday, and "Have a nice Sunday!" if the current day is Sunday. Otherwise it will
output "Have a nice day!":
<html>
<body>
<?php
$d=date("D");
if ($d=="Fri")
echo "Have a nice weekend!";
elseif ($d=="Sun")
echo "Have a nice Sunday!";
else
echo "Have a nice day!";
?>
</body>
</html>
Page 13 of
Tutorial PHP by
www.w3schools.com Organized by
Nur Dwi Muryanto, 2009
PHP Switch Statement
The Switch statement in PHP is used to perform one of several different actions
based on one of several different conditions.
The Switch Statement
If you want to select one of many blocks of code to be executed, use the Switch
statement.
The switch statement is used to avoid long blocks of if..elseif..else code.
Syntax
switch (expression)
{
case label1:
code to be executed if expression = label1;
break;
case label2:
code to be executed if expression = label2;
break;
default:
code to be executed
if expression is different
from both label1 and label2;
}
Example
<html>
<body>
<?php
switch ($x)
{
case 1:
echo "Number 1";
break;
case 2:
Page 14 of
Tutorial PHP by
www.w3schools.com Organized by
Nur Dwi Muryanto, 2009
echo "Number 2";
break;
case 3:
echo "Number 3";
break;
default:
echo "No number between 1 and 3";
}
?>
</body>
</html>
PHP Arrays
An array can store one or more values in a single variable name.
What is an array?
When working with PHP, sooner or later, you might want to create many similar
variables.
Instead of having many similar variables, you can store the data as elements in an
array.
Each element in the array has its own ID so that it can be easily accessed.
Numeric Arrays
A numeric array stores each element with a numeric ID key.
Example 1
Page 15 of
Tutorial PHP by
www.w3schools.com Organized by
Nur Dwi Muryanto, 2009
$names = array("Peter","Quagmire","Joe");
Example 2
Associative Arrays
An associative array, each ID key is associated with a value.
When storing data about specific named values, a numerical array is not always the
best way to do it.
With associative arrays we can use the values as keys and assign values to them.
Example 1
Example 2
This example is the same as example 1, but shows a different way of creating the
array:
$ages['Peter'] = "32";
Page 16 of
Tutorial PHP by
www.w3schools.com Organized by
Nur Dwi Muryanto, 2009
$ages['Quagmire'] = "30";
$ages['Joe'] = "34";
Multidimensional Arrays
In a multidimensional array, each element in the main array can also be an array.
And each element in the sub-array can be an array, and so on.
Example
Page 17 of
Tutorial PHP by
www.w3schools.com Organized by
Nur Dwi Muryanto, 2009
The array above would look like this if written to the output:
Array
(
[Griffin] => Array
(
[0] => Peter
[1] => Lois
[2] => Megan
)
[Quagmire] => Array
(
[0] => Glenn
)
[Brown] => Array
(
[0] => Cleveland
[1] => Loretta
[2] => Junior
)
)
Example 2
PHP Looping
Looping statements in PHP are used to execute the same block of code a specified
number of times.
Looping
Very often when you write code, you want the same block of code to run a number
of times. You can use looping statements in your code to perform this.
Page 18 of
Tutorial PHP by
www.w3schools.com Organized by
Nur Dwi Muryanto, 2009
In PHP we have the following looping statements:
while - loops through a block of code if and as long as a
specified condition is true
do...while - loops through a block of code once, and
then repeats the loop as long as a special 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
Syntax
while (condition)
code to be executed;
Example
The following example demonstrates a loop that will continue to run as long as the
variable i is less than, or equal to 5. i will increase by 1 each time the loop runs:
<html>
<body>
<?php
$i=1;
while($i<=5)
{
echo "The number is " . $i . "<br />";
$i++;
}
?>
</body>
</html>
Syntax
Page 19 of
Tutorial PHP by
www.w3schools.com Organized by
Nur Dwi Muryanto, 2009
do
{
code to be executed;
Page 20 of
Tutorial PHP by
www.w3schools.com Organized by
Nur Dwi Muryanto, 2009
}
while (condition);
Example
The following example will increment the value of i at least once, and it will
continue incrementing the variable i as long as it has a value of less than 5:
<html>
<body>
<?php
$i=0;
do
{
$i++;
echo "The number is " . $i . "<br />";
}
while ($i<5);
?>
</body>
</html>
In it's simplest form, the for statement is used when you know how many times you
want to execute a statement or a list of statements.
Syntax
for (init; cond; incr)
{
code to be executed;
}
Parameters:
init: Is mostly used to set a counter, but can be any
code to be executed once at the beginning of the loop
statement.
cond: Is evaluated at beginning of each loop iteration.
If the condition evaluates to TRUE, the loop continues
and the code executes. If it evaluates to FALSE, the
execution of the loop ends.
incr: Is mostly used to increment a counter, but can
be any code to be executed at the end of each loop.
Page 21 of
Tutorial PHP by
www.w3schools.com Organized by
Nur Dwi Muryanto, 2009
Note: Each of the parameters can be empty or have multiple expressions
separated by commas.
cond: All expressions separated by a comma are
evaluated but the result is taken from the last part.
This parameter being empty means the loop should
be run indefinitely. This is useful when using a
conditional break statement inside the loop for ending
the loop.
Example
The following example prints the text "Hello World!" five times:
<html>
<body>
<?php
for ($i=1; $i<=5; $i++)
{
echo "Hello World!<br />";
}
?>
</body>
</html>
For every loop, the value of the current array element is assigned to $value (and the
array pointer is moved by one) - so on the next loop, you'll be looking at the next
element.
Syntax
foreach (array as value)
{
code to be executed;
}
Example
The following example demonstrates a loop that will print the values of the given
array:
<html>
<body>
<?php
Page 22 of
Tutorial PHP by
www.w3schools.com Organized by
Nur Dwi Muryanto, 2009
$arr=array("one", "two", "three");
foreach ($arr as $value)
{
echo "Value: " . $value . "<br />";
}
?>
</body>
</html>
PHP Functions
The real power of PHP comes from its functions.
In PHP - there are more than 700 built-in functions available.
PHP Functions
In this tutorial we will show you how to create your own functions.
For a reference and examples of the built-in functions, please visit our PHP
Reference.
Create a PHP Function
A function is a block of code that can be executed whenever we need it.
Example
Page 23 of
Tutorial PHP by
www.w3schools.com Organized by
Nur Dwi Muryanto, 2009
<html>
<body>
<?php
function writeMyName()
Page 24 of
Tutorial PHP by
www.w3schools.com Organized by
Nur Dwi Muryanto, 2009
{
echo "Kai Jim Refsnes";
}
writeMyName();
?>
</body>
</html>
You may have noticed the parentheses after the function name, like:
writeMyName(). The parameters are specified inside the parentheses.
Page 25 of
Tutorial PHP by
www.w3schools.com Organized by
Nur Dwi Muryanto, 2009
Example 1
The following example will write different first names, but the same last name:
<html>
<body>
<?php
function writeMyName($fname)
{
echo $fname . " Refsnes.<br />";
}
echo "My name is ";
writeMyName("Kai Jim");
echo "My name is ";
writeMyName("Hege");
echo "My name is ";
writeMyName("Stale");
?>
</body>
</html>
Example 2
Page 26 of
Tutorial PHP by
www.w3schools.com Organized by
Nur Dwi Muryanto, 2009
Example
<html>
<body>
<?php
function add($x,$y)
{
$total = $x + $y;
return $total;
}
echo "1 + 16 = " . add(1,16);
?>
</body>
</html>
Form example:
Page 27 of
Tutorial PHP by
www.w3schools.com Organized by
Nur Dwi Muryanto, 2009
<html>
<body>
<form action="welcome.php" method="post">
Name: <input type="text" name="name" />
Age: <input type="text" name="age" />
<input type="submit" />
</form>
</body>
</html>
The example HTML page above contains two input fields and a submit button.
When the user fills in this form and click on the submit button, the form data is sent
to the "welcome.php" file.
The PHP $_GET and $_POST variables will be explained in the next chapters.
Form Validation
User input should be validated whenever possible. Client side validation is faster,
and will reduce server load.
However, any site that gets enough traffic to worry about server resources, may also
need to worry about site security. You should always use server side validation if
the form accesses a database.
A good way to validate a form on the server is to post the form to itself, instead
of jumping to a different page. The user will then get the error messages on the
same page as the form. This makes it easier to discover the error.
Page 28 of
Tutorial PHP by
www.w3schools.com Organized by
Nur Dwi Muryanto, 2009
PHP $_GET
The $_GET variable is used to collect values from a form with method="get".
The $_GET Variable
The $_GET variable is an array of variable names and values sent by the HTTP
GET method.
The $_GET variable is used to collect values from a form with method="get".
Information sent from a form with the GET method is visible to everyone (it will be
displayed in the browser's address bar) and it has limits on the amount of
information to send (max. 100 characters).
Example
<form action="welcome.php" method="get">
Name: <input type="text" name="name" />
Age: <input type="text" name="age" />
<input type="submit" />
</form>
When the user clicks the "Submit" button, the URL sent could look something like
this:
http://www.w3schools.com/welcome.php?name=Peter&age=37
The "welcome.php" file can now use the $_GET variable to catch the form data
(notice that the names of the form fields will automatically be the ID keys in the
$_GET array):
Page 29 of
Tutorial PHP by
www.w3schools.com Organized by
Nur Dwi Muryanto, 2009
Note: The HTTP GET method is not suitable on large variable values; the value
cannot exceed 100 characters.
The $_REQUEST Variable
The PHP $_REQUEST variable contains the contents of both $_GET, $_POST, and
$_COOKIE.
The PHP $_REQUEST variable can be used to get the result from form data sent
with both the GET and POST methods.
Example
Welcome <?php echo $_REQUEST["name"]; ?>.<br />
You are <?php echo $_REQUEST["age"]; ?> years old!
PHP $_POST
The $_POST variable is used to collect values from a form with method="post".
The $_POST Variable
The $_POST variable is an array of variable names and values sent by the HTTP
POST method.
The $_POST variable is used to collect values from a form with method="post".
Information sent from a form with the POST method is invisible to others and has
no limits on the amount of information to send.
Example
<form action="welcome.php" method="post">
Enter your name: <input type="text" name="name" />
Enter your age: <input type="text" name="age" />
<input type="submit" />
</form>
When the user clicks the "Submit" button, the URL will not contain any form data,
and will look something like this:
http://www.w3schools.com/welcome.php
Page 30 of
Tutorial PHP by
www.w3schools.com Organized by
Nur Dwi Muryanto, 2009
The "welcome.php" file can now use the $_POST variable to catch the form data
(notice that the names of the form fields will automatically be the ID keys in the
$_POST array):
However, because the variables are not displayed in the URL, it is not possible to
bookmark the page.
The PHP $_REQUEST variable can be used to get the result from form data sent
with both the GET and POST methods.
Example
Welcome <?php echo $_REQUEST["name"]; ?>.<br />
You are <?php echo $_REQUEST["age"]; ?> years old!
PHP Date()
The PHP date() function is used to format a time or a date.
The PHP Date() Function
The PHP date() function formats a timestamp to a more readable date and time.
Syntax
date(format,timestamp)
Page 31 of
Tutorial PHP by
www.w3schools.com Organized by
Nur Dwi Muryanto, 2009
Paramete Description
r
format Required. Specifies the format of the timestamp
An overview of all the letters that can be used in the format parameter, can be found
in our PHP Date reference.
Other characters, like"/", ".", or "-" can also be inserted between the letters to add
additional formatting:
<?php
echo date("Y/m/d");
echo "<br />";
echo date("Y.m.d");
echo "<br />";
echo date("Y-m-d");
?>
Page 32 of
Tutorial PHP by
www.w3schools.com Organized by
Nur Dwi Muryanto, 2009
The second parameter in the date() function specifies a timestamp. This parameter
is optional. If you do not supply a timestamp, the current time will be used.
In our next example we will use the mktime() function to create a timestamp for
tomorrow.
The mktime() function returns the Unix timestamp for a specified date.
Syntax
mktime(hour,minute,second,month,day,year,is_dst)
To go one day in the future we simply add one to the day argument of mktime():
<?php
$tomorrow = mktime(0,0,0,date("m"),date("d")+1,date("Y"));
echo "Tomorrow is ".date("Y/m/d", $tomorrow);
?>
These two functions are used to create functions, headers, footers, or elements that
can be reused on multiple pages.
Page 33 of
Tutorial PHP by
www.w3schools.com Organized by
Nur Dwi Muryanto, 2009
This can save the developer a considerable amount of time. This means that you can
create a standard header or menu file that you want all your web pages to include.
When the header needs to be updated, you can only update this one include file, or
when you add a new page to your site, you can simply change the menu file
(instead of updating the links on all web pages).
The include() Function
The include() function takes all the text in a specified file and copies it into the file
that uses the include function.
Example 1
Assume that you have a standard header file, called "header.php". To include the
header file in a page, use the include() function, like this:
<html>
<body>
<?php include("header.php"); ?>
<h1>Welcome to my home page</h1>
<p>Some text</p>
</body>
</html>
Example 2
Now, let's assume we have a standard menu file that should be used on all pages
(include files usually have a ".php" extension). Look at the "menu.php" file below:
<html>
<body>
<a href="http://www.w3schools.com/default.php">Home</a> |
<a href="http://www.w3schools.com/about.php">About Us</a> |
<a href="http://www.w3schools.com/contact.php">Contact Us</a>
The three files, "default.php", "about.php", and "contact.php" should all include the
"menu.php" file. Here is the code in "default.php":
Page 34 of
Tutorial PHP by
www.w3schools.com Organized by
Nur Dwi Muryanto, 2009
If you look at the source code of the "default.php" in a browser, it will look
something like this:
<html>
<body>
<a href="default.php">Home</a> |
<a href="about.php">About Us</a> |
<a href="contact.php">Contact Us</a>
<h1>Welcome to my home page</h1>
<p>Some text</p>
</body>
</html>
And, of course, we would have to do the same thing for "about.php" and
"contact.php". By using include files, you simply have to update the text in the
"menu.php" file if you decide to rename or change the order of the links or add
another web page to the site.
The require() Function
The require() function is identical to include(), except that it handles errors
differently.
The include() function generates a warning (but the script will continue execution)
while the require() function generates a fatal error (and the script execution will stop
after the error).
If you include a file with the include() function and an error occurs, you might get
an error message like the one below.
PHP code:
<html>
<body>
<?php
include("wrongFile.php");
echo "Hello World!";
?>
</body>
</html>
Error message:
Warning: include(wrongFile.php) [function.include]:
failed to open stream:
Page 35 of
Tutorial PHP by
www.w3schools.com Organized by
Nur Dwi Muryanto, 2009
No such file or directory in C:\home\website\test.php on line
5
Warning: include() [function.include]:
Failed opening 'wrongFile.php' for inclusion
(include_path='.;C:\php5\pear')
in C:\home\website\test.php on line 5
Hello World!
Notice that the echo statement is still executed! This is because a Warning does not
stop the script execution.
Now, let's run the same example with the require() function.
PHP code:
<html>
<body>
<?php
require("wrongFile.php");
echo "Hello World!";
?>
</body>
</html>
Error message:
Warning: require(wrongFile.php) [function.require]:
failed to open stream:
No such file or directory in C:\home\website\test.php on line
5
Fatal error: require() [function.require]:
Failed opening required 'wrongFile.php'
(include_path='.;C:\php5\pear')
in C:\home\website\test.php on line 5
The echo statement was not executed because the script execution stopped after the
fatal error.
The first parameter of this function contains the name of the file to be opened and
the second parameter specifies in which mode the file should be opened:
<html>
<body>
<?php
$file=fopen("welcome.txt","r");
?>
</body>
</html>
Modes Description
Page 37 of
Tutorial PHP by
www.w3schools.com Organized by
Nur Dwi Muryanto, 2009
error if file already exists
Note: If the fopen() function is unable to open the specified file, it returns 0 (false).
Example
<html>
<body>
<?php
$file=fopen("welcome.txt","r") or exit("Unable to open
file!");
?>
</body>
</html>
Closing a File
The fclose() function is used to close an open file:
<?php
$file = fopen("test.txt","r");
//some code to be executed
fclose($file);
?>
Check End-of-file
The feof() function checks if the "end-of-file" (EOF) has been reached.
The feof() function is useful for looping through data of unknown length.
Note: After a call to this function the file pointer has moved to the next line.
Page 38 of
Tutorial PHP by
www.w3schools.com Organized by
Nur Dwi Muryanto, 2009
Example
The example below reads a file line by line, until the end of file is reached:
<?php
$file = fopen("welcome.txt", "r") or exit("Unable to open
file!");
//Output a line of the file until the end is reached while(!
feof($file))
{
echo fgets($file). "<br />";
}
fclose($file);
?>
Note: After a call to this function the file pointer moves to the next character.
Example
The example below reads a file character by character, until the end of file is
reached:
<?php
$file=fopen("welcome.txt","r") or exit("Unable to open
file!");
while (!feof($file))
{
echo fgetc($file);
}
fclose($file);
?>
Page 39 of
Tutorial PHP by
www.w3schools.com Organized by
Nur Dwi Muryanto, 2009
PHP File Upload
With PHP, it is possible to upload files to the server.
Create an Upload-File Form
To allow users to upload files from a form can be very
files:
<html>
<body>
<form action="upload_file.php" method="post"
enctype="multipart/form-data">
<label for="file">Filename:</label>
<input type="file" name="file" id="file" />
<br />
<input type="submit" name="submit" value="Submit" />
</form>
</body>
</html>
Note: Allowing users to upload files is a big security risk. Only permit
trusted users to perform file uploads.
Create The Upload Script
The "upload_file.php" file contains the code for uploading a file:
Page 40 of
Tutorial PHP by
www.w3schools.com Organized by
Nur Dwi Muryanto, 2009
<?php
if ($_FILES["file"]["error"] > 0)
{
echo "Error: " . $_FILES["file"]["error"] . "<br />";
}
else
{
echo "Upload: " . $_FILES["file"]["name"] . "<br />";
Page 41 of
Tutorial PHP by
www.w3schools.com Organized by
Nur Dwi Muryanto, 2009
echo "Type: " . $_FILES["file"]["type"] . "<br />";
echo "Size: " . ($_FILES["file"]["size"] / 1024) . " Kb<br
/>";
echo "Stored in: " . $_FILES["file"]["tmp_name"];
}
?>
By using the global PHP $_FILES array you can upload files from a client
computer to the remote server.
The first parameter is the form's input name and the second index can be
either "name", "type", "size", "tmp_name" or "error". Like this:
$_FILES["file"]["name"] - the name of the uploaded file
$_FILES["file"]["type"] - the type of the uploaded file
$_FILES["file"]["size"] - the size in bytes of the uploaded file
$_FILES["file"]["tmp_name"] - the name of the temporary copy of
the file stored on the server
$_FILES["file"]["error"] - the error code resulting from the file
upload
This is a very simple way of uploading files. For security reasons, you
should add restrictions on what the user is allowed to upload.
Restrictions on Upload
In this script we add some restrictions to the file upload. The user may only
upload .gif or .jpeg files and the file size must be under 20 kb:
<?php
if ((($_FILES["file"]["type"] == "image/gif")
|| ($_FILES["file"]["type"] == "image/jpeg")
|| ($_FILES["file"]["type"] == "image/pjpeg"))
&& ($_FILES["file"]["size"] < 20000))
{
if ($_FILES["file"]["error"] > 0)
{
echo "Error: " . $_FILES["file"]["error"] . "<br />";
}
else
{
echo "Upload: " . $_FILES["file"]["name"] . "<br />";
echo "Type: " . $_FILES["file"]["type"] . "<br />";
echo "Size: " . ($_FILES["file"]["size"] / 1024) . " Kb<br
/>";
echo "Stored in: " . $_FILES["file"]["tmp_name"];
Page 42 of
Tutorial PHP by
www.w3schools.com Organized by
Nur Dwi Muryanto, 2009
}
}
else
{
echo "Invalid file";
}
?>
Note: For IE to recognize jpg files the type must be pjpeg, for FireFox it
must be jpeg.
Saving the Uploaded File
The examples above create a temporary copy of the uploaded files in the
PHP temp folder on the server.
The temporary copied files disappears when the script ends. To store the
uploaded file we need to copy it to a different location:
<?php
if ((($_FILES["file"]["type"] == "image/gif")
|| ($_FILES["file"]["type"] == "image/jpeg")
|| ($_FILES["file"]["type"] == "image/pjpeg"))
&& ($_FILES["file"]["size"] < 20000))
{
if ($_FILES["file"]["error"] > 0)
{
echo "Return Code: " . $_FILES["file"]["error"] . "<br
/>";
}
else
{
echo "Upload: " . $_FILES["file"]["name"] . "<br />";
echo "Type: " . $_FILES["file"]["type"] . "<br />";
echo "Size: " . ($_FILES["file"]["size"] / 1024) . " Kb<br
/>";
echo "Temp file: " . $_FILES["file"]["tmp_name"] . "<br
/>";
if (file_exists("upload/" . $_FILES["file"]["name"]))
{
echo $_FILES["file"]["name"] . " already exists. ";
}
else
{
move_uploaded_file($_FILES["file"]["tmp_name"],
"upload/" . $_FILES["file"]["name"]);
echo "Stored in: " . "upload/" .
Page 43 of
Tutorial PHP by
www.w3schools.com Organized by
Nur Dwi Muryanto, 2009
$_FILES["file"]["name"];
}
}
}
else
{
echo "Invalid file";
}
?>
The script above checks if the file already exists, if it does not, it copies the
file to the specified folder.
Note: This example saves the file to a new folder called "upload"
PHP Cookies
A cookie is often used to identify a user.
What is a Cookie?
A cookie is often used to identify a user. A cookie is a small file that the
server embeds on the user's computer. Each time the same computer requests
a page with a browser, it will send the cookie too. With PHP, you can both
create and retrieve cookie values.
How to Create a Cookie?
The setcookie() function is used to set a cookie.
Note: The setcookie() function must appear BEFORE the <html> tag.
Syntax
setcookie(name, value, expire, path, domain);
Page 44 of
Tutorial PHP by
www.w3schools.com Organized by
Nur Dwi Muryanto, 2009
Example 1
In the example below, we will create a cookie named "user" and assign the
value "Alex Porter" to it. We also specify that the cookie should expire after
one hour:
<?php
setcookie("user", "Alex Porter", time()+3600);
?>
<html>
.....
Example 2
You can also set the expiration time of the cookie in another way. It may be
easier than using seconds.
<?php
$expire=time()+60*60*24*30;
setcookie("user", "Alex Porter", $expire);
?>
<html>
.....
In the example above the expiration time is set to a month (60 sec * 60 min *
24 hours * 30 days).
In the example below, we retrieve the value of the cookie named "user" and
display it on a page:
<?php
// Print a cookie
echo $_COOKIE["user"];
// A way to view all cookies
Page 45 of
Tutorial PHP by
www.w3schools.com Organized by
Nur Dwi Muryanto, 2009
print_r($_COOKIE);
?>
In the following example we use the isset() function to find out if a cookie
has been set:
<html>
<body>
<?php
if (isset($_COOKIE["user"]))
echo "Welcome " . $_COOKIE["user"] . "!<br />";
else
echo "Welcome guest!<br />";
?>
</body>
</html>
Delete example:
<?php
// set the expiration date to one hour ago
setcookie("user", "", time()-3600);
?>
The form below passes the user input to "welcome.php" when the user clicks
on the "Submit" button:
<html>
<body>
<form action="welcome.php" method="post">
Name: <input type="text" name="name" />
Age: <input type="text" name="age" />
Page 46 of
Tutorial PHP by
www.w3schools.com Organized by
Nur Dwi Muryanto, 2009
<input type="submit" />
</form>
</body>
</html>
<html>
<body>
Welcome <?php echo $_POST["name"]; ?>.<br />
You are <?php echo $_POST["age"]; ?> years old.
</body>
</html>
PHP Sessions
A PHP session variable is used to store information about, or change settings
for a user session. Session variables hold information about one single user,
and are available to all pages in one application.
PHP Session Variables
When you are working with an application, you open it, do some changes
and then you close it. This is much like a Session. The computer knows who
you are. It knows when you start the application and when you end. But on
the internet there is one problem: the web server does not know who you are
and what you do because the HTTP address doesn't maintain state.
Page 47 of
Tutorial PHP by
www.w3schools.com Organized by
Nur Dwi Muryanto, 2009
Before you can store user information in your PHP session, you must first
start up the session.
Note: The session_start() function must appear BEFORE the <html> tag:
The code above will register the user's session with the server, allow you to
start saving user information, and assign a UID for that user's session.
Storing a Session Variable
The correct way to store and retrieve session variables is to use the PHP
$_SESSION variable:
<?php
session_start();
// store session data
$_SESSION['views']=1;
?>
<html>
<body>
<?php
//retrieve session data
echo "Pageviews=". $_SESSION['views'];
?>
</body>
</html>
Output:
Pageviews=1
<?php
Page 48 of
Tutorial PHP by
www.w3schools.com Organized by
Nur Dwi Muryanto, 2009
session_start();
if(isset($_SESSION['views']))
$_SESSION['views']=$_SESSION['views']+1;
else
$_SESSION['views']=1;
echo "Views=". $_SESSION['views'];
?>
Destroying a Session
If you wish to delete some session data, you can use the unset() or the
session_destroy() function.
<?php
unset($_SESSION['views']);
?>
You can also completely destroy the session by calling the session_destroy()
function:
<?php
session_destroy();
?>
Note: session_destroy() will reset your session and you will lose all your
stored session data.
Syntax
Page 49 of
Tutorial PHP by
www.w3schools.com Organized by
Nur Dwi Muryanto, 2009
mail(to,subject,message,headers,parameters)
Parameter Description
to Required. Specifies the receiver / receivers of the email
subject Required. Specifies the subject of the email. Note: This
parameter cannot contain any newline characters
message Required. Defines the message to be sent. Each line should be
separated with a LF (\n). Lines should not exceed 70
characters
headers Optional. Specifies additional headers, like From, Cc, and
Bcc. The additional headers should be separated with a CRLF
(\r\n)
parameters Optional. Specifies an additional parameter to the sendmail
program
Note: For the mail functions to be available, PHP requires an installed and
working email system. The program to be used is defined by the
configuration settings in the php.ini file. Read more in our PHP Mail
reference.
In the example below we first declare the variables ($to, $subject, $message,
$from, $headers), then we use the variables in the mail() function to send
an e-mail:
<?php
$to = "someone@example.com";
$subject = "Test mail";
$message = "Hello! This is a simple email message.";
$from = "someonelse@example.com";
$headers = "From: $from"; mail($to,
$subject,$message,$headers); echo
"Mail Sent.";
?>
Page 50 of
Tutorial PHP by
www.w3schools.com Organized by
Nur Dwi Muryanto, 2009
PHP Mail Form
With PHP, you can create a feedback-form on your website. The example
below sends a text message to a specified e-mail address:
<html>
<body>
<?php
if (isset($_REQUEST['email']))
//if "email" is filled out, send email
{
//send email
$email = $_REQUEST['email'] ;
$subject = $_REQUEST['subject'] ;
$message = $_REQUEST['message'] ;
mail( "someone@example.com", "Subject: $subject",
$message, "From: $email" );
echo "Thank you for using our mail form";
}
else
//if "email" is not filled out, display the form
{
echo "<form method='post' action='mailform.php'>
Email: <input name='email' type='text' /><br />
Subject: <input name='subject' type='text' /><br />
Message:<br />
<textarea name='message' rows='15' cols='40'>
</textarea><br />
<input type='submit' />
</form>";
}
?>
</body>
</html>
Note: This is the simplest way to send e-mail, but it is not secure. In the next
chapter of this tutorial you can read more about vulnerabilities in e-mail
scripts, and how to validate user input to make it more secure.
Page 51 of
Tutorial PHP by
www.w3schools.com Organized by
Nur Dwi Muryanto, 2009
PHP Mail Reference
For more information about the PHP mail() function, visit our PHP Mail
Reference.
Page 52 of
Tutorial PHP by
www.w3schools.com Organized by
Nur Dwi Muryanto, 2009
The problem with the code above is that unauthorized users can insert data
into the mail headers via the input form.
What happens if the user adds the following text to the email input field in
the form?
someone@example.com%0ACc:person2@example.com
%0ABcc:person3@example.com,person3@example.com,
anotherperson4@example.com,person5@example.com
%0ABTo:person6@example.com
The mail() function puts the text above into the mail headers as usual, and
now the header has an extra Cc:, Bcc:, and To: field. When the user clicks the
submit button, the e-mail will be sent to all of the addresses above!
PHP Stopping E-mail Injections
The best way to stop e-mail injections is to validate the input.
The code below is the same as in the previous chapter, but now we have
added an input validator that checks the email field in the form:
<html>
<body>
<?php
function spamcheck($field)
{
//filter_var() sanitizes the e-mail
//address using FILTER_SANITIZE_EMAIL
$field=filter_var($field, FILTER_SANITIZE_EMAIL);
Page 53 of
Tutorial PHP by
www.w3schools.com Organized by
Nur Dwi Muryanto, 2009
if ($mailcheck==FALSE)
{
echo "Invalid input";
}
else
{//send email
$email = $_REQUEST['email'] ;
$subject = $_REQUEST['subject'] ;
$message = $_REQUEST['message'] ;
mail("someone@example.com", "Subject: $subject",
$message, "From: $email" );
echo "Thank you for using our mail form";
}
}
else
{//if "email" is not filled out, display the form
echo "<form method='post' action='mailform.php'>
Email: <input name='email' type='text' /><br />
Subject: <input name='subject' type='text' /><br />
Message:<br />
<textarea name='message' rows='15' cols='40'>
</textarea><br />
<input type='submit' />
</form>";
}
?>
</body>
</html>
You can read more about filters in our PHP Filter chapter.
Page 54 of
Tutorial PHP by
www.w3schools.com Organized by
Nur Dwi Muryanto, 2009
PHP Error Handling
When creating scripts and web applications, error handling is an important
part. If your code lacks error checking code, your program may look very
unprofessional and you may be open to security risks.
This tutorial contains some of the most common error checking methods in
PHP.
If the file does not exist you might get an error like this:
Warning: fopen(welcome.txt) [function.fopen]: failed to open
stream:
No such file or directory in C:\webfolder\test.php on line 2
To avoid that the user gets an error message like the one above, we test if the
file exist before we try to access it:
<?php if(!
file_exists("welcome.txt"))
{
die("File not found");
}
else
{
$file=fopen("welcome.txt","r");
}
?>
Now if the file does not exist you get an error like this:
Page 55 of
Tutorial PHP by
www.w3schools.com Organized by
Nur Dwi Muryanto, 2009
File not found
The code above is more efficient than the earlier code, because it uses a
simple error handling mechanism to stop the script after the error.
However, simply stopping the script is not always the right way to go. Let's
take a look at alternative PHP functions for handling errors.
Creating a Custom Error Handler
Creating a custom error handler is quite simple. We simply create a special
function that can be called when an error occurs in PHP.
Syntax
error_function(error_level,error_message,
error_file,error_line,error_context)
Parameter Description
error_level Required. Specifies the error report level for the user-defined
error. Must be a value number. See table below for possible
error report levels
error_message Required. Specifies the error message for the user-defined
error
error_file Optional. Specifies the filename in which the error occurred
error_line Optional. Specifies the line number in which the error
occurred
error_context Optional. Specifies an array containing every variable, and
their values, in use when the error occurred
Page 56 of
Tutorial PHP by
www.w3schools.com Organized by
Nur Dwi Muryanto, 2009
Value Constant Description
2 E_WARNING Non-fatal run-time errors. Execution of
the script is not halted
8 E_NOTICE Run-time notices. The script found
something that might be an error, but
could also happen when running a
script normally
256 E_USER_ERROR Fatal user-generated error. This is like
an E_ERROR set by the programmer
using the PHP function trigger_error()
512 E_USER_WARNING Non-fatal user-generated warning. This
is like an E_WARNING set by the
programmer using the PHP function
trigger_error()
1024 E_USER_NOTICE User-generated notice. This is like an
E_NOTICE set by the programmer
using the PHP function trigger_error()
4096 E_RECOVERABLE_ERROR Catchable fatal error. This is like an
E_ERROR but can be caught by a user
defined handle (see also
set_error_handler())
8191 E_ALL All errors and warnings, except level
E_STRICT (E_STRICT will be part of
E_ALL as of PHP 6.0)
Now that we have created an error handling function we need to decide when
it should be triggered.
Page 57 of
Tutorial PHP by
www.w3schools.com Organized by
Nur Dwi Muryanto, 2009
Set Error Handler
The default error handler for PHP is the built in error handler. We are going
to make the function above the default error handler for the duration of the
script.
It is possible to change the error handler to apply for only some errors, that
way the script can handle different errors in different ways. However, in this
example we are going to use our custom error handler for all errors:
set_error_handler("customError");
Example
Testing the error handler by trying to output variable that does not exist:
<?php
//error handler function
function customError($errno, $errstr)
{
echo "<b>Error:</b> [$errno] $errstr";
}
//set error handler
set_error_handler("customError");
//trigger error
echo($test);
?>
Trigger an Error
In a script where users can input data it is useful to trigger errors when an
illegal input occurs. In PHP, this is done by the trigger_error() function.
Example
Page 58 of
Tutorial PHP by
www.w3schools.com Organized by
Nur Dwi Muryanto, 2009
In this example an error occurs if the "test" variable is bigger than "1":
<?php
$test=2;
if ($test>1)
{
trigger_error("Value must be 1 or below");
}
?>
Example
In this example an E_USER_WARNING occurs if the "test" variable is
bigger than "1". If an E_USER_WARNING occurs we will use our custom
error handler and end the script:
<?php
//error handler function
function customError($errno, $errstr)
{
echo "<b>Error:</b> [$errno] $errstr<br />";
echo "Ending Script";
die();
}
//set error handler
set_error_handler("customError",E_USER_WARNING);
//trigger error
Page 59 of
Tutorial PHP by
www.w3schools.com Organized by
Nur Dwi Muryanto, 2009
$test=2;
if ($test>1)
{
trigger_error("Value must be 1 or below",E_USER_WARNING);
}
?>
Now that we have learned to create our own errors and how to trigger them,
lets take a look at error logging.
Error Logging
By default, PHP sends an error log to the servers logging system or a file,
depending on how the error_log configuration is set in the php.ini file. By
using the error_log() function you can send error logs to a specified file or a
remote destination.
<?php
//error handler function
function customError($errno, $errstr)
{
echo "<b>Error:</b> [$errno] $errstr<br />";
echo "Webmaster has been notified";
error_log("Error: [$errno] $errstr",1,
"someone@example.com","From: webmaster@example.com");
}
//set error handler
set_error_handler("customError",E_USER_WARNING);
//trigger error
$test=2;
if ($test>1)
Page 60 of
Tutorial PHP by
www.w3schools.com Organized by
Nur Dwi Muryanto, 2009
{
trigger_error("Value must be 1 or below",E_USER_WARNING);
}
?>
And the mail received from the code above looks like this:
Error: [512] Value must be 1 or below
This should not be used with all errors. Regular errors should be logged on
the server using the default PHP logging system.
Exception handling is used to change the normal flow of the code execution
if a specified error (exceptional) condition occurs. This condition is called
an exception.
Page 61 of
Tutorial PHP by
www.w3schools.com Organized by
Nur Dwi Muryanto, 2009
Re-throwing an exception
Setting a top level exception handler
Note: Exceptions should only be used with error conditions, and should not
be used to jump to another place in the code at a specified point.
Basic Use of Exceptions
When an exception is thrown, the code following it will not be executed, and
PHP will try to find the matching "catch" block.
//trigger exception
checkNum(2);
?>
Page 62 of
Tutorial PHP by
www.w3schools.com Organized by
Nur Dwi Muryanto, 2009
Proper exception code should include:
1. Try - A function using an exception should be in a "try" block. If
the exception does not trigger, the code will continue as normal.
However if the exception triggers, an exception is "thrown"
2. Throw - This is how you trigger an exception. Each "throw"
must have at least one "catch"
3. Catch - A "catch" block retrieves an exception and creates an
object containing the exception information
//catch exception
catch(Exception $e)
{
echo 'Message: ' .$e->getMessage();
}
?>
Example explained:
The code above throws an exception and catches it:
1. The checkNum() function is created. It checks if a number is
greater than 1. If it is, an exception is thrown
Page 63 of
Tutorial PHP by
www.w3schools.com Organized by
Nur Dwi Muryanto, 2009
2. The checkNum() function is called in a "try" block
3. The exception within the checkNum() function is thrown
4. The "catch" block retrives the exception and creates an object ($e)
containing the exception information
5. The error message from the exception is echoed by calling $e-
>getMessage() from the exception object
However, one way to get around the "every throw must have a catch" rule is
to set a top level exception handler to handle errors that slip through.
Creating a Custom Exception Class
Creating a custom exception handler is quite simple. We simply create a
special class with functions that can be called when an exception occurs in
PHP. The class must be an extension of the exception class.
The custom exception class inherits the properties from PHP's exception
class and you can add custom functions to it.
Page 64 of
Tutorial PHP by
www.w3schools.com Organized by
Nur Dwi Muryanto, 2009
echo $e->errorMessage();
}
?>
The new class is a copy of the old exception class with an addition of the
errorMessage() function. Since it is a copy of the old class, and it inherits the
properties and methods from the old class, we can use the exception class
methods like getLine() and getFile() and getMessage().
Example explained:
The code above throws an exception and catches it with a custom exception
class:
1. The customException() class is created as an extension of the old
exception class. This way it inherits all methods and properties
from the old exception class
2. The errorMessage() function is created. This function returns an
error message if an e-mail address is invalid
3. The $email variable is set to a string that is not a valid e-mail address
4. The "try" block is executed and an exception is thrown since the e-
mail address is invalid
5. The "catch" block catches the exception and displays the error
message
Multiple Exceptions
It is possible for a script to use multiple exceptions to check for multiple
conditions.
<?php
class customException extends Exception
{
public function errorMessage()
{
//error message
$errorMsg = 'Error on line '.$this->getLine().' in '.$this-
>getFile()
.': <b>'.$this->getMessage().'</b> is not a valid E-Mail
address';
Page 65 of
Tutorial PHP by
www.w3schools.com Organized by
Nur Dwi Muryanto, 2009
return $errorMsg;
}
}
$email = "someone@example.com";
try
{
//check if
if(filter_var($email, FILTER_VALIDATE_EMAIL) === FALSE)
{
//throw exception if email is not valid
throw new customException($email);
}
//check for "example" in mail address
if(strpos($email, "example") !== FALSE)
{
throw new Exception("$email is an example e-mail");
}
}
Example explained:
The code above tests two conditions and throws an exception if any of the
conditions are not met:
1. The customException() class is created as an extension of the old
exception class. This way it inherits all methods and properties
from the old exception class
2. The errorMessage() function is created. This function returns an
error message if an e-mail address is invalid
3. The $email variable is set to a string that is a valid e-mail address,
but contains the string "example"
4. The "try" block is executed and an exception is not thrown on
the first condition
5. The second condition triggers an exception since the e-mail contains
the string "example"
Page 66 of
Tutorial PHP by
www.w3schools.com Organized by
Nur Dwi Muryanto, 2009
6. The "catch" block catches the exception and displays the correct error
message
If there was no customException catch, only the base exception catch, the
exception would be handled there
Re-throwing Exceptions
Sometimes, when an exception is thrown, you may wish to handle it
differently than the standard way. It is possible to throw an exception a
second time within a "catch" block.
A script should hide system errors from users. System errors may be
important for the coder, but is of no interest to the user. To make things
easier for the user you can re-throw the exception with a user friendly
message:
<?php
class customException extends Exception
{
public function errorMessage()
{
//error message
$errorMsg = $this->getMessage().' is not a valid E-Mail
address.';
return $errorMsg;
}
}
$email = "someone@example.com";
try
{
try
{
//check for "example" in mail address
if(strpos($email, "example") !== FALSE)
{
//throw exception if email is not valid
throw new Exception($email);
}
}
catch(Exception $e)
{
//re-throw exception
throw new customException($email);
}
}
catch (customException $e)
Page 67 of
Tutorial PHP by
www.w3schools.com Organized by
Nur Dwi Muryanto, 2009
{
//display custom message
echo $e->errorMessage();
}
?>
Example explained:
The code above tests if the email-address contains the string "example" in it,
if it does, the exception is re-thrown:
1. The customException() class is created as an extension of the old
exception class. This way it inherits all methods and properties
from the old exception class
2. The errorMessage() function is created. This function returns an
error message if an e-mail address is invalid
3. The $email variable is set to a string that is a valid e-mail address,
but contains the string "example"
4. The "try" block contains another "try" block to make it possible to re-
throw the exception
5. The exception is triggered since the e-mail contains the string
"example"
6. The "catch" block catches the exception and re-throws a
"customException"
7. The "customException" is caught and displays an error message
If the exception is not caught in its current "try" block, it will search for a
catch block on "higher levels".
Set a Top Level Exception Handler
The set_exception_handler() function sets a user-defined function to handle
all uncaught exceptions.
<?php
function myException($exception)
{
echo "<b>Exception:</b> " , $exception->getMessage();
}
set_exception_handler('myException');
throw new Exception('Uncaught Exception occurred');
?>
The output of the code above should be something like this:
Page 68 of
Tutorial PHP by
www.w3schools.com Organized by
Nur Dwi Muryanto, 2009
Exception: Uncaught Exception occurred
In the code above there was no "catch" block. Instead, the top level
exception handler triggered. This function should be used to catch uncaught
exceptions.
Rules for exceptions
Code may be surrounded in a try block, to help catch potential
exceptions
Each try block or "throw" must have at least one corresponding catch
block
Multiple catch blocks can be used to catch different classes
of exceptions
Exceptions can be thrown (or re-thrown) in a catch block within a try
block
PHP Filter
PHP filters are used to validate and filter data coming from insecure sources,
like user input.
What is a PHP Filter?
A PHP filter is used to validate and filter data coming from insecure sources.
To test, validate and filter user input or custom data is an important part of
any web application.
The PHP filter extension is designed to make data filtering easier and
quicker.
Why use a Filter?
Almost all web applications depend on external input. Usually this comes
from a user or another application (like a web service). By using filters you
can be sure your application gets the correct input type.
Page 69 of
Tutorial PHP by
www.w3schools.com Organized by
Nur Dwi Muryanto, 2009
You should always filter all external data!
If we try with a variable that is not an integer (like "123abc"), the output will
be: "Integer is not valid".
For a complete list of functions and filters, visit our PHP Filter Reference.
Page 70 of
Tutorial PHP by
www.w3schools.com Organized by
Nur Dwi Muryanto, 2009
Validating and Sanitizing
There are two kinds of filters:
Validating filters:
Are used to validate user input
Strict format rules (like URL or E-Mail validating)
Returns the expected type on success or FALSE on failure
Sanitizing filters:
Are used to allow or disallow specified characters in a string
No data format rules
Always return the string
Options and Flags
Options and flags are used to add additional filtering options to the specified
filters.
In the example below, we validate an integer using the filter_var() and the
"min_range" and "max_range" options:
<?php
$var=300;
$int_options = array(
"options"=>array
(
"min_range"=>0,
"max_range"=>256
)
);
if(!filter_var($var, FILTER_VALIDATE_INT, $int_options))
{
echo("Integer is not valid");
}
else
{
echo("Integer is valid");
}
?>
Page 71 of
Tutorial PHP by
www.w3schools.com Organized by
Nur Dwi Muryanto, 2009
Like the code above, options must be put in an associative array with the
name "options". If a flag is used it does not need to be in an array.
Since the integer is "300" it is not in the specified range, and the output of
the code above will be: "Integer is not valid".
For a complete list of functions and filters, visit our PHP Filter Reference.
Check each filter to see what options and flags are available.
Validate Input
Let's try validating input from a form.
The first thing we need to do is to confirm that the input data we are looking
for exists.
In the example below, the input variable "email" is sent to the PHP page:
<?php
if(!filter_has_var(INPUT_GET, "email"))
{
echo("Input type does not exist");
}
else
{
if (!filter_input(INPUT_GET, "email", FILTER_VALIDATE_EMAIL))
{
echo "E-Mail is not valid";
}
else
{
echo "E-Mail is valid";
}
}
?>
Example Explained
The example above has an input (email) sent to it using the "GET" method:
1. Check if an "email" input variable of the "GET" type exist
2. If the input variable exists, check if it is a valid e-mail address
Sanitize Input
Page 72 of
Tutorial PHP by
www.w3schools.com Organized by
Nur Dwi Muryanto, 2009
Let's try cleaning up an URL sent from a form.
First we confirm that the input data we are looking for exists.
Then we sanitize the input data using the filter_input() function.
In the example below, the input variable "url" is sent to the PHP page:
<?php
if(!filter_has_var(INPUT_POST, "url"))
{
echo("Input type does not exist");
}
else
{
$url = filter_input(INPUT_POST,
"url", FILTER_SANITIZE_URL);
}
?>
Example Explained
The example above has an input (url) sent to it using the "POST" method:
1. Check if the "url" input of the "POST" type exists
2. If the input variable exists, sanitize (take away invalid characters)
and store it in the $url variable
http://www.W3Schools.com/
<?php
$filters = array
Page 73 of
Tutorial PHP by
www.w3schools.com Organized by
Nur Dwi Muryanto, 2009
(
"name" => array
(
"filter"=>FILTER_SANITIZE_STRING
),
"age" => array
(
"filter"=>FILTER_VALIDATE_INT,
"options"=>array
(
"min_range"=>1,
"max_range"=>120
)
),
"email"=> FILTER_VALIDATE_EMAIL,
);
$result = filter_input_array(INPUT_GET, $filters);
if (!$result["age"])
{
echo("Age must be a number between 1 and 120.<br />");
}
elseif(!$result["email"])
{
echo("E-Mail is not valid.<br />");
}
else
{
echo("User input is valid");
}
?>
Example Explained
The example above has three inputs (name, age and email) sent to it using
the "GET" method:
1. Set an array containing the name of input variables and the filters
used on the specified input variables
2. Call the filter_input_array() function with the GET input
variables and the array we just set
3. Check the "age" and "email" variables in the $result variable for
invalid inputs. (If any of the input variables are invalid, that
input variable will be FALSE after the filter_input_array()
function)
Page 74 of
Tutorial PHP by
www.w3schools.com Organized by
Nur Dwi Muryanto, 2009
If the parameter is a single filter ID all values in the input array are filtered
by the specified filter.
You can create your own user defined function or use an existing PHP
function
The function you wish to use to filter is specified the same way as an option
is specified. In an associative array with the name "options"
In the example below, we use a user created function to convert all "_" to
whitespaces:
<?php
function convertSpace($string)
{
return str_replace("_", " ", $string);
}
$string = "Peter_is_a_great_guy!";
The result from the code above should look like this:
Peter is a great guy!
Example Explained
Page 75 of
Tutorial PHP by
www.w3schools.com Organized by
Nur Dwi Muryanto, 2009
The example above converts all "_" to whitespaces:
1. Create a function to replace "_" to whitespaces
2. Call the filter_var() function with the FILTER_CALLBACK
filter and an array containing our function
The table above contains three records (one for each person) and four
columns (LastName, FirstName, Address, and City).
Queries
A query is a question or a request.
Page 76 of
Tutorial PHP by
www.w3schools.com Organized by
Nur Dwi Muryanto, 2009
With MySQL, we can query a database for specific information and have a
recordset returned.
LastName
Hansen
Svendson
Pettersen
Download MySQL Database
If you don't have a PHP server with a MySQL Database, you can download
MySQL for free here: http://www.mysql.com/downloads/index.html
Facts About MySQL Database
One great thing about MySQL is that it can be scaled down to support
embedded database applications. Perhaps it is because of this reputation that
many people believe that MySQL can only handle small to medium-sized
systems.
The truth is that MySQL is the de-facto standard database for web sites that
support huge volumes of both data and end users (like Friendster, Yahoo,
Google).
Page 77 of
Tutorial PHP by
www.w3schools.com Organized by
Nur Dwi Muryanto, 2009
Create a Connection to a MySQL Database
Before you can access data in a database, you must create a connection to the
database.
Syntax
mysql_connect(servername,username,password);
Paramete Description
r
servernam Optional. Specifies the server to connect to.
e Default value is "localhost:3306"
Note: There are more available parameters, but the ones listed above are the
most important. Visit our full PHP MySQL Reference for more details.
Example
<?php
$con = mysql_connect("localhost","peter","abc123");
if (!$con)
{
die('Could not connect: ' . mysql_error());
}
// some code
?>
Page 78 of
Tutorial PHP by
www.w3schools.com Organized by
Nur Dwi Muryanto, 2009
Closing a Connection
The connection will be closed automatically when the script ends. To close
the connection before, use the mysql_close() function:
<?php
$con = mysql_connect("localhost","peter","abc123");
if (!$con)
{
die('Could not connect: ' . mysql_error());
}
// some code
mysql_close($con);
?>
Syntax
CREATE DATABASE database_name
To get PHP to execute the statement above we must use the mysql_query()
function. This function is used to send a query or command to a MySQL
connection.
Page 79 of
Tutorial PHP by
www.w3schools.com Organized by
Nur Dwi Muryanto, 2009
Example
<?php
$con = mysql_connect("localhost","peter","abc123");
if (!$con)
{
die('Could not connect: ' . mysql_error());
}
if (mysql_query("CREATE DATABASE my_db",$con))
{
echo "Database created";
}
else
{
echo "Error creating database: " . mysql_error();
}
mysql_close($con);
?>
Create a Table
The CREATE TABLE statement is used to create a table in MySQL.
Syntax
CREATE TABLE table_name
(
column_name1 data_type,
column_name2 data_type,
column_name3 data_type,
....
)
Example
The following example creates a table named "Persons", with three columns.
The column names will be "FirstName", "LastName" and "Age":
Page 80 of
Tutorial PHP by
www.w3schools.com Organized by
Nur Dwi Muryanto, 2009
<?php
$con = mysql_connect("localhost","peter","abc123");
if (!$con)
{
die('Could not connect: ' . mysql_error());
}
// Create database
if (mysql_query("CREATE DATABASE my_db",$con))
{
echo "Database created";
}
else
{
echo "Error creating database: " . mysql_error();
}
// Create table
mysql_select_db("my_db", $con);
$sql = "CREATE TABLE Persons
(
FirstName varchar(15),
LastName varchar(15),
Age int
)";
// Execute query
mysql_query($sql,$con);
mysql_close($con);
?>
Note: When you create a database field of type varchar, you must specify
the maximum length of the field, e.g. varchar(15).
The data type specifies what type of data the column can hold. For a
complete reference of all the data types available in MySQL, go to our
complete Data Types reference.
A primary key is used to uniquely identify the rows in a table. Each primary
key value must be unique within the table. Furthermore, the primary key
Page 81 of
Tutorial PHP by
www.w3schools.com Organized by
Nur Dwi Muryanto, 2009
field cannot be null because the database engine requires a value to locate
the record.
The following example sets the personID field as the primary key field. The
primary key field is often an ID number, and is often used with the
AUTO_INCREMENT setting. AUTO_INCREMENT automatically
increases the value of the field by 1 each time a new record is added. To
ensure that the primary key field cannot be null, we must add the NOT
NULL setting to the field.
Example
$sql = "CREATE TABLE Persons
(
personID int NOT NULL AUTO_INCREMENT,
PRIMARY KEY(personID),
FirstName varchar(15),
LastName varchar(15),
Age int
)";
mysql_query($sql,$con);
Syntax
The first form doesn't specify the column names where the data will be
inserted, only their values:
Page 82 of
Tutorial PHP by
www.w3schools.com Organized by
Nur Dwi Muryanto, 2009
The second form specifies both the column names and the values to be
inserted:
INSERT INTO table_name (column1, column2, column3,...)
VALUES (value1, value2, value3,...)
To get PHP to execute the statements above we must use the mysql_query()
function. This function is used to send a query or command to a MySQL
connection.
Example
<?php
$con = mysql_connect("localhost","peter","abc123");
if (!$con)
{
die('Could not connect: ' . mysql_error());
}
mysql_select_db("my_db", $con);
mysql_query("INSERT INTO Persons (FirstName, LastName, Age)
VALUES ('Peter', 'Griffin', '35')");
mysql_query("INSERT INTO Persons (FirstName, LastName, Age)
VALUES ('Glenn', 'Quagmire', '33')");
mysql_close($con);
?>
<html>
<body>
<form action="insert.php" method="post">
Firstname: <input type="text" name="firstname" />
Page 83 of
Tutorial PHP by
www.w3schools.com Organized by
Nur Dwi Muryanto, 2009
Lastname: <input type="text" name="lastname" />
Age: <input type="text" name="age" />
<input type="submit" />
</form>
</body>
</html>
When a user clicks the submit button in the HTML form in the example
above, the form data is sent to "insert.php".
The "insert.php" file connects to a database, and retrieves the values from the
form with the PHP $_POST variables.
Then, the mysql_query() function executes the INSERT INTO statement, and
a new record will be added to the "Persons" table.
<?php
$con = mysql_connect("localhost","peter","abc123");
if (!$con)
{
die('Could not connect: ' . mysql_error());
}
mysql_select_db("my_db", $con);
$sql="INSERT INTO Persons (FirstName, LastName, Age)
VALUES
('$_POST[firstname]','$_POST[lastname]','$_POST[age]')";
if (!mysql_query($sql,$con))
{
die('Error: ' . mysql_error());
}
echo "1 record added";
mysql_close($con)
?>
Page 84 of
Tutorial PHP by
www.w3schools.com Organized by
Nur Dwi Muryanto, 2009
The SELECT statement is used to select data from a database.
Syntax
SELECT column_name(s)
FROM table_name
To get PHP to execute the statement above we must use the mysql_query()
function. This function is used to send a query or command to a MySQL
connection.
Example
The following example selects all the data stored in the "Persons" table (The
* character selects all the data in the table):
<?php
$con = mysql_connect("localhost","peter","abc123");
if (!$con)
{
die('Could not connect: ' . mysql_error());
}
mysql_select_db("my_db", $con);
$result = mysql_query("SELECT * FROM Persons");
while($row = mysql_fetch_array($result))
{
echo $row['FirstName'] . " " . $row['LastName'];
echo "<br />";
}
mysql_close($con);
?>
The example above stores the data returned by the mysql_query() function in
the $result variable.
Next, we use the mysql_fetch_array() function to return the first row from
the recordset as an array. Each call to mysql_fetch_array() returns the next
row in the recordset. The while loop loops through all the records in the
recordset. To print the value of each row, we use the PHP $row variable
($row['FirstName'] and $row['LastName']).
Page 85 of
Tutorial PHP by
www.w3schools.com Organized by
Nur Dwi Muryanto, 2009
Peter Griffin
Glenn Quagmire
<?php
$con = mysql_connect("localhost","peter","abc123");
if (!$con)
{
die('Could not connect: ' . mysql_error());
}
mysql_select_db("my_db", $con);
Quagm
Glenn
ir e
Peter Griffin
Page 86 of
Tutorial PHP by
www.w3schools.com Organized by
Nur Dwi Muryanto, 2009
Syntax
SELECT column_name(s)
FROM table_name
WHERE column_name operator value
To get PHP to execute the statement above we must use the mysql_query()
function. This function is used to send a query or command to a MySQL
connection.
Example
The following example selects all rows from the "Persons" table where
"FirstName='Peter':
<?php
$con = mysql_connect("localhost","peter","abc123");
if (!$con)
{
die('Could not connect: ' . mysql_error());
}
mysql_select_db("my_db", $con);
while($row = mysql_fetch_array($result))
{
echo $row['FirstName'] . " " . $row['LastName'];
echo "<br />";
Page 87 of
Tutorial PHP by
www.w3schools.com Organized by
Nur Dwi Muryanto, 2009
}
?>
Peter Griffin
If you want to sort the records in a descending order, you can use the DESC
keyword.
Syntax
SELECT column_name(s)
FROM table_name
ORDER BY column_name(s) ASC|DESC
Example
The following example selects all the data stored in the "Persons" table, and
sorts the result by the "Age" column:
<?php
$con = mysql_connect("localhost","peter","abc123");
if (!$con)
{
die('Could not connect: ' . mysql_error());
}
Page 88 of
Tutorial PHP by
www.w3schools.com Organized by
Nur Dwi Muryanto, 2009
mysql_select_db("my_db", $con);
while($row = mysql_fetch_array($result))
{
echo $row['FirstName'];
echo " " . $row['LastName'];
echo " " . $row['Age'];
echo "<br />";
}
mysql_close($con);
?>
SELECT column_name(s)
FROM table_name
ORDER BY column1, column2
Syntax
UPDATE table_name
SET column1=value, column2=value2,...
WHERE some_column=some_value
Page 89 of
Tutorial PHP by
www.w3schools.com Organized by
Nur Dwi Muryanto, 2009
To get PHP to execute the statement above we must use the mysql_query()
function. This function is used to send a query or command to a MySQL
connection.
Example
Peter Griffin 35
Glenn Quagmire 33
After the update, the "Persons" table will look like this:
FirstName LastName Age
Page 90 of
Tutorial PHP by
www.w3schools.com Organized by
Nur Dwi Muryanto, 2009
Peter Griffin 36
Page 91 of
Tutorial PHP by
www.w3schools.com Organized by
Nur Dwi Muryanto, 2009
Glenn Quagmire 33
Syntax
DELETE FROM table_name
WHERE some_column = some_value
To get PHP to execute the statement above we must use the mysql_query()
function. This function is used to send a query or command to a MySQL
connection.
Example
Peter Griffin 35
Glenn Quagmire 33
Page 92 of
Tutorial PHP by
www.w3schools.com Organized by
Nur Dwi Muryanto, 2009
The following example deletes all the records in the "Persons" table where
LastName='Griffin':
<?php
$con = mysql_connect("localhost","peter","abc123");
if (!$con)
{
die('Could not connect: ' . mysql_error());
}
mysql_select_db("my_db", $con);
Glenn Quagmire 33
Page 93 of
Tutorial PHP by
www.w3schools.com Organized by
Nur Dwi Muryanto, 2009
With an ODBC connection, you can connect to any database, on any
computer in your network, as long as an ODBC connection is available.
Note that this configuration has to be done on the computer where your web
site is located. If you are running Internet Information Server (IIS) on your
own computer, the instructions above will work, but if your web site is
located on a remote server, you have to have physical access to that server, or
ask your web host to to set up a DSN for you to use.
Connecting to an ODBC
The odbc_connect() function is used to connect to an ODBC data source.
The function takes four parameters: the data source name, username,
password, and an optional cursor type.
Example
$conn=odbc_connect('northwind','','');
$sql="SELECT * FROM customers";
$rs=odbc_exec($conn,$sql);
Retrieving Records
The odbc_fetch_row() function is used to return records from the result-set.
This function returns true if it is able to return rows, otherwise false.
Page 94 of
Tutorial PHP by
www.w3schools.com Organized by
Nur Dwi Muryanto, 2009
The function takes two parameters: the ODBC result identifier and an
optional row number:
odbc_fetch_row($rs)
The code line below returns the value of the first field from the record:
$compname=odbc_result($rs,1);
The code line below returns the value of a field called "CompanyName":
$compname=odbc_result($rs,"CompanyName");
odbc_close($conn);
An ODBC Example
The following example shows how to first create a database connection, then
a result-set, and then display the data in an HTML table.
<html>
<body>
<?php
$conn=odbc_connect('northwind','','');
if (!$conn)
{exit("Connection Failed: " . $conn);}
$sql="SELECT * FROM customers";
$rs=odbc_exec($conn,$sql);
if (!$rs)
{exit("Error in SQL");}
echo "<table><tr>";
echo "<th>Companyname</th>";
echo "<th>Contactname</th></tr>";
Page 95 of
Tutorial PHP by
www.w3schools.com Organized by
Nur Dwi Muryanto, 2009
while (odbc_fetch_row($rs))
{
$compname=odbc_result($rs,"CompanyName");
$conname=odbc_result($rs,"ContactName");
echo "<tr><td>$compname</td>";
echo "<td>$conname</td></tr>";
}
odbc_close($conn);
echo "</table>";
?>
</body>
</html>
In XML, no tags are predefined. You must define your own tags.
If you want to learn more about XML, please visit our XML tutorial.
What is Expat?
To read and update - create and manipulate - an XML document, you will
need an XML parser.
Page 96 of
Tutorial PHP by
www.w3schools.com Organized by
Nur Dwi Muryanto, 2009
The Expat parser is an event-based parser.
However, this makes no difference when using the Expat parser. Expat is
a non-validating parser, and ignores any DTDs.
Installation
The XML Expat parser functions are part of the PHP core. There is no
installation needed to use these functions.
An XML File
The XML file below will be used in our example:
<?xml version="1.0" encoding="ISO-8859-1"?>
<note>
<to>Tove</to>
<from>Jani</from>
<heading>Reminder</heading>
<body>Don't forget me this weekend!</body>
</note>
Page 97 of
Tutorial PHP by
www.w3schools.com Organized by
Nur Dwi Muryanto, 2009
Initializing the XML Parser
We want to initialize the XML parser in PHP, define some handlers for
different XML events, and then parse the XML file.
Example
<?php
//Initialize the XML parser
$parser=xml_parser_create();
//Function to use at the start of an element
function start($parser,$element_name,$element_attrs)
{
switch($element_name)
{
case "NOTE":
echo "-- Note --<br />";
break;
case "TO":
echo "To: ";
break;
case "FROM":
echo "From: ";
break;
case "HEADING":
echo "Heading: ";
break;
case "BODY":
echo "Message: ";
}
}
//Function to use at the end of an element
function stop($parser,$element_name)
{
echo "<br />";
}
//Function to use when finding character data
function char($parser,$data)
{
echo $data;
}
//Specify element handler
xml_set_element_handler($parser,"start","stop");
//Specify data handler
xml_set_character_data_handler($parser,"char");
//Open XML file
$fp=fopen("test.xml","r");
//Read data
while ($data=fread($fp,4096))
Page 98 of
Tutorial PHP by
www.w3schools.com Organized by
Nur Dwi Muryanto, 2009
{
xml_parse($parser,$data,feof($fp)) or
die (sprintf("XML Error: %s at line %d",
xml_error_string(xml_get_error_code($parser)),
xml_get_current_line_number($parser)));
}
//Free the XML parser
xml_parser_free($parser);
?>
How it works:
1. Initialize the XML parser with the
xml_parser_create() function
2. Create functions to use with the different event handlers
3. Add the xml_set_element_handler() function to specify
which function will be executed when the parser
encounters the opening and closing tags
4. Add the xml_set_character_data_handler()
function to specify which function will execute
when the parser encounters character data
5. Parse the file "test.xml" with the xml_parse() function
6. In case of an error, add xml_error_string()
function to convert an XML error to a textual
description
7. Call the xml_parser_free() function to release the
memory allocated with the xml_parser_create()
function
More PHP Expat Parser
For more information about the PHP Expat functions, visit our PHP XML
Parser Reference.
The W3C DOM is separated into different parts (Core, XML, and HTML)
and different levels (DOM Level 1/2/3):
* Core DOM - defines a standard set of objects for any structured document
* XML DOM - defines a standard set of objects for XML documents
* HTML DOM - defines a standard set of objects for HTML documents
If you want to learn more about the XML DOM, please visit our XML DOM
tutorial.
XML Parsing
To read and update - create and manipulate - an XML document, you will
need an XML parser.
Page 100 of
Tutorial PHP by
www.w3schools.com Organized by
Nur Dwi Muryanto, 2009
Installation
The DOM XML parser functions are part of the PHP core. There is no
installation needed to use these functions.
An XML File
The XML file below will be used in our example:
<?xml version="1.0" encoding="ISO-8859-1"?>
<note>
<to>Tove</to>
<from>Jani</from>
<heading>Reminder</heading>
<body>Don't forget me this weekend!</body>
</note>
Example
<?php
$xmlDoc = new DOMDocument();
$xmlDoc->load("note.xml");
print $xmlDoc->saveXML();
?>
If you select "View source" in the browser window, you will see the
following HTML:
<?xml version="1.0" encoding="ISO-8859-1"?>
<note>
<to>Tove</to>
<from>Jani</from>
<heading>Reminder</heading>
<body>Don't forget me this weekend!</body>
</note>
Page 101 of
Tutorial PHP by
www.w3schools.com Organized by
Nur Dwi Muryanto, 2009
The example above creates a DOMDocument-Object and loads the XML
from "note.xml" into it.
Then the saveXML() function to puts the internal XML document into a
string, so that we can print it.
Looping through XML
We want to initialize the XML parser, load the XML, and loop through all
elements of the <note> element:
Example
<?php
$xmlDoc = new DOMDocument();
$xmlDoc->load("note.xml");
$x = $xmlDoc->documentElement;
foreach ($x->childNodes AS $item)
{
print $item->nodeName . " = " . $item->nodeValue . "<br />";
}
?>
In the example above you see that there are empty text nodes between each
element.
If you want to learn more about the XML DOM, please visit our XML
DOM tutorial.
Page 102 of
Tutorial PHP by
www.w3schools.com Organized by
Nur Dwi Muryanto, 2009
PHP SimpleXML
SimpleXML handles the most common XML tasks and leaves the rest for
other extensions.
What is SimpleXML?
SimpleXML is new in PHP 5. It is an easy way of getting an element's
attributes and text, if you know the XML document's layout.
Compared to DOM or the Expat parser, SimpleXML just takes a few lines of
code to read text data from an element.
SimpleXML is fast and easy to use when performing basic tasks like:
Reading XML files
Extracting data from XML strings
Editing text nodes or attributes
Page 103 of
Tutorial PHP by
www.w3schools.com Organized by
Nur Dwi Muryanto, 2009
However, when dealing with advanced XML, like namespaces, you are
better off using the Expat parser or the XML DOM.
Installation
As of PHP 5.0, the SimpleXML functions are part of the PHP core. There is
no installation needed to use these functions.
Using SimpleXML
Below is an XML file:
<?xml version="1.0" encoding="ISO-8859-1"?>
<note>
<to>Tove</to>
<from>Jani</from>
<heading>Reminder</heading>
<body>Don't forget me this weekend!</body>
</note>
We want to output the element names and data from the XML file above.
Example
<?php
$xml = simplexml_load_file("test.xml");
echo $xml->getName() . "<br />";
foreach($xml->children() as $child)
{
echo $child->getName() . ": " . $child . "<br />";
}
?>
Page 104 of
Tutorial PHP by
www.w3schools.com Organized
heading: Reminder
body: Don't forget me this weekend!
AJAX Introduction
AJAX = Asynchronous JavaScript And XML
AJAX is an acronym for Asynchronous JavaScript And XML.
AJAX is not a new programming language, but simply a new technique for
creating better, faster, and more interactive web applications.
AJAX uses JavaScript to send and receive data between a web browser and a
web server.
The AJAX technique makes web pages more responsive by exchanging data
with the web server behind the scenes, instead of reloading an entire web
page each time a user makes a change.
The open standards used in AJAX are well defined, and supported by all
major browsers. AJAX applications are browser and platform
independent. (Cross-Platform, Cross-Browser technology)
AJAX Is About Better Internet Applications
Page 105 of
Tutorial PHP by
www.w3schools.com Organized
With AJAX, Internet applications can be made richer (smaller, faster, and
easier to use).
You Can Start Using AJAX Today
There is nothing new to learn.
AJAX is based on open standards. These standards have been used by most
developers for several years.
Because the server returns a new web page each time the user submits input,
traditional web applications often run slowly and tend to be less user
friendly.
With AJAX, web applications can send and retrieve data without reloading
the whole web page. This is done by sending HTTP requests to the server
(behind the scenes), and by modifying only parts of the web page using
JavaScript when the server returns data.
XML is commonly used as the format for receiving server data, although any
format, including plain text, can be used.
You will learn more about how this is done in the next chapters of this
tutorial.
PHP and AJAX
Page 106 of
Tutorial PHP by
www.w3schools.com Organized
To read more about how AJAX works, visit our AJAX tutorial.
AJAX XMLHttpRequest
The XMLHttpRequest object makes AJAX possible.
The XMLHttpRequest
The XMLHttpRequest object is the key to AJAX.
It has been available ever since Internet Explorer 5.5 was released in July
2000, but not fully discovered before people started to talk about AJAX and
Web 2.0 in 2005.
Creating An XMLHttpRequest Object
Different browsers use different methods to create an XMLHttpRequest
object.
Internet Explorer uses an ActiveXObject.
Other browsers uses a built in JavaScript object called XMLHttpRequest.
Here is the simplest code you can use to overcome this problem:
var XMLHttp=null
if (window.XMLHttpRequest)
{
XMLHttp=new XMLHttpRequest()
}
Page 107 of
Tutorial PHP by
www.w3schools.com Organized
else if (window.ActiveXObject)
{
XMLHttp=new ActiveXObject("Microsoft.XMLHTTP")
}
function GetXmlHttpObject()
{
var
xmlHttp=null;
try
{
// Firefox, Opera 8.0+, Safari
xmlHttp=new XMLHttpRequest();
}
catch (e)
{
// Internet Explorer
try
{
xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");
}
catch (e)
Page 108 of
Tutorial PHP by
www.w3schools.com Organized
xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
}
}
return xmlHttp;
}
Suggestions:
Page 109 of
Tutorial PHP by
www.w3schools.com Organized
<html>
Example
<head> Explained - The HTML Form
<script src="clienthint.js"></script>
</head>
As you can see, the HTML page above contains a simple HTML form with
<body>
an input field called "txt1".
<form>
First
Name:
The form works like this:
<input type="text" id="txt1"
1. An event is triggered when the user presses, and releases a key in the
onkeyup="showHint(this.value)">
</form> input field
2. When the event
<p>Suggestions: is triggered,
<span a function called showHint() is executed.
id="txtHint"></span></p>
</body>
3. Below the form is a <span> called "txtHint". This is used as
a placeholder for the return data of the showHint() function.
The JavaScript
The JavaScript code is stored in "clienthint.js" and linked to the HTML
document:
var xmlHttp;
function showHint(str)
{
if (str.length==0)
{
document.getElementById("txtHint").innerHTML="";
return;
Page 110 of
Tutorial PHP by
www.w3schools.com Organized
}
xmlHttp=GetXmlHttpObject()
; if (xmlHttp==null)
{
alert ("Browser does not support HTTP Request");
return;
}
var url="gethint.php"; url=url+"?
q="+str;
url=url+"&sid="+Math.random();
xmlHttp.onreadystatechange=stateChange
d; xmlHttp.open("GET",url,true);
xmlHttp.send(null);
}
function stateChanged()
{
if (xmlHttp.readyState==4 || xmlHttp.readyState=="complete")
{
document.getElementById("txtHint").innerHTML=xmlHttp.response
T ext;
}
}
function GetXmlHttpObject()
{
var
xmlHttp=null;
try
{
// Firefox, Opera 8.0+, Safari
xmlHttp=new XMLHttpRequest();
}
catch (e)
{
// Internet Explorer
try
{
xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");
}
catch (e)
{
xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
}
}
return xmlHttp;
Example Explained
The showHint() Function
Page 111 of
Tutorial PHP by
www.w3schools.com Organized
This function executes every time a character is entered in the input field.
If there is some input in the text field (str.length > 0) the function executes
the following:
1. Defines the url (filename) to send to the server
2. Adds a parameter (q) to the url with the content of the input field
3. Adds a random number to prevent the server from using a cached file
4. Calls on the GetXmlHttpObject function to create an XMLHTTP
object, and tells the object to execute a function called stateChanged
when a change is triggered
5. Opens the XMLHTTP object with the given url.
6. Sends an HTTP request to the server
If the input field is empty, the function simply clears the content of the
txtHint placeholder.
This function executes every time the state of the XMLHTTP object
changes.
When the state changes to 4 (or to "complete"), the content of the txtHint
placeholder is filled with the response text.
AJAX applications can only run in web browsers with complete XML
support.
Page 112 of
Tutorial PHP by
www.w3schools.com Organized
The code in the "gethint.php" checks an array of names and returns the
corresponding names to the client:
<?php
// Fill up array with names
$a[]="Anna";
$a[]="Brittany";
$a[]="Cinderella";
$a[]="Diana";
$a[]="Eva";
$a[]="Fiona";
$a[]="Gunda";
$a[]="Hege";
$a[]="Inga";
$a[]="Johanna";
$a[]="Kitty";
$a[]="Linda";
$a[]="Nina";
$a[]="Ophelia";
$a[]="Petunia";
$a[]="Amanda";
$a[]="Raquel";
$a[]="Cindy";
$a[]="Doris";
$a[]="Eve";
$a[]="Evita";
$a[]="Sunniva";
$a[]="Tove";
$a[]="Unni";
$a[]="Violet";
$a[]="Liza";
$a[]="Elizabeth";
$a[]="Ellen";
$a[]="Wenche";
$a[]="Vicky";
//get the q parameter from URL
$q=$_GET["q"];
//lookup all hints from array if length of
q>0 if (strlen($q) > 0)
{
$hint="";
for($i=0; $i<count($a); $i++)
{
if (strtolower($q)==strtolower(substr($a[$i],0,strlen($q))))
{
if ($hint=="")
{
$hint=$a[$i];
}
Page 113 of
Tutorial PHP by
www.w3schools.com Organized
else
{
$hint=$hint." , ".$a[$i];
}
}
}
}
Page 114 of
Tutorial PHP by
www.w3schools.com Organized
Select a CD:
TITLE: The very best of
ARTIST: Cat Stevens
COUNTRY: UK
COMPANY: Island
PRICE: 8.90
YEAR: 1990
<html>
Example
<head> Explained
<script src="selectcd.js"></script>
</head>
As you can see it is just a simple HTML form with a simple drop down box
<body>
called
<form>"cds".
Select a
CD:
The paragraph below the form contains a div called "txtHint". The div is
<select name="cds" onchange="showCD(this.value)">
used as a placeholder
<option value="BobforDylan">Bob
info retrieved from the web server.
Dylan</option>
<option value="Bee Gees">Bee Gees</option>
<option value="Cat Stevens">Cat Stevens</option>
</select>
</form>
<p>
<div id="txtHint"><b>CD info will be listed here.</b></div>
</p>
</body>
Page 115 of
Tutorial PHP by
www.w3schools.com Organized
When the user selects data, a function called "showCD" is executed. The
execution of the function is triggered by the "onchange" event.
In other words: Each time the user changes the value in the drop down box,
the function showCD is called.
The XML File
The XML file is "cd_catalog.xml". This document contains a CD collection.
The JavaScript
This is the JavaScript code stored in the file "selectcd.js":
var xmlHttp
function showCD(str)
{
xmlHttp=GetXmlHttpObject()
if (xmlHttp==null)
{
alert ("Browser does not support HTTP Request")
return
}
var url="getcd.php" url=url+"?
q="+str
url=url+"&sid="+Math.random()
xmlHttp.onreadystatechange=stateChange
d xmlHttp.open("GET",url,true)
xmlHttp.send(null)
}
function stateChanged()
{
if (xmlHttp.readyState==4 || xmlHttp.readyState=="complete")
{
document.getElementById("txtHint").innerHTML=xmlHttp.response
T ext
}
}
function GetXmlHttpObject()
{
var
xmlHttp=null;
try
{
// Firefox, Opera 8.0+, Safari
xmlHttp=new XMLHttpRequest();
}
Page 116 of
Tutorial PHP by
www.w3schools.com Organized
{
// Internet Explorer
try
{
xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");
}
catch (e)
{
xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
}
}
return xmlHttp;
}
Example Explained
The stateChanged() and GetXmlHttpObject functions are the same as in the
last chapter, you can go to the previous page for an explanation of those
If an item in the drop down box is selected the function executes the
following:
1. Calls on the GetXmlHttpObject function to create an
XMLHTTP object
2. Defines the url (filename) to send to the server
3. Adds a parameter (q) to the url with the content of the input field
4. Adds a random number to prevent the server from using a cached file
5. Call stateChanged when a change is triggered
6. Opens the XMLHTTP object with the given url.
7. Sends an HTTP request to the server
The PHP Page
The server paged called by the JavaScript, is a simple PHP file called
"getcd.php".
The page is written in PHP using the XML DOM to load the XML document
"cd_catalog.xml".
The code runs a query against the XML file and returns the result as HTML:
<?php
$q=$_GET["q"];
Page 117 of
Tutorial PHP by
www.w3schools.com Organized
Example Explained
When the query is sent from the JavaScript to the PHP page the following
happens:
1. PHP creates an XML DOM object of the "cd_catalog.xml" file
2. All "artist" elements (nodetypes = 1) are looped through to find a
name matching the one sent from the JavaScript.
3. The CD containing the correct artist is found
4. The album information is output and sent to the "txtHint" placeholder
Page 118 of
Tutorial PHP by
www.w3schools.com Organized
In the AJAX example below we will demonstrate how a web page can fetch
information from a MySQL database using AJAX technology.
Select a Name in the Box Below
Select a User:
<html>
<head>
<script src="selectuser.js"></script>
</head>
<body>
<form>
Select a User:
<select name="users" onchange="showUser(this.value)">
<option value="1">Peter Griffin</option>
<option value="2">Lois Griffin</option>
<option value="3">Glenn Quagmire</option>
<option value="4">Joseph Swanson</option>
</select>
Page 119 of
Tutorial PHP by
www.w3schools.com Organized
</form>
<p>
<div id="txtHint"><b>User info will be listed here.</b></div>
</p>
</body>
</html>
The paragraph below the form contains a div called "txtHint". The div is
used as a placeholder for info retrieved from the web server.
When the user selects data, a function called "showUser()" is executed. The
execution of the function is triggered by the "onchange" event.
In other words: Each time the user changes the value in the drop down box,
the function showUser() is called.
The JavaScript
This is the JavaScript code stored in the file "selectuser.js":
var xmlHttp
function showUser(str)
{
xmlHttp=GetXmlHttpObject()
if (xmlHttp==null)
{
alert ("Browser does not support HTTP Request")
return
}
var url="getuser.php" url=url+"?
q="+str url=url+"&sid="+Math.random()
xmlHttp.onreadystatechange=stateChang
ed xmlHttp.open("GET",url,true)
xmlHttp.send(null)
}
function stateChanged()
{
if (xmlHttp.readyState==4 || xmlHttp.readyState=="complete")
{
document.getElementById("txtHint").innerHTML=xmlHttp.response
T
Page 120 of
Tutorial PHP by
www.w3schools.com Organized
e
x
t
}
}
function GetXmlHttpObject()
{
var
xmlHttp=null;
try
{
// Firefox, Opera 8.0+, Safari
xmlHttp=new XMLHttpRequest();
}
catch (e)
{
//Internet Explorer
try
{
xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");
}
catch (e)
{
xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
}
Example Explained
The stateChanged() and GetXmlHttpObject functions are the same as in the
PHP AJAX Suggest chapter, you can go to there for an explanation of those.
If an item in the drop down box is selected the function executes the
following:
1. Calls on the GetXmlHttpObject function to create an
XMLHTTP object
2. Defines the url (filename) to send to the server
3. Adds a parameter (q) to the url with the content of the dropdown box
4. Adds a random number to prevent the server from using a cached file
5. Call stateChanged when a change is triggered
6. Opens the XMLHTTP object with the given url.
7. Sends an HTTP request to the server
The server page called by the JavaScript, is a simple PHP file called
"getuser.php".
The code runs a SQL query against a database and returns the result as an
HTML table:
<?php
$q=$_GET["q"];
mysql_select_db("ajax_demo", $con);
$result = mysql_query($sql);
while($row = mysql_fetch_array($result))
{
echo "<tr>";
echo "<td>" . $row['FirstName'] . "</td>";
echo "<td>" . $row['LastName'] . "</td>";
echo "<td>" . $row['Age'] . "</td>";
echo "<td>" . $row['Hometown'] . "</td>";
echo "<td>" . $row['Job'] . "</td>";
echo "</tr>";
}
echo "</table>";
mysql_close($con);
?>
Page 122 of
Tutorial PHP by
www.w3schools.com Organized
Example Explained
When the query is sent from the JavaScript to the PHP page the following
happens:
1. PHP opens a connection to a MySQL server
2. The "user" with the specified name is found
3. A table is created and the data is inserted and sent to the
"txtHint" placeholder
This example my seem a lot like the "PHP AJAX Database" example in the
last chapter, however there is a big difference: in this example we get the
data from the PHP page as XML using the responseXML function.
Page 123 of
Tutorial PHP by
www.w3schools.com Organized
In this example we will update several <span> elements with the information
we receive from the database.
Select a Name in the Box Below
Select a User:
Glenn Quagmire
Pilot
Age: 41
From: Quahog
<html>
<head>
<script src="responsexml.js"></script>
</head>
<body>
<form>
Select a User:
<select name="users" onchange="showUser(this.value)">
Page 124 of
Tutorial PHP by
www.w3schools.com Organized
In other words: Each time the user changes the value in the drop down box,
the function showUser() is called and outputs the result in the specified
<span> elements.
The JavaScript
This is the JavaScript code stored in the file "responsexml.js":
var xmlHttp
function showUser(str)
{
xmlHttp=GetXmlHttpObject(
) if (xmlHttp==null)
{
alert ("Browser does not support HTTP Request")
return
}
var url="responsexml.php"
Page 125 of
Tutorial PHP by
www.w3schools.com Organized
url=url+"?q="+str
url=url+"&sid="+Math.random()
xmlHttp.onreadystatechange=stateChanged
xmlHttp.open("GET",url,true)
xmlHttp.send(null)
}
function stateChanged()
{
if (xmlHttp.readyState==4 || xmlHttp.readyState=="complete")
{
xmlDoc=xmlHttp.responseXML;
document.getElementById("firstname").innerHTML=
xmlDoc.getElementsByTagName("firstname")[0].childNodes[0].node
Value;
document.getElementById("lastname").innerHTML=
xmlDoc.getElementsByTagName("lastname")[0].childNodes[0].nodeV
alue;
document.getElementById("job").innerHTML=
xmlDoc.getElementsByTagName("job")[0].childNodes[0].nodeValue;
document.getElementById("age_text").innerHTML="Age: ";
document.getElementById("age").innerHTML=
xmlDoc.getElementsByTagName("age")[0].childNodes[0].nodeValue;
document.getElementById("hometown_text").innerHTML="<br/>From:
";
document.getElementById("hometown").innerHTML=
xmlDoc.getElementsByTagName("hometown")[0].childNodes[0].nodeV
alue;
}
}
function GetXmlHttpObject()
{
var objXMLHttp=null
if (window.XMLHttpRequest)
{
objXMLHttp=new XMLHttpRequest()
}
else if (window.ActiveXObject)
{
objXMLHttp=new ActiveXObject("Microsoft.XMLHTTP")
}
return objXMLHttp
}
Example Explained
The showUser() and GetXmlHttpObject functions are the same as in the PHP
AJAX Database chapter, you can go to there for an explanation of those.
Page 126 of
Tutorial PHP by
www.w3schools.com Organized
If an item in the drop down box is selected the function executes the
following:
1. Defines the "xmlDoc" variable as an xml document using the
responseXML function
2. Retrieves data from the xml documents and places them in the correct
<span> elements
The code runs a SQL query against a database and returns the result as an
XML document:
<?php
header('Content-Type: text/xml');
header("Cache-Control: no-cache, must-revalidate");
//A date in the past
header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");
$q=$_GET["q"];
$con = mysql_connect('localhost', 'peter',
'abc123'); if (!$con)
{
die('Could not connect: ' . mysql_error());
}
mysql_select_db("ajax_demo", $con);
$sql="SELECT * FROM user WHERE id = ".$q."";
$result = mysql_query($sql);
echo '<?xml version="1.0" encoding="ISO-8859-1"?>
<person>';
while($row = mysql_fetch_array($result))
{
echo "<firstname>" . $row['FirstName'] .
"</firstname>"; echo "<lastname>" . $row['LastName'] .
"</lastname>"; echo "<age>" . $row['Age'] . "</age>";
echo "<hometown>" . $row['Hometown'] . "</hometown>";
echo "<job>" . $row['Job'] . "</job>";
}
echo "</person>";
Page 127 of
Tutorial PHP by
www.w3schools.com Organized
mysql_close($con);
?>
Example Explained
When the query is sent from the JavaScript to the PHP page the following
happens:
1. The content-type of the PHP document is set to be "text/xml"
2. The PHP document is set to "no-cache" to prevent caching
3. The $q variable is set to be the data sent from the html page
4. PHP opens a connection to a MySQL server
5. The "user" with the specified id is found
6. The data is outputted as an xml document
Page 128 of
Tutorial PHP by
www.w3schools.com Organized
<html>
Example Explained - The HTML Form
<head>
<script src="livesearch.js"></script>
<style type="text/css">
As you can see, the HTML page above contains a simple HTML form with
#livesearch
an {input field called "txt1".
margin:0px;
width:194px;
The form works like this:
}
#tx1. An event is triggered when the user presses, and releases a key in the
t1 input field
{ 2. When the event is triggered, a function called showResult() is
margin:0px;
executed.
}
3. Below the form is a <div> called "livesearch". This is used as
</style>
</head> a placeholder for the return data of the showResult() function.
The JavaScript
<body>
<form>
<input type="text" id="txt1" size="30"
onkeyup="showResult(this.value)">
<div id="livesearch"></div>
</form>
</body>
Page 129 of
Tutorial PHP by
www.w3schools.com Organized
var xmlHttp
function showResult(str)
{
if (str.length==0)
{
document.getElementById("livesearch")
. innerHTML="";
document.getElementById("livesearch")
. style.border="0px";
return
}
xmlHttp=GetXmlHttpObject()
if (xmlHttp==null)
{
alert ("Browser does not support HTTP Request")
return
}
var url="livesearch.php" url=url+"?
q="+str url=url+"&sid="+Math.random()
xmlHttp.onreadystatechange=stateChange
d xmlHttp.open("GET",url,true)
xmlHttp.send(null)
}
function stateChanged()
{
if (xmlHttp.readyState==4 || xmlHttp.readyState=="complete")
{
document.getElementById("livesearch")
. innerHTML=xmlHttp.responseText;
document.getElementById("livesearch")
. style.border="1px solid #A5ACB2";
}
}
function GetXmlHttpObject()
{
var
xmlHttp=null;
try
{
// Firefox, Opera 8.0+, Safari
xmlHttp=new XMLHttpRequest();
}
catch (e)
{
// Internet Explorer
Page 130 of
Tutorial PHP by
www.w3schools.com Organized
try
{
xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");
}
catch (e)
{
xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
}
}
return xmlHttp;
}
Example Explained
The GetXmlHttpObject function is the same as in the PHP AJAX Suggest
chapter.
This function executes every time a character is entered in the input field.
If there is no input in the text field (str.length == 0) the function sets the
return field to empty and removes any border around it.
However, if there is any input in the text field the function executes the
following:
1. Defines the url (filename) to send to the server
2. Adds a parameter (q) to the url with the content of the input field
3. Adds a random number to prevent the server from using a cached file
4. Calls on the GetXmlHttpObject function to create an XMLHTTP
object, and tells the object to execute a function called stateChanged
when a change is triggered
5. Opens the XMLHTTP object with the given url.
6. Sends an HTTP request to the server
This function executes every time the state of the XMLHTTP object
changes.
When the state changes to 4 (or to "complete"), the content of the txtHint
placeholder is filled with the response text, and a border is set around the
return field.
Page 131 of
Tutorial PHP by
www.w3schools.com Organized
The code searches the XML file for titles matching the search string and
returns the result as HTML:
<?php
$xmlDoc = new DOMDocument();
$xmlDoc->load("links.xml");
$x=$xmlDoc->getElementsByTagName('link');
//get the q parameter from URL
$q=$_GET["q"];
//lookup all links from the xml file if length of q>0
if (strlen($q) > 0)
{
$hint="";
for($i=0; $i<($x->length); $i++)
{
$y=$x->item($i)->getElementsByTagName('title');
$z=$x->item($i)->getElementsByTagName('url');
if ($y->item(0)->nodeType==1)
{
//find a link matching the search text
if (stristr($y->item(0)->childNodes->item(0)->nodeValue,$q))
{
if ($hint=="")
{
$hint="<a href='" .
$z->item(0)->childNodes->item(0)->nodeValue .
"' target='_blank'>" .
$y->item(0)->childNodes->item(0)->nodeValue . "</a>";
}
else
{
$hint=$hint . "<br /><a href='" .
$z->item(0)->childNodes->item(0)->nodeValue .
"' target='_blank'>" .
$y->item(0)->childNodes->item(0)->nodeValue . "</a>";
}
}
}
}
Page 132 of
Tutorial PHP by
www.w3schools.com Organized
}
// Set output to "no suggestion" if no hint were found
// or to the correct
values if ($hint == "")
{
$response="no suggestion";
}
else
{
$response=$hint;
}
//output the response
echo $response;
?>
If there is any text sent from the JavaScript (strlen($q) > 0) the following
happens:
1. PHP creates an XML DOM object of the "links.xml" file
2. All "title" elements (nodetypes = 1) are looped through to find a
name matching the one sent from the JavaScript
3. The link containing the correct title is found and set as the
"$response" variable. If more than one match is found, all matches
are added to the variable
4. If no matches are found the $response variable is set to "no
suggestion"
5. The $result variable is output and sent to the "livesearch" placeholder
Page 133 of
Tutorial PHP by
www.w3schools.com Organized
<html>
<head>
<script type="text/javascript" src="getrss.js"></script>
</head>
<body>
<form>
Select an RSS-Feed:
<select onchange="showRSS(this.value)">
<option value="Google">Google News</option>
<option value="MSNBC">MSNBC News</option>
</select>
</form>
Page 134 of
Tutorial PHP by
www.w3schools.com Organized
<p><div id="rssOutput">
<b>RSS Feed will be listed here.</b></div></p>
</body>
</html>
The JavaScript
The JavaScript code is stored in "getrss.js" and linked to the HTML
document:
var xmlHttp
function showRSS(str)
{
xmlHttp=GetXmlHttpObject(
) if (xmlHttp==null)
{
alert ("Browser does not support HTTP Request")
return
}
var url="getrss.php" url=url+"?
q="+str
url=url+"&sid="+Math.random()
xmlHttp.onreadystatechange=stateChang
ed xmlHttp.open("GET",url,true)
xmlHttp.send(null)
}
function stateChanged()
{
if (xmlHttp.readyState==4 || xmlHttp.readyState=="complete")
{
document.getElementById("rssOutput")
.innerHTML=xmlHttp.responseText
Page 135 of
Tutorial PHP by
www.w3schools.com Organized
}
}
function GetXmlHttpObject()
{
var
xmlHttp=null;
try
{
// Firefox, Opera 8.0+, Safari
xmlHttp=new XMLHttpRequest();
}
catch (e)
{
// Internet Explorer
try
{
xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");
}
catch (e)
{
xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
}
}
return xmlHttp;
Example Explained
The stateChanged() and GetXmlHttpObject functions are the same as in the
PHP AJAX Suggest chapter.
Every time an option is selected in the input field this function executes the
following:
1. Defines the url (filename) to send to the server
2. Adds a parameter (q) to the url with the selected option from the drop
down box
3. Adds a random number to prevent the server from using a cached file
4. Calls on the GetXmlHttpObject function to create an XMLHTTP
object, and tells the object to execute a function called stateChanged
when a change is triggered
5. Opens the XMLHTTP object with the given url.
6. Sends an HTTP request to the server
Page 136 of
Tutorial PHP by
www.w3schools.com Organized
<?php
//get the q parameter from URL
$q=$_GET["q"];
//find out which feed was selected
if($q=="Google")
{
$xml=("http://news.google.com/news?ned=us&topic=h&output=rss")
;
}
elseif($q=="MSNBC")
{
$xml=("http://rss.msnbc.msn.com/id/3032091/device/rss/rss.xml"
);
}
$xmlDoc = new DOMDocument();
$xmlDoc->load($xml);
//get elements from "<channel>"
$channel=$xmlDoc->getElementsByTagName('channel')->item(0);
$channel_title = $channel->getElementsByTagName('title')
->item(0)->childNodes->item(0)->nodeValue;
$channel_link = $channel->getElementsByTagName('link')
->item(0)->childNodes->item(0)->nodeValue;
$channel_desc = $channel->getElementsByTagName('description')
->item(0)->childNodes->item(0)->nodeValue;
//output elements from "<channel>"
echo("<p><a href='" . $channel_link
. "'>" . $channel_title . "</a>");
echo("<br />");
echo($channel_desc . "</p>");
//get and output "<item>" elements
$x=$xmlDoc->getElementsByTagName('item');
for ($i=0; $i<=2; $i++)
{
$item_title=$x->item($i)->getElementsByTagName('title')
->item(0)->childNodes->item(0)->nodeValue;
$item_link=$x->item($i)->getElementsByTagName('link')
->item(0)->childNodes->item(0)->nodeValue;
$item_desc=$x->item($i)->getElementsByTagName('description')
->item(0)->childNodes->item(0)->nodeValue;
echo ("<p><a href='" . $item_link
. "'>" . $item_title . "</a>");
echo ("<br />");
echo ($item_desc . "</p>");
Page 137 of
Tutorial PHP by
www.w3schools.com Organized
}
?
<html>
<head>
<script src="poll.js"></script>
</head>
<body>
Page 138 of
Tutorial PHP by
www.w3schools.com Organized
<div id="poll">
<h2>Do you like PHP and AJAX so far?</h2>
<for
m>
Yes:
<input type="radio" name="vote"
value="0"
onclick="getVote(this.value)">
<br />No:
<input type="radio" name="vote"
value="1"
onclick="getVote(this.value)">
</form>
0||0
The first number represents the "Yes" votes, the second number represents
the "No" votes.
Note: Remember to allow your web server to edit the text file. Do NOT give
everyone access, just the web server (PHP).
The JavaScript
The JavaScript code is stored in "poll.js" and linked to in the HTML
document:
Page 139 of
Tutorial PHP by
www.w3schools.com Organized
var xmlHttp
function getVote(int)
{
xmlHttp=GetXmlHttpObject()
if (xmlHttp==null)
{
alert ("Browser does not support HTTP Request")
return
}
var url="poll_vote.php" url=url+"?
vote="+int
url=url+"&sid="+Math.random()
xmlHttp.onreadystatechange=stateChange
d xmlHttp.open("GET",url,true)
xmlHttp.send(null)
}
function stateChanged()
{
if (xmlHttp.readyState==4 || xmlHttp.readyState=="complete")
{
document.getElementById("poll").
innerHTML=xmlHttp.responseText;
}
}
function GetXmlHttpObject()
{
var objXMLHttp=null
if (window.XMLHttpRequest)
{
objXMLHttp=new XMLHttpRequest()
}
else if (window.ActiveXObject)
{
objXMLHttp=new ActiveXObject("Microsoft.XMLHTTP")
}
return objXMLHttp
}
Example Explained
The stateChanged() and GetXmlHttpObject functions are the same as in the
PHP AJAX Suggest chapter.
Page 140 of
Tutorial PHP by
www.w3schools.com Organized
This function executes when "yes" or "no" is selected in the HTML form.
<?php
$vote = $_REQUEST['vote'];
//get content of textfile
$filename = "poll_result.txt";
$content = file($filename);
//put content in array
$array = explode("||", $content[0]);
$yes = $array[0];
$no = $array[1];
if ($vote == 0)
{
$yes = $yes + 1;
}
if ($vote == 1)
{
$no = $no + 1;
}
//insert votes to txt file
$insertvote = $yes."||".$no;
$fp =
fopen($filename,"w");
fputs($fp,$insertvote);
fclose($fp);
?>
<h2>Result:</h2>
<table>
<tr>
<td>Yes:</td>
<td>
<img src="poll.gif"
Page 141 of
Tutorial PHP by
www.w3schools.com Organized
height='20'>
<?php echo(100*round($yes/($no+$yes),2)); ?>%
</td>
</tr>
<tr>
<td>No:</td>
<td>
<img src="poll.gif"
width='<?php echo(100*round($no/($no+$yes),2)); ?>'
height='20'>
<?php echo(100*round($no/($no+$yes),2)); ?>%
</td>
</tr>
</table>
The selected value is sent from the JavaScript and the following happens:
1. Get the content of the "poll_result.txt" file
2. Put the content of the file in variables and add one to the selected
variable
3. Write the result to the "poll_result.txt" file
4. Output a graphical representation of the poll result
Page 142 of
Tutorial PHP by
www.w3schools.com Organized
Page 143 of
Tutorial PHP by
www.w3schools.com Organized
array_sum()
array_udiff()
array_udiff_assoc()
array_udiff_uassoc()
Page 144 of
Tutorial PHP by
www.w3schools.com Organized
Returns selected
parts of an array
Removes and
replaces specified
elements of
an array
Returns the sum of
the values in an
array
Compares array
values in a user-
made
function and returns
an array
Compares array
keys, and compares
array
values in a
user-made
function,
and returns
an array
Compares array keys
and array values in
user-made
functions, and
returns an
array
Compares
array values in
a user-made
Page 145 of
Tutorial PHP by
www.w3schools.com Organized
array_uintersect_assoc()
function and returns an array
Compares array keys, and compares array 5
values in a user-made function, and returns
an array
array_uintersect_uassoc() Compares array keys and array values in 5
user-made functions, and returns an array
array_unique() Removes duplicate values from an array 4
array_unshift() Adds one or more elements to the beginning 4
of an array
array_values() Returns all the values of an array 4
array_walk() Applies a user function to every member of 3
an array
array_walk_recursive() Applies a user function recursively to every 5
member of an array
arsort() Sorts an array in reverse order and maintain 3
index association
asort() Sorts an array and maintain index association 3
compact() Create array containing variables and their 4
values
count() Counts elements in an array, or properties in 3
an object
current() Returns the current element in an array 3
each() Returns the current key and value pair from 3
an array
end() Sets the internal pointer of an array to its last 3
element
extract() Imports variables into the current symbol 3
table from an array
in_array() Checks if a specified value exists in an array 4
key() Fetches a key from an array 3
krsort() Sorts an array by key in reverse order 3
ksort() Sorts an array by key 3
list() Assigns variables as if they were an array 3
natcasesort()
Page 146 of
Tutorial PHP by
www.w3schools.com Organized
Sorts an
array using a
case
insensitive
"natural
order"
algorithm
Page 147 of
Tutorial PHP by
www.w3schools.com Organized
natsort()
Sorts an array using a "natural order" 4
algorithm
next()
Advance the internal array pointer of an 3
array
pos()
Alias of current() 3
prev()
Rewinds the internal array pointer 3
range()
Creates an array containing a range of 3
elements
reset() Sets the internal pointer of an array to its first 3
element
rsort() Sorts an array in reverse order 3
shuffle() Shuffles an array 3
sizeof() Alias of count() 3
sort() Sorts an array 3
uasort() Sorts an array with a user-defined function 3
and maintain index association
uksort() Sorts an array by keys using a user-defined 3
function
usort() Sorts an array by values using a user-defined 3
function
PHP Array Constants
PHP: indicates the earliest version of PHP that supports the constant.
Page 148 of
Tutorial PHP by
www.w3schools.com Organized
Note: To convert between calendar formats, you must first convert to Julian
day count, then to the calendar format.
Installation
The windows version of PHP has built-in support for the calendar extension.
So, the calendar functions will work automatically.
However, if you are running the Linux version of PHP, you will have to
compile PHP with --enable-calendar to get the calendar functions to work.
PHP Calendar Functions
Page 149 of
Tutorial PHP by
www.w3schools.com Organized
PHP: indicates the earliest version of PHP that supports the function.
Page 150 of
Tutorial PHP by
www.w3schools.com Organized
Page 151 of
Tutorial PHP by
www.w3schools.com Organized
The date/time functions are part of the PHP core. There is no installation
needed to use these functions.
Runtime Configuration
The behavior of the date/time functions is affected by settings in php.ini.
Page 152 of
Tutorial PHP by
www.w3schools.com Organized
Page 153 of
Tutorial PHP by
www.w3schools.com Organized
DATE_ATOM Atom (example: 2005-08-
15T16:13:03+0000)
Page 154 of
Tutorial PHP by
www.w3schools.com Organized
Page 155 of
Tutorial PHP by
www.w3schools.com Organized
The error functions allow users to define error handling rules, and modify the
way the errors can be logged.
The logging functions allow users to log applications and send log messages
to email, system logs or other machines.
Installation
Page 156 of
Tutorial PHP by
www.w3schools.com Organized
The error and logging functions are part of the PHP core. There is no
installation needed to use these functions.
PHP Error and Logging Functions
PHP: indicates the earliest version of PHP that supports the function.
Page 157 of
Tutorial PHP by
www.w3schools.com Organized
Page 158 of
Tutorial PHP by
www.w3schools.com Organized
of level E_STRICT
Page 159 of
Tutorial PHP by
www.w3schools.com Organized
file() to see if it is
using Unix, MS-Dos
or Mac line-ending
characters (available
since PHP 4.3)
Unix / Windows Compatibility
When specifying a path on Unix platforms, the forward slash (/) is used as
directory separator. However, on Windows platforms, both forward slash (/)
and backslash (\) can be used.
Page 160 of
Tutorial PHP by
www.w3schools.com Organized
CSV fields
fgets() Returns a line from an open file 3
fgetss() Returns a line, with HTML and PHP tags 3
removed, from an open file
file() Reads a file into an array 3
file_exists() Checks whether or not a file or directory exists 3
file_get_contents() Reads a file into a string 4
file_put_contents Writes a string to a file 5
fileatime() Returns the last access time of a file 3
filectime() Returns the last change time of a file 3
filegroup() Returns the group ID of a file 3
fileinode() Returns the inode number of a file 3
filemtime() Returns the last modification time of a file 3
fileowner() Returns the user ID (owner) of a file 3
fileperms() Returns the permissions of a file 3
filesize() Returns the file size 3
filetype() Returns the file type 3
flock() Locks or releases a file 3
fnmatch() Matches a filename or string against a specified 4
pattern
fopen() Opens a file or URL 3
fpassthru() Reads from an open file, until EOF, and writes 3
the result to the output buffer
fputcsv() Formats a line as CSV and writes it to an open 5
file
fputs() Alias of fwrite() 3
fread() Reads from an open file 3
fscanf() Parses input from an open file according to a 4
specified format
fseek() Seeks in an open file 3
fstat() Returns information about an open file 4
ftell() Returns the current position in an open file 3
ftruncate() Truncates an open file to a specified length 4
Page 161 of
Tutorial PHP by
www.w3schools.com Organized
Page 162 of
Tutorial PHP by
www.w3schools.com Organized
Page 163 of
Tutorial PHP by
www.w3schools.com Organized
The filter functions are part of the PHP core. There is no installation needed
to use these functions.
Page 164 of
Tutorial PHP by
www.w3schools.com Organized
\\^~[]`<>#%";/?:@&=
FILTER_SANITIZE_NUMBER_INT Remove all characters, except
digits and +-
FILTER_SANITIZE_NUMBER_FLOAT Remove all characters, except
digits, +- and optionally .,eE
FILTER_SANITIZE_MAGIC_QUOTES Apply addslashes()
FILTER_UNSAFE_RAW Do nothing, optionally strip or
encode special characters
FILTER_VALIDATE_INT Validate value as integer,
optionally from the specified range
FILTER_VALIDATE_BOOLEAN Return TRUE for "1", "true", "on"
and "yes", FALSE for "0", "false",
"off", "no", and "", NULL
otherwise
FILTER_VALIDATE_FLOAT Validate value as float
FILTER_VALIDATE_REGEXP Validate value against regexp, a
Perl-compatible regular
FILTER_VALIDATE_URL expression
Validate value as URL, optionally
FILTER_VALIDATE_EMAIL with required components
FILTER_VALIDATE_IP Validate value as e-mail
Validate value as IP address,
optionally only IPv4 or IPv6 or not
from private or reserved ranges
The FTP functions are used to open, login and close connections, as well as
upload, download, rename, delete, and get information on files from file
Page 165 of
Tutorial PHP by
www.w3schools.com Organized
servers. Not all of the FTP functions will work with every server or return
the same results. The FTP functions became available with PHP 3.
These functions are meant for detailed access to an FTP server. If you only
wish to read from or write to a file on an FTP server, consider using the ftp://
wrapper with the Filesystem functions.
Installation
The windows version of PHP has built-in support for the FTP extension. So,
the FTP functions will work automatically.
However, if you are running the Linux version of PHP, you will have to
compile PHP with --enable-ftp (PHP 4+) or --with-ftp (PHP 3) to get the FTP
functions to work.
PHP FTP Functions
PHP: indicates the earliest version of PHP that supports the function.
Page 166 of
Tutorial PHP by
www.w3schools.com Organized
Page 167 of
Tutorial PHP by
www.w3schools.com Organized
FTP_TEXT 3
FTP_BINARY 3
FTP_IMAGE 3
FTP_TIMEOUT_SEC 3
FTP_AUTOSEEK 4
FTP_AUTORESUME Determine resume position and start position for 4
get and put requests automatically
FTP_FAILED Asynchronous transfer has failed 4
FTP_FINISHED Asynchronous transfer has finished 4
FTP_MOREDATA Asynchronous transfer is still active 4
Page 168 of
Tutorial PHP by
www.w3schools.com Organized
Page 169 of
Tutorial PHP by
www.w3schools.com Organized
Page 170 of
Tutorial PHP by
www.w3schools.com Organized
Requirements
For the mail functions to be available, PHP requires an installed and
working email system. The program to be used is defined by the
configuration settings in the php.ini file.
Installation
The mail functions are part of the PHP core. There is no installation needed
to use these functions.
Runtime Configuration
The behavior of the mail functions is affected by settings in the php.ini file.
Page 171 of
Tutorial PHP by
www.w3schools.com Organized
Page 172 of
Tutorial PHP by
www.w3schools.com Organized
cos()
Returns the cosine of a number 3
cosh()
Returns the hyperbolic cosine of a number 4
decbin()
Converts a decimal number to a binary number 3
dechex()
Converts a decimal number to a hexadecimal 3
number
decoct()
Converts a decimal number to an octal number 3
deg2rad()
Converts a degree to a radian number 3
exp()
Returns the value of Ex 3
expm1()
Returns the value of Ex - 1 4
floor()
Returns the value of a number rounded 3
downwards to the nearest integer
fmod()
Returns the remainder (modulo) of the division 4
of the arguments
getrandmax()
Returns the maximum random number that can 3
be returned by a call to the rand() function
hexdec()
Converts a hexadecimal number to a decimal 3
number
hypot()
Returns the length of the hypotenuse of a right- 4
angle triangle
is_finite()
Returns true if a value is a finite number 4
is_infinite()
Returns true if a value is an infinite number 4
is_nan()
Returns true if a value is not a number 4
lcg_value() Returns a pseudo random number in the range of 4
(0,1)
log() Returns the natural logarithm (base E) of a 3
number
log10() Returns the base-10 logarithm of a number 3
log1p() Returns log(1+number) 4
max() Returns the number with the highest value of two 3
specified numbers
min() Returns the number with the lowest value of two 3
specified numbers
mt_getrandmax() Returns the largest possible value that can be 3
returned by mt_rand()
Page 173 of
Tutorial PHP by
www.w3schools.com Organized
Page 174 of
Tutorial PHP by
www.w3schools.com Organized
Installation
The misc functions are part of the PHP core. There is no installation needed
to use these functions.
Runtime Configuration
The behavior of the misc functions is affected by settings in the php.ini file.
Page 175 of
Tutorial PHP by
www.w3schools.com Organized
Page 176 of
Tutorial PHP by
www.w3schools.com Organized
highlighted
ignore_user_abort() Sets whether a remote client can abort the 3
running of a script
pack() Packs data into a binary string 3
php_check_syntax() Deprecated in PHP 5.0.5 5
php_strip_whitespace() Returns the source code of a file with PHP 5
comments and whitespace removed
show_source() Alias of highlight_file() 4
sleep() Delays code execution for a number of seconds 3
time_nanosleep() Delays code execution for a number of seconds 5
and nanoseconds
time_sleep_until() Delays code execution until a specified time 5
uniqid() Generates a unique ID 3
unpack() Unpacks data from a binary string 3
usleep() Delays code execution for a number of 3
microseconds
PHP Misc. Constants
PHP: indicates the earliest version of PHP that supports the constant.
Page 177 of
Tutorial PHP by
www.w3schools.com Organized
Note: For full functionality of MySQL versions greater than 4.1., use the
MySQLi extension instead. If you would like to install both the mysql
extension and the mysqli extension you should use the same client library to
avoid any conflicts.
PHP 5+: MySQL and the MySQL library is not enabled by default. Use the
--with-mysql=DIR configure option to include MySQL support and
download headers and libraries from www.mysql.com.
To enable any PHP extension, the PHP extension_dir setting (in the php.ini
file) should be set to the directory where the PHP extensions are located. An
example extension_dir value is c:\php\ext.
Note: If you get the following error when starting the web server: "Unable to
load dynamic library './php_mysql.dll'", this is because php_mysql.dll or
libmysql.dll cannot be found by the system.
Runtime Configuration
Page 178 of
Tutorial PHP by
www.w3schools.com Organized
Resource Types
There are two resource types used in the MySQL extension. The first one is
the link_identifier for a database connection, the second is a resource which
holds the result of a query.
Page 180 of
Tutorial PHP by
www.w3schools.com Organized
mysql_real_escape_string() instead
mysql_fetch_array() Returns a row from a recordset as an 3
associative array and/or a numeric array
mysql_fetch_assoc() Returns a row from a recordset as an 4
associative array
mysql_fetch_field() Returns column info from a recordset as an 3
object
mysql_fetch_lengths() Returns the length of the contents of each 3
field in a result row
mysql_fetch_object() Returns a row from a recordset as an object 3
mysql_fetch_row() Returns a row from a recordset as a 3
numeric array
mysql_field_flags() Returns the flags associated with a field in 3
a recordset
mysql_field_len() Returns the maximum length of a field in a 3
recordset
mysql_field_name() Returns the name of a field in a recordset 3
mysql_field_seek() Moves the result pointer to a specified field 3
mysql_field_table() Returns the name of the table the specified 3
field is in
mysql_field_type() Returns the type of a field in a recordset 3
mysql_free_result() Free result memory 3
mysql_get_client_info() Returns MySQL client info 4
mysql_get_host_info() Returns MySQL host info 4
mysql_get_proto_info() Returns MySQL protocol info 4
mysql_get_server_info() Returns MySQL server info 4
mysql_info() Returns information about the last query 4
mysql_insert_id() Returns the AUTO_INCREMENT ID 3
generated from the previous INSERT
operation
mysql_list_dbs() Lists available databases on a MySQL 3
server
mysql_list_fields() Deprecated. Lists MySQL table fields. Use 3
mysql_query() instead
mysql_list_processes() Lists MySQL processes 4
Page 181 of
Tutorial PHP by
www.w3schools.com Organized
PHP: indicates the earliest version of PHP that supports the constant.
Page 182 of
Tutorial PHP by
www.w3schools.com Organized
Page 183 of
Tutorial PHP by
www.w3schools.com Organized
Page 184 of
Tutorial PHP by
www.w3schools.com Organized
PHP: indicates the earliest version of PHP that supports the function.
Page 185 of
Tutorial PHP by
www.w3schools.com Organized
to characters
htmlspecialchars() Converts some predefined characters to 3
HTML entities
implode() Returns a string from the elements of an 3
array
join() Alias of implode() 3
levenshtein() Returns the Levenshtein distance between 3
two strings
localeconv() Returns locale numeric and monetary 4
formatting information
ltrim() Strips whitespace from the left side of a 3
string
md5() Calculates the MD5 hash of a string 3
md5_file() Calculates the MD5 hash of a file 4
metaphone() Calculates the metaphone key of a string 4
money_format() Returns a string formatted as a currency 4
string
nl_langinfo() Returns specific local information 4
nl2br() Inserts HTML line breaks in front of each 3
newline in a string
number_format() Formats a number with grouped thousands 3
ord() Returns the ASCII value of the first 3
character of a string
parse_str() Parses a query string into variables 3
print() Outputs a string 3
printf() Outputs a formatted string 3
quoted_printable_decode() Decodes a quoted-printable string 3
quotemeta() Quotes meta characters 3
rtrim() Strips whitespace from the right side of a 3
string
setlocale() Sets locale information 3
sha1() Calculates the SHA-1 hash of a string 4
sha1_file() Calculates the SHA-1 hash of a file 4
similar_text() Calculates the similarity between two 3
Page 186 of
Tutorial PHP by
www.w3schools.com Organized
soundex()
strings
sprintf()
Calculates the soundex key of a string 3
sscanf()
Writes a formatted string to a variable 3
Parses input from a string according to a 4
format
str_ireplace() Replaces some characters in a string (case-
5 insensitive)
str_pad() Pads a string to a new length 4
str_repeat() Repeats a string a specified number of 4
times
str_replace() Replaces some characters in a string (case-
3 sensitive)
str_rot13() Performs the ROT13 encoding on a string 4
str_shuffle() Randomly shuffles all characters in a 4
string
str_split() Splits a string into an array 5
str_word_count() Count the number of words in a string 4
strcasecmp() Compares two strings (case-insensitive) 3
strchr() Finds the first occurrence of a string inside
3 another string (alias of strstr())
strcmp() Compares two strings (case-sensitive) 3
strcoll() Locale based string comparison 4
strcspn() Returns the number of characters found in 3
a string before any part of some specified
characters are found
strip_tags() Strips HTML and PHP tags from a string 3
stripcslashes() Unquotes a string quoted with 4
addcslashes()
stripslashes() Unquotes a string quoted with 3
addslashes()
stripos() stristr()
Page 187 of
Tutorial PHP by
www.w3schools.com Organized
R insensitive)
et Finds the first occurrence of a string inside
ur 3 another string (case-insensitive)
ns
th
e
p
os
iti
o
n
of
th
e
fir
st
oc
cu
rr
en
ce
5
of
a
st
ri
n
g
in
si
de
an
ot
he
r
st
ri
n
g
(c
as
e-
Page 188 of
Tutorial PHP by
www.w3schools.com Organized
strlen()
Returns the length of a string 3
strnatcasecmp()
Compares two strings using a "natural 4
order" algorithm (case-insensitive)
strnatcmp()
Compares two strings using a "natural 4
order" algorithm (case-sensitive)
strncasecmp()
String comparison of the first n characters 4
(case-insensitive)
strncmp()
String comparison of the first n characters 4
(case-sensitive)
strpbrk()
Searches a string for any of a set of 5
characters
strpos() Returns the position of the first occurrence 3
of a string inside another string (case-
sensitive)
strrchr() Finds the last occurrence of a string inside 3
another string
strrev() Reverses a string 3
strripos() Finds the position of the last occurrence of 5
a string inside another string (case-
insensitive)
strrpos() Finds the position of the last occurrence of 3
a string inside another string (case-
sensitive)
strspn() Returns the number of characters found in 3
a string that contains only characters from
a specified charlist
strstr() Finds the first occurrence of a string inside
3 another string (case-sensitive)
strtok() Splits a string into smaller strings 3
strtolower() Converts a string to lowercase letters 3
strtoupper() Converts a string to uppercase letters 3
strtr() Translates certain characters in a string 3
substr() Returns a part of a string 3
substr_compare() Compares two strings from a specified 5
start position (binary safe and optionally
Page 189 of
Tutorial PHP by
www.w3schools.com Organized
case-
sensiti
ve)
Page 190 of
Tutorial PHP by
www.w3schools.com Organized
PHP: indicates the earliest version of PHP that supports the constant.
Page 191 of
Tutorial PHP by
www.w3schools.com Organized
HTML_SPECIALCHARS
HTML_ENTITIES
ENT_COMPAT
ENT_QUOTES
ENT_NOQUOTES
CHAR_MAX
LC_CTYPE
LC_NUMERIC
LC_TIME
LC_COLLATE
LC_MONETARY
LC_ALL
LC_MESSAGES
STR_PAD_LEFT
STR_PAD_RIGHT
STR_PAD_BOTH
Page 192 of
Tutorial PHP by
www.w3schools.com Organized
The XML parser functions lets you create XML parsers and define handlers
for XML events.
Installation
The XML functions are part of the PHP core. There is no installation needed
to use these functions.
PHP XML Parser Functions
PHP: indicates the earliest version of PHP that supports the function.
Page 193 of
Tutorial PHP by
www.w3schools.com Organized
namespace support
Page 194 of
Tutorial PHP by
www.w3schools.com Organized
xml_parser_create()
Create an XML parser 3
xml_parser_free()
Free an XML parser 3
xml_parser_get_option()
Get options from an XML 3
parser
xml_parser_set_option()
Set options in an XML 3
parser
xml_set_character_data_handler()
Set handler function for 3
character data
xml_set_default_handler()
Set default handler function 3
xml_set_element_handler() Set handler function for start 3
and end element of elements
xml_set_end_namespace_decl_handler() Set handler function for the 4
end of namespace
declarations
xml_set_external_entity_ref_handler() Set handler function for 3
external entities
xml_set_notation_decl_handler() Set handler function for 3
notation declarations
xml_set_object() Use XML Parser within an 4
object
xml_set_processing_instruction_handler() Set handler function for 3
processing instruction
xml_set_start_namespace_decl_handler() Set handler function for the 4
start of namespace
declarations
xml_set_unparsed_entity_decl_handler() Set handler function for 3
unparsed entity declarations
XML_ERROR_NO_ELEMENTS (integer)
XML_ERROR_INVALID_TOKEN (integer)
XML_ERROR_UNCLOSED_TOKEN (integer)
XML_ERROR_PARTIAL_CHAR (integer)
XML_ERROR_TAG_MISMATCH (integer)
XML_ERROR_DUPLICATE_ATTRIBUTE (integer)
XML_ERROR_JUNK_AFTER_DOC_ELEMENT (integer)
XML_ERROR_PARAM_ENTITY_REF (integer)
XML_ERROR_UNDEFINED_ENTITY (integer)
XML_ERROR_RECURSIVE_ENTITY_REF (integer)
XML_ERROR_ASYNC_ENTITY (integer)
XML_ERROR_BAD_CHAR_REF (integer)
XML_ERROR_BINARY_ENTITY_REF (integer)
XML_ERROR_ATTRIBUTE_EXTERNAL_ENTITY_REF (integer)
XML_ERROR_MISPLACED_XML_PI (integer)
XML_ERROR_UNKNOWN_ENCODING (integer)
XML_ERROR_INCORRECT_ENCODING (integer)
XML_ERROR_UNCLOSED_CDATA_SECTION (integer)
XML_ERROR_EXTERNAL_ENTITY_HANDLING (integer)
XML_OPTION_CASE_FOLDING (integer)
XML_OPTION_TARGET_ENCODING (integer)
XML_OPTION_SKIP_TAGSTART (integer)
XML_OPTION_SKIP_WHITE (integer)
Page 196 of
Tutorial PHP by
www.w3schools.com Organized
Installation
For the Zip file functions to work on your server, these libraries must be
installed:
The ZZIPlib library by Guido Draheim: Download the
ZZIPlib library
The Zip PELC extension: Download the Zip PELC extension
PHP 5+: Zip functions and the Zip library is not enabled by default and
must be downloaded from the links above. Use the --with-zip=DIR configure
option to include Zip support.
PHP 5+: Zip functions is not enabled by default, so the php_zip.dll and
the ZZIPlib library must be downloaded from the link above. php_zip.dll
must be enabled inside of php.ini.
To enable any PHP extension, the PHP extension_dir setting (in the php.ini
file) should be set to the directory where the PHP extensions are located. An
example extension_dir value is c:\php\ext.
PHP Zip File Functions
PHP: indicates the earliest version of PHP that supports the function.
Page 197 of
Tutorial PHP by
www.w3schools.com Organized
reading
zip_entry_read() Reads from an open entry in the ZIP 4
file
zip_open() Opens a ZIP file 4
zip_read() Reads the next entry in a ZIP file 4
PHP Zip File Constants
NONE
Page 198 of