A simple tutorial
Here we would like to show the very basics of PHP in a short, simple
tutorial. This text only deals with dynamic web page creation with
PHP, though PHP is not only capable of creating web pages. See
the section titled What can PHP
do for more information.
PHP-enabled web pages are treated just like regular HTML pages and
you can create and edit them the same way you normally create
regular HTML pages.
What do I need?
In this tutorial we assume that your server has activated support
for PHP and that all files ending in .php
are handled by PHP. On most servers, this is the default extension
for PHP files, but ask your server administrator to be sure. If
your server supports PHP, then you do not need to do anything. Just
create your .php files, put them in your
web directory and the server will automatically parse them for you.
There is no need to compile anything nor do you need to install
any extra tools. Think of these PHP-enabled files as simple HTML
files with a whole new family of magical tags that let you do all
sorts of things.
Let us say you want to save precious bandwidth and develop locally.
In this case, you will want to install a web server, such as
Apache, and of course
PHP. You will most likely
want to install a database as well, such as
MySQL.
You can either install these individually or choose a simpler way. Our
manual has installation instructions for
PHP (assuming you already have some web server set up). If
you have problems with installing PHP yourself, we would suggest you ask
your questions on our installation
mailing list. If you choose to go on the simpler route, then
locate a pre-configured package
for your operating system, which automatically installs all of these
with just a few mouse clicks. It is easy to setup a web server with PHP
support on any operating system, including MacOSX, Linux and Windows.
On Linux, you may find rpmfind and
PBone helpful for
locating RPMs. You may also want to visit apt-get to find packages for Debian.
Your first PHP-enabled page
Create a file named hello.php and put it
in your web server's root directory (DOCUMENT_ROOT)
with the following content:
Our first PHP script: hello.php
<![CDATA[
]]>
Use your browser to access the file with your web server's URL, ending
with the /hello.php file reference. When developing locally this
URL will be something like http://localhost/hello.php
or http://127.0.0.1/hello.php but this depends on the
web server's configuration. If everything is configured correctly, this
file will be parsed by PHP and you will see the "Hello World" output displayed
in your browser.
PHP can be embedded within a normal HTML web page. That means inside your HTML document
you can write the PHP statements, as demonstrated in the following example:
<![CDATA[
PHP Test
Hello World'; ?>
]]>
This will result in the following output:
<![CDATA[
PHP Test
Hello World
]]>
This program is extremely simple and you really did not need to use
PHP to create a page like this. All it does is display:
Hello World using the PHP echo
statement. Note that the file does not need to be executable
or special in any way. The server finds out that this file needs to be interpreted
by PHP because you used the ".php" extension, which the server is configured
to pass on to PHP. Think of this as a normal HTML file which happens to have
a set of special tags available to you that do a lot of interesting things.
If you tried this example and it did not output anything, it prompted
for download, or you see the whole file as text, chances are that the
server you are on does not have PHP enabled, or is not configured properly.
Ask your administrator to enable it for you using the
Installation chapter
of the manual. If you are developing locally, also read the
installation chapter to make sure everything is configured
properly. Make sure that you access the file via http with the server
providing you the output. If you just call up the file from your file
system, then it will not be parsed by PHP. If the problems persist anyway,
do not hesitate to use one of the many
PHP support options.
The point of the example is to show the special PHP tag format.
In this example we used <?php to indicate the
start of a PHP tag. Then we put the PHP statement and left PHP mode by
adding the closing tag, ?>. You may jump in
and out of PHP mode in an HTML file like this anywhere you want. For more
details, read the manual section on the
basic PHP syntax.
A Note on Line Feeds
Line feeds have little meaning in HTML, however it is still a good idea
to make your HTML look nice and clean by putting line feeds in. A
linefeed that follows immediately after a closing
?> will be removed by PHP. This can be extremely
useful when you are putting in many blocks of PHP or include files
containing PHP that aren't supposed to output anything. At the same time
it can be a bit confusing. You can put a space after the closing
?> to force a space and a line feed to be output,
or you can put an explicit line feed in the last echo/print from within
your PHP block.
A Note on Text Editors
There are many text editors and Integrated Development Environments (IDEs)
that you can use to create, edit and manage PHP files. A partial list of
these tools is maintained at PHP Editors
List. If you wish to recommend an editor, please visit the above
page and ask the page maintainer to add the editor to the list. Having
an editor with syntax highlighting can be helpful.
A Note on Word Processors
Word processors such as StarOffice Writer, Microsoft Word and Abiword are
not optimal for editing PHP files. If you wish to use one for this
test script, you must ensure that you save the file as plain
text or PHP will not be able to read and execute the script.
Now that you have successfully created a working PHP script, it is
time to create the most famous PHP script! Make a call to the
phpinfo function and you will see a lot of useful
information about your system and setup such as available
predefined variables,
loaded PHP modules, and configuration
settings. Take some time and review this important information.
Get system information from PHP
<![CDATA[
]]>
Something Useful
Let us do something more useful now. We are going to check
what sort of browser the visitor is using.
For that, we check the user agent string the browser
sends as part of the HTTP request. This information is stored in a variable. Variables always start
with a dollar-sign in PHP. The variable we are interested in right now
is $_SERVER['HTTP_USER_AGENT'].
$_SERVER is a
special reserved PHP variable that contains all web server information.
It is known as a superglobal. See the related manual page on
superglobals
for more information.
To display this variable, you can simply do:
Printing a variable (Array element)
<![CDATA[
]]>
A sample output of this script may be:
<![CDATA[
Mozilla/5.0 (Linux) Firefox/112.0
]]>
There are many types of
variables available in PHP. In the above example we printed an element
from an Array variable.
Arrays can be very useful.
$_SERVER is just one variable that PHP automatically
makes available to you. A list can be seen in the
Reserved Variables section
of the manual or you can get a complete list of them by looking at
the output of the phpinfo function used in the
example in the previous section.
You can put multiple PHP statements inside a PHP tag and create
little blocks of code that do more than just a single echo.
For example, if you want to check for Firefox you
can do this:
Example using control
structures and functions
<![CDATA[
]]>
A sample output of this script may be:
<![CDATA[
You are using Firefox.
]]>
Here we introduce a couple of new concepts. We have an
if statement.
If you are familiar with the basic syntax used by the C
language, this should look logical to you. Otherwise, you
should probably pick up an introductory PHP book and read the first
couple of chapters, or read the Language
Reference part of the manual.
The second concept we introduced was the str_contains
function call. str_contains is a function built into
PHP which determines if a given string contains another string. In this case we are
looking for 'Firefox' (so-called needle) inside
$_SERVER['HTTP_USER_AGENT'] (so-called haystack). If
the needle is found inside the haystack, the function returns true. Otherwise, it
returns &false;. If it returns &true;, the if expression evaluates to &true;
and the code within its {braces} is executed. Otherwise, the code is not
run. Feel free to create similar examples,
with if,
else, and other
functions such as strtoupper and
strlen. Each related manual page contains examples
too. If you are unsure how to use functions, you will want to read both
the manual page on how to read a
function definition and the section about
PHP functions.
We can take this a step further and show how you can jump in and out
of PHP mode even in the middle of a PHP block:
Mixing both HTML and PHP modes
<![CDATA[
str_contains() returned true
You are using Firefox
str_contains() returned false
You are not using Firefox
]]>
A sample output of this script may be:
<![CDATA[
str_contains() returned true
You are using Firefox
]]>
Instead of using a PHP echo statement to output something, we jumped out
of PHP mode and just sent straight HTML. The important and powerful point
to note here is that the logical flow of the script remains intact. Only
one of the HTML blocks will end up getting sent to the viewer depending on
the result of str_contains. In other words, it depends on
whether the string Firefox was found or not.
Dealing with Forms
One of the most powerful features of PHP is the way it handles HTML
forms. The basic concept that is important to understand is that any
form element will automatically be available to your PHP
scripts. Please read the manual section on
Variables from external
sources for more information and examples on using forms
with PHP. Here is an example HTML form:
A simple HTML form
<![CDATA[
]]>
There is nothing special about this form. It is a straight HTML form
with no special tags of any kind. When the user fills in this form
and hits the submit button, the action.php page
is called. In this file you would write something like this:
Printing data from our form
<![CDATA[
Hi .
You are years old.
]]>
A sample output of this script may be:
<![CDATA[
Hi Joe. You are 22 years old.
]]>
Apart from the htmlspecialchars and
(int) parts, it should be obvious what this does.
htmlspecialchars makes sure any characters that are
special in html are properly encoded so people can't inject HTML tags
or Javascript into your page. For the age field, since we know it is a
number, we can just convert
it to an int which will automatically get rid of any
stray characters. You can also have PHP do this for you automatically by
using the filter extension.
The $_POST['name'] and $_POST['age']
variables are automatically set for you by PHP. Earlier we
used the $_SERVER superglobal; above we just
introduced the $_POST
superglobal which contains all POST data. Notice how the
method of our form is POST. If we used the
method GET then our form information would live in
the $_GET superglobal instead.
You may also use the $_REQUEST
superglobal, if you do not care about the source of your request data. It
contains the merged information of GET, POST and COOKIE data.
What's next?
With your new knowledge you should be able to understand most of
the manual and also the various example scripts available in the
example archives.
To view various slide presentations that show more of what PHP can do,
see the PHP Conference Material Site:
&url.php.talks;