PHP seems very much in vogue now - with most web hosts providing support for it. For those who
have only vaguely heard of it and are not too sure what it is, this article discusses PHP and
informally compares writing PHP scripts with writing CGI scripts in Perl.
PHP is a free server side scripting language. It can be built into web servers like Apache and
you can use it to generate your pages dynamically. You will probably use it in situations you
would have otherwise used a Perl CGI script for. For example, the PHP feedback form generated by
Feedback Form Wizard can be used by visitors to your website to send feedback to you.
1. The Language
probably be a piece of cake. In fact, you probably can get started writing your scripts
It uses typeless variables the way Perl does, prefixed with a "$" sign and holding any
data type you wish. For example, $whatever can be a variable that you can use to contain
strings, numbers, whatever. If $whatever contained a number, you can increment its value using
$whatever += 1 ;
$whatever = $whatever + 1 ;
2. Built-in Facilities
Unlike Perl, which is a general purpose scripting language that you can use for a wide variety
of purposes (and not just generating web pages), PHP was designed from the ground
up to be used for scripting web pages. As a result, it has lots of facilities built into that
you may have to write yourself or use some pre-written module if you were using Perl.
For example, do you want to send email to yourself from a form on the web page? In Perl,
one common way to do this is to use code like the following:
open ( MAIL,"|/usr/sbin/sendmail -t");
print MAIL "To: myself\@mydomain.com\n" ;
print MAIL "From: visitor\@hisdomain.com\n" ;
print MAIL "Subject: Comments from Web Form\n\n" ;
print MAIL $mainmessage ;
close ( MAIL ) ;
In PHP, the same thing would be coded as follows:
mail ( "email@example.com", "Comments from Web Form",
$mainmessage, "From: firstname.lastname@example.org" );
Nifty, huh? The same goes for other facilities like sending or retrieving a document via
HTTP or FTP, etc. Since PHP was specially designed for a website, the facilities that
web designers typically want in a scripting language are built into it.
Another convenience is its handling of form input. Take for example a form with a field like:
<input type="text" name="dateofbirth" />
The data submitted for that field is made available to your script in the array variable
$_REQUEST['dateofbirth']. You can assign its contents to any variable you like, or use
it directly. There's no need to parse form inputs or the like. All fields in the form
are automatically converted to variables that you can access.
Accessing databases is just as easy. There are built-in facilities in PHP to access MySQL,
MSQL, Dbase, Oracle, InterBase, and so on (the list is very long). Need to MIME encode your
message? There's a function to do it for you too.
There're many more features. I obviously can't run through the entire list - it would take a
whole book to be exhaustive. This is just to whet your appetite.
3. Generating web pages
By default anything you type in your PHP document is given verbatim to the web browser.
So a simple PHP script might look like the following:
<head><title>My First PHP Script</title></head>
<h1>My First PHP Script</h1>
Welcome, Internet user from IP address
<?echo $_SERVER['REMOTE_ADDR']?>. Hope you like my first
Notice that it looks exactly like a web page, except for the <? ... ?> bit,
which encloses the PHP script. In this case, all we want is for the script to output
the visitor's IP address to the page, hence we use the "echo" function. The web server's
environment variable REMOTE_ADDR is automatically made available to the PHP script via an
array variable $_SERVER['REMOTE_ADDR']. In fact, all server environment variables are
available to the PHP script in the $_SERVER array variable. So, for example, the name of your
visitor's browser is available in $_SERVER['HTTP_USER_AGENT'].
There are many ways to embed your PHP script into your page, or to design your page itself.
But you've probably already got the general idea. As I said, PHP was designed for web pages, so
the idea of output to the server is built into its design. It makes writing such scripts a
very pleasant task.
4. What's the Catch?
While I obviously enjoy using PHP as my web scripting language, I do not claim that it is the
perfect solution for all your website needs.
You might want to consider the following prior to committing yourself ot it. The list,
incidentally, is not exhaustive.
- Not all web hosts provide PHP facilities. Most do nowadays, however, so if yours does
not, it's simply a matter of changing web hosts to one that does.
- Like all web scripting languages (Perl included), debugging the script can be a
pain in the neck unless you download and install your own copy of PHP. Otherwise
you might spend many hours online trying to test and debug your script (unless of course it's a
trivial script). Instructions for how to install it on Windows can be found in my article
"How to Install PHP on Windows"
Incidentally, you can also operate your own Apache web server at home, so as to mimic the
entire environment of your actual site (or as close to it as necessary). You can
read all about setting up your own Apache, if you have a Windows machine, from my other article
"How to Install Your Own Apache Server on Windows"
Of course if you have a Linux box around, you're probably all set. Just dig up your
installation CDROMs and install the server and PHP module from there if you've not already
done so. (Most modern Linux distributions come bundled with the Apache server and
PHP Apache module.)
- It is not a general purpose language. While it has many facilities specifically catered
towards web programming, it is not Perl (or C or C++ or Java). I personally however
find PHP more than adequate for my web programming needs.
- It probably cannot beat Perl in terms of convenient and efficient text crunching.
Let's face it: Perl is designed with crunching text in mind and has facilities for
handling strings and the like that put most other languages to shame. However, PHP does have
adequate facilities for most web purposes.