PHP Tizaq
PHP Tizaq
Before we talk about PHP's syntax, let us first define what syntax is referring to.
PHP Code:
<?php
?>
<?
?>
Display:
Hello World!
If you save this file (e.g. helloworld.php) and place it on PHP enabled server and load it up in
your web browser, then you should see "Hello World!" displayed. If not, please check that you
followed our example correctly.
We used the PHP command echo to write "Hello World!" and we will be talking in greater depth
about how echo is special later on in this tutorial.
The Semicolon!
As you may or may not have noticed in the above example, there was a semicolon after the line
of PHP code. The semicolon signifies the end of a PHP statement and should never be forgotten.
For example, if we repeated our "Hello World!" code several times, then we would need to place
a semicolon at the end of each statement.
Display:
Hello World! Hello World! Hello World! Hello World! Hello World!
White Space
As with HTML, whitespace is ignored between PHP statements. This means it is OK to have one
line of PHP code, then 20 lines of blank space before the next line of PHP code. You can also
press tab to indent your code and the PHP interpreter will ignore those spaces as well.
?>
</body>
</html>
Display:
Hello World!Hello World!
PHP - Variables
If you have never had any programming, Algebra, or scripting experience, then the concept of
variables might be a new concept to you. A detailed explanation of variables is beyond the scope
of this tutorial, but we've included a refresher crash course to guide you.
A variable is a means of storing a value, such as text string "Hello World!" or the integer value 4.
A variable can then be reused throughout your code, instead of having to type out the actual
value over and over again. In PHP you define a variable with the following form:
$variable_name = Value;
If you forget that dollar sign at the beginning, it will not work. This is a common mistake for
new PHP programmers!
Note: Also, variable names are case-sensitive, so use the exact same capitalization when using a
variable. The variables $a_number and $A_number are different variables in PHP's eyes.
PHP Code:
<?php
$hello = "Hello World!";
$a_number = 4;
$anotherNumber = 8;
?>
Note for programmers: PHP does not require variables to be declared before being initialized.
Variables with more than one word should be separated with underscores. $my_variable
Variables with more than one word can also be distinguished with capitalization. $myVariable
PHP - Echo
As you saw in the previous lesson, the PHP command echo is a means of outputting text to the
web browser. Throughout your PHP career you will be using the echo command more than any
other. So let's give it a solid perusal!
Outputting a String
To output a string, like we have done in previous lessons, use PHP echo. You can place either a
string variable or you can use quotes, like we do below, to create a string that the echo function
will output.
PHP Code:
<?php
$myString = "Hello!";
echo $myString;
echo "<h5>I love using PHP!</h5>";
?>
Display:
Hello!
In the above example we output "Hello!" without a hitch. The text we are outputting is being sent
to the user in the form of a web page, so it is important that we use proper HTML syntax!
In our second echo statement we use echo to write a valid Header 5 HTML statement. To do this
we simply put the <h5> at the beginning of the string and closed it at the end of the string. Just
because you're using PHP to make web pages does not mean you can forget about HTML
syntax!
PHP Code:
<?php
// This won't work because of the quotes around specialH5!
echo "<h5 class="specialH5">I love using PHP!</h5>";
If you want to output a string that includes quotations, either use an apostrophe ( ' ) or escape the
quotations by placing a backslash in front of it ( \" ). The backslash will tell PHP that you want
the quotation to be used within the string and NOT to be used to end echo's string.
Echoing Variables
Echoing variables is very easy. The PHP developers put in some extra work to make the
common task of echoing all variables nearly foolproof! No quotations are required, even if the
variable does not hold a string. Below is the correct format for echoing a variable.
PHP Code:
<?php
$my_string = "Hello Bob. My name is: ";
$my_number = 4;
$my_letter = a;
echo $my_string;
echo $my_number;
echo $my_letter;
?>
Display:
Hello Bob. My name is: 4a
PHP Code:
<?php
$my_string = "Hello Bob. My name is: ";
echo "$my_string Bobettta <br />";
echo "Hi, I'm Bob. Who are you? $my_string <br />";
echo "Hi, I'm Bob. Who are you? $my_string Bobetta";
?>
Display:
Hello Bob. My name is: Bobetta
Hi, I'm Bob. Who are you? Hello Bob. My name is:
Hi, I'm Bob. Who are you? Hello Bob. My name is: Bobetta
By placing variables inside a string you can save yourself some time and make your code easier
to read, though it does take some getting used to. Remember to use double-quotes, single-quotes
will not grab the value of the string. Single-quotes will just output the variable name to the
string, like )$my_string), rather than (Hello Bob. My name is: ).
PHP - Strings
In the last lesson, PHP Echo, we used strings a bit, but didn't talk about them in depth.
Throughout your PHP career you will be using strings a great deal, so it is important to have a
basic understanding of PHP strings.
PHP Code:
$my_string = "Tizag - Unlock your potential!";
echo "Tizag - Unlock your potential!";
echo $my_string;
In the above example the first string will be stored into the variable $my_string, while the second
string will be used in the echo and not be stored. Remember to save your strings into variables if
you plan on using them more than once! Below is the output from our example code. They look
identical just as we thought.
Display:
Tizag - Unlock your potential! Tizag - Unlock your potential!
PHP Code:
$my_string = 'Tizag - Unlock your potential!';
echo 'Tizag - Unlock your potential!';
echo $my_string;
If you want to use a single-quote within the string you have to escape the single-quote with a
backslash \ . Like this: \' !
PHP Code:
echo 'Tizag - It\'s Neat!';
PHP Code:
$newline = "A newline is \n";
$return = "A carriage return is \r";
$tab = "A tab is \t";
$dollar = "A dollar sign is \$";
$doublequote = "A double-quote is \"";
Note: If you try to escape a character that doesn't need to be, such as an apostrophe, then the
backslash will show up when you output the string.
These escaped characters are not very useful for outputting to a web page because HTML ignore
extra white space. A tab, newline, and carriage return are all examples of extra (ignorable) white
space. However, when writing to a file that may be read by human eyes these escaped characters
are a valuable tool!
PHP Code:
$my_string = <<<TEST
Tizag.com
Webmaster Tutorials
Unlock your potential!
TEST;
echo $my_string;
There are a few very important things to remember when using heredoc.
Use <<< and some identifier that you choose to begin the heredoc. In this example we chose
TEST as our identifier.
Repeat the identifier followed by a semicolon to end the heredoc string creation. In this example
that was TEST;
The closing sequence TEST; must occur on a line by itself and cannot be indented!
Another thing to note is that when you output this multi-line string to a web page, it will not span
multiple lines because we did not have any <br /> tags contained inside our string! Here is the
output made from the code above.
Display:
Tizag.com Webmaster Tutorials Unlock your potential!
Once again, take great care in following the heredoc creation guidelines to avoid any headaches.
PHP - Operators
In all programming languages, operators are used to manipulate or perform operations on
variables and values. You have already seen the string concatenation operator "." in the Echo
Lesson and the assignment operator "=" in pretty much every PHP example so far.
There are many operators used in PHP, so we have separated them into the following categories
to make it easier to learn them all.
Assignment Operators
Arithmetic Operators
Comparison Operators
String Operators
Assignment Operators
Assignment operators are used to set a variable equal to a value or set a variable to another
variable's value. Such an assignment of value is done with the "=", or equal character. Example:
$my_var = 4;
$another_var = $my_var;
Now both $my_var and $another_var contain the value 4. Assignments can also be used in
conjunction with arithmetic operators.
Arithmetic Operators
Operator English Example
+ Addition 2+4
- Subtraction 6-2
* Multiplication 5 * 3
/ Division 15 / 3
% Modulus 43 % 10
PHP Code:
$addition = 2 + 4;
$subtraction = 6 - 2;
$multiplication = 5 * 3;
$division = 15 / 3;
$modulus = 5 % 2;
echo "Perform addition: 2 + 4 = ".$addition."<br />";
echo "Perform subtraction: 6 - 2 = ".$subtraction."<br />";
echo "Perform multiplication: 5 * 3 = ".$multiplication."<br />";
echo "Perform division: 15 / 3 = ".$division."<br />";
echo "Perform modulus: 5 % 2 = " . $modulus
. ". Modulus is the remainder after the division operation has been
performed.
In this case it was 5 / 2, which has a remainder of 1.";
Display:
Perform addition: 2 + 4 = 6
Perform subtraction: 6 - 2 = 4
Perform multiplication: 5 * 3 = 15
Perform division: 15 / 3 = 5
Perform modulus: 5 % 2 = 1. Modulus is the remainder after the division operation has been performed.
In this case it was 5 / 2, which has a remainder of 1.
Comparison Operators
Comparisons are used to check the relationship between variables and/or values. If you would
like to see a simple example of a comparison operator in action, check out our If Statement
Lesson. Comparison operators are used inside conditional statements and evaluate to either true
or false. Here are the most important comparison operators of PHP.
Assume: $x = 4 and $y = 5;
== Equal To $x == $y false
String Operators
As we have already seen in the Echo Lesson, the period "." is used to add two strings together, or
more technically, the period is the concatenation operator for strings.
PHP Code:
$a_string = "Hello";
$another_string = " Billy";
$new_string = $a_string . $another_string;
echo $new_string . "!";
Display:
Hello Billy!
$counter = $counter + 1;
$counter += 1;
This combination assignment/arithmetic operator would accomplish the same task. The
downside to this combination operator is that it reduces code readability to those programmers
who are not used to such an operator. Here are some examples of other common shorthand
operators. In general, "+=" and "-=" are the most widely used combination operators.
+= Plus Equals $x += 2; $x = $x + 2;
-= Minus Equals $x -= 4; $x = $x - 4;
*= Multiply Equals $x *= 3; $x = $x * 3;
/= Divide Equals $x /= 2; $x = $x / 2;
%= Modulo Equals $x %= 5; $x = $x % 5;
In addition to this "shorterhand" technique, you can specify whether you want to increment
before the line of code is being executed or after the line has executed. Our PHP code below will
display the difference.
PHP Code:
$x = 4;
echo "The value of x with post-plusplus = " . $x++;
echo "<br /> The value of x after the post-plusplus is " . $x;
$x = 4;
echo "<br />The value of x with with pre-plusplus = " . ++$x;
echo "<br /> The value of x after the pre-plusplus is " . $x;
Display:
The value of x with post-plusplus = 4
The value of x after the post-plusplus is = 5
The value of x with with pre-plusplus = 5
The value of x after the pre-plusplus is = 5
As you can see the value of $x++ is not reflected in the echoed text because the variable is not
incremented until after the line of code is executed. However, with the pre-increment "++$x" the
variable does reflect the addition immediately.
In HTML a comment's main purpose is to serve as a note to you, the web developer or to others
who may view your website's source code. However, PHP's comments are different in that they
will not be displayed to your visitors. The only way to view PHP comments is to open the PHP
file for editing. This makes PHP comments only useful to PHP programmers.
In case you forgot what an HTML comment looked like, see our example below.
HTML Code:
<!-- This is an HTML Comment -->
PHP Comment Syntax: Single Line Comment
While there is only one type of comment in HTML, PHP has two types. The first type we will
discuss is the single line comment. The single line comment tells the interpreter to ignore
everything that occurs on that line to the right of the comment. To do a single line comment type
"//" or "#" and all text to the right will be ignored by PHP interpreter.
PHP Code:
<?php
echo "Hello World!"; // This will print out Hello World!
echo "<br />Psst...You can't see my PHP comments!"; // echo "nothing";
// echo "My name is Humperdinkle!";
# echo "I don't do anything either";
?>
Display:
Hello World!
Psst...You can't see my PHP comments!
Notice that a couple of our echo statements were not evaluated because we commented them out
with the single line comment. This type of line commenting is often used for quick notes about
complex and confusing code or to temporarily remove a line of PHP code.
PHP Code:
<?php
/* This Echo statement will print out my message to the
the place in which I reside on. In other words, the World. */
echo "Hello World!";
/* echo "My name is Humperdinkle!";
echo "No way! My name is Uber PHP Programmer!";
*/
?>
Display:
Hello World!
Let the comments permeate your code and you will be a happier PHPer in the future. Use single
line comments for quick notes about a tricky part in your code and use multiple line comments
when you need to describe something in greater depth than a simple note.
PHP Include
Without understanding much about the details of PHP, you can save yourself a great deal of time
with the use of the PHP include command. include takes a file name and simply inserts that file's
contents into the script that issued the include command.
Why is this a cool thing? Well, first of all, this means that you can type up a common header or
menu file that you want all your web pages to include. When you add a new page to your site,
instead of having to update the links on several web pages, you can simply change the Menu file.
An Include Example
Say we wanted to create a common menu file that all our pages will use. A common practice for
naming files that are to be included is to use the ".php" extension. Since we want to create a
common menu let's save it as "menu.php".
menu.php Code:
<html>
<body>
<a href="http://www.example.com/index.php">Home</a> -
<a href="http://www.example.com/about.php">About Us</a> -
<a href="http://www.example.com/links.php">Links</a> -
<a href="http://www.example.com/contact.php">Contact Us</a> <br />
Save the above file as "menu.php". Now create a new file, "index.php" in the same directory as
"menu.php". Here we will take advantage of the include command to add our common menu.
index.php Code:
<?php include("menu.php"); ?>
<p>This is my home page that uses a common menu to save me time when I add
new pages to my website!</p>
</body>
</html>
Display:
Home - About Us - Links - Contact Us
This is my home page that uses a common menu to save me time when I add new pages to my
website!
And we would do the same thing for "about.php", "links.php", and "contact.php". Just think how
terrible it would be if you had 15 or more pages with a common menu and you decided to add
another web page to that site. You would have to go in and manually edit every single file to add
this new page, but with include files you simply have to change "menu.php" and all your
problems are solved. Avoid such troublesome occasions with a simple include file.
The visitor would actually see all the HTML code as one long line of HTML code, because we
have not inserted any new line characters. We did some formatting above to make it easier to
read. We will be discussing new line characters later.
Include Recap
The include command simply takes all the text that exists in the specified file and copies it into
the file that uses the include command. Include is quite useful when you want to include the
same PHP, HTML, or text segment on multiple pages of a website. The include command is
used widely by PHP web developers. Like PHP Echo, include is not a function, but a language
construct.
The next lesson will talk about a slight variation of the include command: require. It is often best
to use the require command instead of the include command in your PHP Code. Read the next
lesson to find out why!
PHP Require
Just like the previous lesson, the require command is used to include a file into your PHP code.
However there is one huge difference between the two commands, though it might not seem that
big of a deal.
Require vs Include
When you include a file with the include command and PHP cannot find it you will see an error
message like the following:
PHP Code:
<?php
include("noFileExistsHere.php");
echo "Hello World!";
?>
Display:
Warning: main(noFileExistsHere.php): failed to open stream: No such file or directory in
/home/websiteName/FolderName/tizagScript.php on line 2 Warning: main(): Failed opening
'noFileExistsHere.php' for inclusion (include_path='.:/usr/lib/php:/usr/local/lib/php') in
/home/websiteName/FolderName/tizagScript.php on line 2
Hello World!
Notice that our echo statement is still executed, this is because a Warning does not prevent our
PHP script from running. On the other hand, if we did the same example but used the require
statement we would get something like the following example.
PHP Code:
<?php
require("noFileExistsHere.php");
echo "Hello World!";
?>
Display:
Warning: main(noFileExistsHere.php): failed to open stream: No such file or directory in
/home/websiteName/FolderName/tizagScript.php on line 2
Fatal error: main(): Failed opening required 'noFileExistsHere.php'
(include_path='.:/usr/lib/php:/usr/local/lib/php') in /home/websiteName/FolderName/tizagScript.php
on line 2
The echo statement was not executed because our script execution died after the require
command returned a fatal error! We recommend that you use require instead of include because
your scripts should not be executing if necessary files are missing or misnamed.
The If Statement
The PHP if statement is very similar to other programming languages use of the if statement, but
for those who are not familiar with it, picture the following:
Think about the decisions you make before you go to sleep. If you have something to do the next
day, say go to work, school, or an appointment, then you will set your alarm clock to wake you
up. Otherwise, you will sleep in as long as you like!
This simple kind of if/then statement is very common in every day life and also appears in
programming quite often. Whenever you want to make a decision given that something is true
(you have something to do tomorrow) and be sure that you take the appropriate action, you are
using an if/then relationship.
This idea of planning for future events is something you would never have had the opportunity of
doing if you had just stuck with HTML.
If Statement Example
The "Happy New Year" example would be a little difficult for you to do right now, so let us
instead start off with the basics of the if statement. The PHP if statement tests to see if a value is
true, and if it is a segment of code will be executed. See the example below for the form of a
PHP if statement.
PHP Code:
$my_name = "someguy";
if ( $my_name == "someguy" ) {
echo "Your name is someguy!<br />";
}
echo "Welcome to my homepage!";
Display:
Your name is someguy!
Welcome to my homepage!
Did you get that we were comparing the variable $my_name with "someguy" to see if they were
equal? In PHP you use the double equal sign (==) to compare values. Additionally, notice that
because the if statement turned out to be true, the code segment was executed, printing out "Your
name is someguy!". Let's go a bit more in-depth into this example to iron out the details.
The comparison between $my_name and "someguy" was done with a double equal sign "==",
not a single equals"="! A single equals is for assigning a value to a variable, while a double
equals is for checking if things are equal.
Translated into english the PHP statement ( $my_name == "someguy" ) is ( $my_name is equal
to "someguy" ).
A False If Statement
Let us now see what happens when a PHP if statement is not true, in other words, false. Say that
we changed the above example to:
PHP Code:
$my_name = "anotherguy";
if ( $my_name == "someguy" ) {
echo "Your name is someguy!<br />";
}
echo "Welcome to my homepage!";
Display:
Welcome to my homepage!
Here the variable contained the value "anotherguy", which is not equal to "someguy". The if
statement evaluated to false, so the code segment of the if statement was not executed. When
used properly, the if statement is a powerful tool to have in your programming arsenal!
If/Else Conditional Statment
Has someone ever told you, "if you work hard, then you will succeed"? And what happens if you
do not work hard? Well, you fail! This is an example of an if/else conditional statement.
How does this translate into something useful for PHP developers? Well consider this:
Someone comes to your website and you want to ask this visitor her name if it is her first time
coming to your site. With an if statement this is easy. Simply have a conditional statement to
check, "are you visiting for the first time". If the condition is true, then take them to the "Insert
Your Name" page, else let her view the website as normal because you have already asked her
for her name in the past.
If/Else an Example
Using these conditional statements can add a new layers of "cool" to your website. Here's the
basic form of an if/else statement in PHP.
PHP Code:
$number_three = 3;
if ( $number_three == 3 ) {
echo "The if statement evaluated to true";
} else {
echo "The if statement evaluated to false";
}
Display:
The if statement evaluated to true
This is a lot to digest in one sitting, so let us step through the code, line by line.
All code that is contained between the opening curly brace "{" that follows the if statement and
the closing curly brace "}" will be executed when the if statement is true.
The code contained within the else segment will not used.
PHP Code:
$number_three = 421;
if ( $number_three == 3 ) {
echo "The if statement evaluated to true";
} else {
echo "The if statement evaluated to false";
}
Display:
The if statement evaluated to false
The variable was set to 421, which is not equal to 3 and the if statement was false. As you can
see, the code segment contained within the else was used in this case.
PHP - Elseif
An if/else statement is great if you only need to check for one condition. However, what would
you do if you wanted to check if your $employee variable was the company owner Bob, the Vice
President Ms. Tanner, or a regular employee? To check for these different conditions you would
need the elseif statement.
When PHP evaluates your If...elseif...else statement it will first see if the If statement is true. If
that tests comes out false it will then check the first elseif statement. If that is false it will either
check the next elseif statement, or if there are no more elseif statements, it will evaluate the else
segment, if one exists (I don't think I've ever used the word "if" so much in my entire life!). Let's
take a look at a real world example.
PHP Code:
$employee = "Bob";
if($employee == "Ms. Tanner"){
echo "Hello Ma'am";
} else {
echo "Morning";
}
Now, if we wanted to also check to see if the big boss Bob was the employee we need to insert
an elseif clause.
PHP Code:
$employee = "Bob";
if($employee == "Ms. Tanner"){
echo "Hello Ma'am";
} elseif($employee == "Bob"){
echo "Good Morning Sir!";
}else {
echo "Morning";
}
Display:
Good Morning Sir!
PHP first checked to see if $employee was equal to "Ms. Tanner", which evaluated to false. Next,
PHP checked the first elseif statement. $employee did in fact equal "Bob" so the phrase "Good
Morning Sir!" was printed out. If we wanted to check for more employee names we could insert
more elseif statements!
For example we might have a variable that stores travel destinations and you want to pack
according to this destination variable. In this example you might have 20 different locations that
you would have to check with a nasty long block of If/ElseIf/ElseIf/ElseIf/... statements. This
doesn't sound like much fun to code, let's see if we can do something different.
The way the Switch statement works is it takes a single variable as input and then checks it
against all the different cases you set up for that switch statement. Instead of having to check that
variable one at a time, as it goes through a bunch of If Statements, the Switch statement only has
to check one time.
PHP Code:
$destination = "Tokyo";
echo "Traveling to $destination<br />";
switch ($destination){
case "Las Vegas":
echo "Bring an extra $500";
break;
case "Amsterdam":
echo "Bring an open mind";
break;
case "Egypt":
echo "Bring 15 bottles of SPF 50 Sunscreen";
break;
case "Tokyo":
echo "Bring lots of money";
break;
case "Caribbean Islands":
echo "Bring a swimsuit";
break;
}
Display:
Traveling to Tokyo
Bring lots of money
The value of $destination was Tokyo, so when PHP performed the switch operating on
$destination in immediately did a search for a case with the value of "Tokyo". It found it and
proceeded to execute the code that existed within that segment.
You might have noticed how each case contains a break; at the end of its code area. This break
prevents the other cases from being executed. If the above example did not have any break
statements then all the cases that follow Tokyo would have been executed as well. Use this
knowledge to enhance the power of your switch statements!
The form of the switch statement is rather unique, so spend some time reviewing it before
moving on. Note: Beginning programmers should always include the break; to avoid any
unnecessary confusion.
It's usually a good idea to always include the default case in all your switch statements. Below is
a variation of our example that will result in none of the cases being used causing our switch
statement to fall back and use the default case. Note: the word case does not appear before the
word default, as default is a special keyword!
PHP Code:
$destination = "New York";
echo "Traveling to $destination<br />";
switch ($destination){
case "Las Vegas":
echo "Bring an extra $500";
break;
case "Amsterdam":
echo "Bring an open mind";
break;
case "Egypt":
echo "Bring 15 bottles of SPF 50 Sunscreen";
break;
case "Tokyo":
echo "Bring lots of money";
break;
case "Caribbean Islands":
echo "Bring a swimsuit";
break;
default:
echo "Bring lots of underwear!";
break;
}
Display:
Traveling to New York
Bring lots of underwear!
Imagine we are an art supply store that sells brushes, paint, and erasers. To gather order
information from our prospective customers we will have to make a page with an HTML form to
gather the customer's order.
Note: This is an oversimplified example to educate you how to use PHP to process HTML form
information. This example is not intended nor advised to be used on a real business website.
We first create an HTML form that will let our customer choose what they would like to
purchase. This file should be saved as "order.html"
order.html Code:
<html><body>
<h4>Tizag Art Supply Order Form</h4>
<form>
<select>
<option>Paint</option>
<option>Brushes</option>
<option>Erasers</option>
</select>
Quantity: <input type="text" />
<input type="submit" />
</form>
</body></html>
Display:
Tizag Art Supply Order Form
Quantity:
Remember to review HTML Forms if you do not understand any of the above HTML code. Next
we must alter our HTML form to specify the PHP page we wish to send this information to.
Also, we set the method to "post".
order.html Code:
<html><body>
<h4>Tizag Art Supply Order Form</h4>
<form action="process.php" method="post">
<select name="item">
<option>Paint</option>
<option>Brushes</option>
<option>Erasers</option>
</select>
Quantity: <input name="quantity" type="text" />
<input type="submit" />
</form>
</body></html>
Now that our "order.html" is complete, let us continue on and create the "process.php" file which
will process the HTML form information.
The proper way to get this information would be to create two new variables, $item and
$quantity and set them equal to the values that have been "posted". The name of this file is
"process.php".
process.php Code:
<html><body>
<?php
$quantity = $_POST['quantity'];
$item = $_POST['item'];
echo "You ordered ". $quantity . " " . $item . ".<br />";
echo "Thank you for ordering from Tizag Art Supplies!";
?>
</body></html>
As you probably noticed, the name in $_POST['name'] corresponds to the name that we specified
in our HTML form.
Now try uploading the "order.html" and "process.php" files to a PHP enabled server and test
them out. If someone selected the item brushes and specified a quantity of 6, then the following
would be displayed on "process.php":
process.php Code:
You ordered 6 brushes.
Thank you for ordering from Tizag Art Supplies!
1. We first created an HTML form "order.html" that had two input fields specified, "item" and
"quantity".
2. We added two attributes to the form tag to point to "process.php" and set the method to
"post".
3. We had "process.php" get the information that was posted by setting new variables equal to the
values in the $_POST associative array.
Remember, this lesson is only to teach you how to use PHP to get information from HTML
forms. The example on this page should not be used for a real business.
PHP - Functions
A function is just a name we give to a block of code that can be executed whenever we need it.
This might not seem like that big of an idea, but believe me, when you understand and use
functions you will be able to save a ton of time and write code that is much more readable!
For example, you might have a company motto that you have to display at least once on every
webpage. If you don't, then you get fired! Well, being the savvy PHP programmer you are, you
think to yourself, "this sounds like a situation where I might need functions."
Tip: Although functions are often thought of as an advanced topic for beginning programmers to
learn, if you take it slow and stick with it, functions can be just minor speedbump in your
programming career. So don't give up if functions confuse you at first!
The actual syntax for creating a function is pretty self-explanatory, but you can be the judge of
that. First, you must tell PHP that you want to create a function. You do this by typing the
keyword function followed by your function name and some other stuff (which we'll talk about
later).
Here is how you would make a function called myCompanyMotto. Note: We still have to fill in
the code for myCompanyMotto.
PHP Code:
<?php
function myCompanyMotto(){
}
?>
Note: Your function name can start with a letter or underscore "_", but not a number!
With a properly formatted function in place, we can now fill in the code that we want our
function to execute. Do you see the curly braces in the above example "{ }"? These braces define
where our function's code goes. The opening curly brace "{" tells php that the function's code is
starting and a closing curly brace "}" tells PHP that our function is done!
We want our function to print out the company motto each time it's called, so that sounds like it's
a job for the echo command!
PHP Code:
<?php
function myCompanyMotto(){
echo "We deliver quantity, not quality!<br />";
}
?>
That's it! You have written your first PHP function from scratch! Notice that the code that
appears within a function is just the same as any other PHP code.
PHP Code:
<?php
echo "Welcome to Tizag.com <br />";
echo "Well, thanks for stopping by! <br />";
echo "and remember... <br />";
?>
Display:
Welcome to Tizag.com
We deliver quantity, not quality!
Well, thanks for stopping by!
and remember...
We deliver quantity, not quality!
Although this was a simple example, it's important to understand that there is a lot going on and
there are a lot of areas to make errors. When you are creating a function, follow these simple
guidelines:
When you are using your function, be sure you spell the function name correctly
Our parameter will be the person's name and our function will concatenate this name onto a
greeting string. Here's what the code would look like.
When we use our myGreeting function we have to send it a string containing someone's name,
otherwise it will break. When you add parameters, you also add more responsibility to you, the
programmer! Let's call our new function a few times with some common first names.
PHP Code:
<?php
function myGreeting($firstName){
echo "Hello there ". $firstName . "!<br />";
}
myGreeting("Jack");
myGreeting("Ahmed");
myGreeting("Julie");
myGreeting("Charles");
?>
Display:
Hello there Jack!
Hello there Ahmed!
Hello there Julie!
Hello there Charles!
PHP Code:
<?php
function myGreeting($firstName, $lastName){
echo "Hello there ". $firstName ." ". $lastName ."!<br />";
}
myGreeting("Jack", "Black");
myGreeting("Ahmed", "Zewail");
myGreeting("Julie", "Roberts");
myGreeting("Charles", "Schwab");
?>
Display:
Hello there Jack Black!
Hello there Ahmed Zewail!
Hello there Julie Roberts!
Hello there Charles Schwab!
How does it return a value though? Well, when the function is used and finishes executing, it sort
of changes from being a function name into being a value. To capture this value you can set a
variable equal to the function. Something like:
$myVar = somefunction();
Let's demonstrate this returning of a value by using a simple function that returns the sum of two
integers.
PHP Code:
<?php
function mySum($numX, $numY){
$total = $numX + $numY;
return $total;
}
$myNumber = 0;
echo "Before the function, myNumber = ". $myNumber ."<br />";
$myNumber = mySum(3, 4); // Store the result of mySum in $myNumber
echo "After the function, myNumber = " . $myNumber ."<br />";
?>
Display:
Before the function, myNumber = 0
After the function, myNumber = 7
When we first print out the value of $myNumber it is still set to the original value of 0. However,
when we set $myNumber equal to the function mySum, $myNumber is set equal to mySum's
result. In this case, the result was 3 + 4 = 7, which was successfully stored into $myNumber and
displayed in the second echo statement!
PHP Array
An array is a data structure that stores one or more values in a single value. For experienced
programmers it is important to note that PHP's arrays are actually maps (each key is mapped to a
value).
It wouldn't make much sense to have to store each name in its own variable. Instead, it would be
nice to store all the employee names inside of a single variable. This can be done, and we show
you how below.
PHP Code:
$employee_array[0] = "Bob";
$employee_array[1] = "Sally";
$employee_array[2] = "Charlie";
$employee_array[3] = "Clare";
In the above example we made use of the key / value structure of an array. The keys were the
numbers we specified in the array and the values were the names of the employees. Each key of
an array represents a value that we can manipulate and reference. The general form for setting
the key of an array equal to a value is:
$array[key] = value;
If we wanted to reference the values that we stored into our array, the following PHP code would
get the job done.
Note: As you may have noticed from the above code example, an array's keys start from 0 and
not 1. This is a very common problem for many new programmers who are used to counting
from 1 and lead to "off by 1" errors. This is just something that will take experience before you
are fully comfortable with it.
PHP Code:
echo "Two of my employees are "
. $employee_array[0] . " & " . $employee_array[1];
echo "<br />Two more employees of mine are "
. $employee_array[2] . " & " . $employee_array[3];
Display:
Two of my employees are Bob & Sally
Two more employees of mine are Charlie & Clare
PHP arrays are quite useful when used in conjunction with loops, which we will talk about in a
later lesson. Above we showed an example of an array that made use of integers for the keys (a
numerically indexed array). However, you can also specify a string as the key, which is referred
to as an associative array.
PHP Code:
$salaries["Bob"] = 2000;
$salaries["Sally"] = 4000;
$salaries["Charlie"] = 600;
$salaries["Clare"] = 0;
Display:
Bob is being paid - $2000
Sally is being paid - $4000
Charlie is being paid - $600
Clare is being paid - $0
Once again, the usefulness of arrays will become more apparent once you have knowledge of for
and while loops.
The idea of a loop is to do something over and over again until the task has been completed.
Before we show a real example of when you might need one, let's go over the structure of the
PHP while loop.
This isn't valid PHP code, but it displays how the while loop is structured. Here is the break
down of how a while loop functions when your script is executing:
1. The conditional statement is checked. If it is true, then (2) occurs. If it is false, then (4) occurs.
2. The code within the while loop is executed.
4. If the conditional statement is false, then the code within is not executed and there is no more
looping. The code following the while loop is then executed like normal.
You know that a while loop would be perfect for this repetitive and boring task. Here is how to
go about doing it.
Display:
Quantity Price
10 50
20 100
30 150
40 200
50 250
60 300
70 350
80 400
90 450
100 500
Pretty neat, huh? The loop created a new table row and its respective entries for each quantity,
until our counter variable grew past the size of 100. When it grew past 100 our conditional
statement failed and the loop stopped being used. Let's review what is going on.
1. We first made a $brush_price and $counter variable and set them equal to our desired values.
2. The table was set up with the beginning table tag and the table headers.
3. The while loop conditional statement was checked, and $counter (10) was indeed smaller or
equal to 100.
4. The code inside the while loop was executed, creating a new table row for the price of 10
brushes.
6. The loop started over again at step 3, until $counter grew larger than 100.
You may have noticed that we placed slashes infront the quotations in the first echo statement.
You have to place slashes before quotations if you do not want the quotation to act as the end of
the echo statement. This is called escaping a character and it is discussed in our PHP Strings
lesson.
With proper use of loops you can complete large tasks with great ease.
The for loop allows you to define these steps in one easy line of code. It may seem to have a
strange form, so pay close attention to the syntax used!
Notice how all the steps of the loop are taken care of in the for loop statement. Each step is
separated by a semicolon: initiliaze counter, conditional statement, and the counter increment. A
semicolon is needed because these are separate expressions. However, notice that a semicolon is
not needed after the "increment counter" expression.
Here is the example of the brush prices done with a for loop .
PHP Code:
$brush_price = 5;
Display:
Quantity Price
10 50
20 100
30 150
40 200
50 250
60 300
70 350
80 400
90 450
100 500
It is important to note that both the for loop and while loop implementation of the price chart
table are both OK at getting the job done. However, the for loop is somewhat more compact and
would be preferable in this situation. In later lessons we will see where the while loop should be
used instead of the for loop.
While a For Loop and While Loop will continue until some condition fails, the For Each loop
will continue until it has gone through every item in the array.
PHP Code:
$employeeAges;
$employeeAges["Lisa"] = "28";
$employeeAges["Jack"] = "16";
$employeeAges["Ryan"] = "35";
$employeeAges["Rachel"] = "46";
$employeeAges["Grace"] = "34";
Display:
Name: Lisa, Age: 28
Name: Jack, Age: 16
Name: Ryan, Age: 35
Name: Rachel, Age: 46
Name: Grace, Age: 34
The syntax of the foreach statement is a little strange, so let's talk about it some.
The operator "=>" represents the relationship between a key and value. You can imagine that the
key points => to the value. In our example we named the key $key and the value $value.
However, it might be easier to think of it as $name and $age. Below our example does this and
notice how the output is identical because we only changed the variable names that refer to the
keys and values.
PHP Code:
$employeeAges;
$employeeAges["Lisa"] = "28";
$employeeAges["Jack"] = "16";
$employeeAges["Ryan"] = "35";
$employeeAges["Rachel"] = "46";
$employeeAges["Grace"] = "34";
Display:
Name: Lisa, Age: 28
Name: Jack, Age: 16
Name: Ryan, Age: 35
Name: Rachel, Age: 46
Name: Grace, Age: 34
PHP Code:
$cookies = 0;
while($cookies > 1){
echo "Mmmmm...I love cookies! *munch munch munch*";
}
Display:
As you can see, this while loop's conditional statement failed (0 is not greater than 1), which
means the code within the while loop was not executed. Now, can you guess what will happen
with a do-while loop?
PHP Code:
$cookies = 0;
do {
echo "Mmmmm...I love cookies! *munch munch munch*";
} while ($cookies > 1);
Display:
Mmmmm...I love cookies! *munch munch munch*
The code segment "Mmmm...I love cookies!" was executed even though the conditional
statement was false. This is because a do-while loop first do's and secondly checks the while
condition!
Chances are you will not need to use a do while loop in most of your PHP programming, but it is
good to know it's there!
POST - Review
In our PHP Forms Lesson we used the post method. This is what the pertinent line of HTML
code looked like:
This HTML code specifies that the form data will be submitted to the "process.php" web page
using the POST method. The way that PHP does this is to store all the "posted" values into an
associative array called "$_POST". Be sure to take notice the names of the form data names, as
they represent the keys in the "$_POST" associative array.
Now that you know about associative arrays, the PHP code from "process.php" should make a
litte more sense.
The form names are used as the keys in the associative array, so be sure that you never have two
input items in your HTML form that have the same name. If you do, then you might see some
problems arise.
PHP - GET
As we mentioned before, the alternative to the post method is get. If we were to change our
HTML form to the get method, it would look like this:
The get method is different in that it passes the variables along to the "process.php" web page by
appending them onto the end of the URL. The URL, after clicking submit, would have this added
on to the end of it:
"?item=##&quantity=##"
The question mark "?" tells the browser that the following items are variables. Now that we
changed the method of sending information on "order.html", we must change the "process.php"
code to use the "$_GET" associative array.
After changing the array name the script will function properly. Using the get method displays
the variable information to your visitor, so be sure you are not sending password information or
other sensitive items with the get method. You would not want your visitors seeing something
they are not supposed to!
Security Precautions
Whenever you are taking user input and using you need to be sure that the input is safe. If you
are going to insert the data into a MySQL database, then you should be sure you have thought
about preventing MySQL Injection. If you are going to make a user's input available to the
public, then you should think about PHP htmlentities.
However, this newbie protection proved to cause more problems than it solved and is not in PHP
6. If your PHP version is any version before 6 then you should use this lesson to learn more
about how magic quotes can affect you.
PHP Code:
if(get_magic_quotes_gpc())
echo "Magic quotes are enabled";
else
echo "Magic quotes are disabled";
Display:
Magic quotes are enabled
If you received the message "Magic quotes are enabled" then you should definitely continue
reading this lesson, if not feel free to learn about it in case you are developing for servers that
might have quotes on or off.
magic-quotes.php Code:
<?php
echo "Altered Text: ".$_POST['question'];
?>
<form method='post'>
Question: <input type='text' name='question'/><br />
<input type='submit'>
</form>
This simple form will display to you what magic quotes is doing. If you were to enter and submit
the string: Sandy said, "It's a beautiful day outside and I like to use \'s." You would receive the
following output.
Display:
Altered Text: Sandy said, \"It\'s a beautiful day outside and I like to use \\\'s.\"
Question:
Magic quotes did a number on that string, didn't it? Notice that there is a backslash before all of
those risky characters we talked about earlier. After magic quotes:
A backslash \ becomes \\
A quote ' becomes \'
Now say that you wanted to remove the escaping that magic quotes puts in, you have two
options: disable magic quotes or strip the backslashes magic quotes adds.
Removing Backslashes - stripslashes()
Before you use PHP's backslash removal function stripslashes it's smart to add some magic
quote checking like our "Are They Enabled?" section above. This way you won't accidentally be
removing slashes that are legitimate in the future if your PHP's magic quotes setting changes in
the future.
magic-quotes.php Code:
<?php
echo "Removed Slashes: ";
// Remove those slashes
if(get_magic_quotes_gpc())
echo stripslashes($_POST['question']);
else
echo $_POST['question'];
?>
<form method='post'>
Question: <input type='text' name='question'/><br />
<input type='submit'>
</form>
Our new output for our string containing risky characters would now be:
Display:
Removed Slashes: Sandy said, "It's a beautiful day outside and I like to use \'s."
Question:
This may seem a little complicated, but if you think of the way a browser works, in separate
stages, it becomes a little easier. Let's look at the way the function htmlentities changes the data
at three different levels: in PHP, in raw HTML and in the web browser. The sample string is a
bad script that will redirect visitors to the malicious user's own website.
PHP Code:
// An imaginary article submission from a bad user
// it will redirect anyone to example.com if the code is run in a browser
$userInput = "I am going to hax0r your site, hahaha!
<script type='text/javascript'>
window.location = 'http://www.example.com/'
</script>'";
If we had not used htmlentities to convert any HTML code into safe entities, this is what the raw
HTML code would be and it would have redirect a visitor to example.com.
Those two HTML code examples are what you would see if you were to view source on the web
page. However, if you were just viewing the output normally in your browser you would see the
following.
Safe Display:
I am going to hax0r your site, hahaha! <script type='text/javascript'> window.location =
'http://www.example.com/' </script>'
Dangerous Display:
You'd see whatever spammer site that the malicious user had sent you to. Probably some herbal
supplement site or weight loss pills would be displayed.
Just remember, that when allowing users to submit content to your site you are also giving them
access to your website. Be sure you take the proper precautions.
PHP - Files
Manipulating files is a basic necessity for serious programmers and PHP gives you a great deal
of tools for creating, uploading, and editing files.
This section of the PHP tutorial is completely dedicated to how PHP can interact with files. After
completing this section you should have a solid understanding of all types of file manipulation in
PHP!
It is our hope that you will be able to avoid these and other slipups after reading this tutorial.
However, we know that there are so many places where code can take a wrong turn, so we urge
you to take extra care when dealing with files in PHP.
PHP - Files: Overview
The presentation of the file lessons will begin with how to create, open, and close a file. After
establishing those basics, we will then cover other important file tasks, such as: read, write,
append, truncate, and uploading files with PHP.
Read: 'r'
Open a file for read only use. The file pointer begins at the front of the file.
Write: 'w'
Open a file for write only use. In addition, the data in the file is erased and you will begin writing
data at the beginning of the file. This is also called truncating a file, which we will talk about
more in a later lesson. The file pointer begins at the start of the file.
Append: 'a'
Open a file for write only use. However, the data in the file is preserved and you begin will
writing data at the end of the file. The file pointer begins at the end of the file.
A file pointer is PHP's way of remembering its location in a file. When you open a file for
reading, the file pointer begins at the start of the file. This makes sense because you will usually
be reading data from the front of the file.
However, when you open a file for appending, the file pointer is at the end of the file, as you
most likely will be appending data at the end of the file. When you use reading or writing
functions they begin at the location specified by the file pointer.
PHP - Explanation of Different Types of
fopen
These three basic ways to open a file have distinct purposes. If you want to get information out
of a file, like search an e-book for the occurrences of "cheese", then you would open the file for
read only.
If you wanted to write a new file, or overwrite an existing file, then you would want to open the
file with the "w" option. This would wipe clean all existing data within the file.
If you wanted to add the latest order to your "orders.txt" file, then you would want to open it to
append the data on to the end. This would be the "a" option.
Read/Write: 'r+'
Opens a file so that it can be read from and written to. The file pointer is at the beginning of the
file.
Write/Read: 'w+'
This is exactly the same as r+, except that it deletes all information in the file when the file is
opened.
Append: 'a+'
This is exactly the same as r+, except that the file pointer is at the end of the file.
PHP Code:
$ourFileName = "testFile.txt";
$ourFileHandle = fopen($ourFileName, 'w') or die("can't open file");
fclose($ourFileHandle);
The function fclose requires the file handle that we want to close down. In our example we set
our variable "$fileHandle" equal to the file handle returned by the fopen function.
After a file has been closed down with fclose it is impossible to read, write or append to that file
unless it is once more opened up with the fopen function.
PHP - File Write
Now that you know how to open and close a file, lets get on to the most useful part of file
manipulation, writing! There is really only one main function that is used to write and it's
logically called fwrite.
PHP Code:
$myFile = "testFile.txt";
$fh = fopen($myFile, 'w');
Below we are writing a couple of names into our test file testFile.txt and separating them with a
carriaged return.
PHP Code:
$myFile = "testFile.txt";
$fh = fopen($myFile, 'w') or die("can't open file");
$stringData = "Bobby Bopper\n";
fwrite($fh, $stringData);
$stringData = "Tracy Tanner\n";
fwrite($fh, $stringData);
fclose($fh);
The $fh variable contains the file handle for testFile.txt. The file handle knows the current file
pointer, which for writing, starts out at the beginning of the file.
We wrote to the file testFile.txt twice. Each time we wrote to the file we sent the string
$stringData that first contained Bobby Bopper and second contained Tracy Tanner. After we
finished writing we closed the file using the fclose function.
If you were to open the testFile.txt file in NOTEPAD it would look like this:
Contents of the testFile.txt File:
Bobby Bopper
Tracy Tanner
PHP Code:
$myFile = "testFile.txt";
$fh = fopen($myFile, 'w') or die("can't open file");
$stringData = "Floppy Jalopy\n";
fwrite($fh, $stringData);
$stringData = "Pointy Pinto\n";
fwrite($fh, $stringData);
fclose($fh);
If you now open the testFile.txt file you will see that Bobby and Tracy have both vanished, as we
expected, and only the data we just wrote is present.
In the next lesson we will show you how to get information out of a file by using PHP's read data
functions!
PHP Code:
$myFile = "testFile.txt";
$fh = fopen($myFile, 'r');
The file we created in the last lesson was named "testFile.txt". Your PHP script that you are
writing should reside in the same directory as "text.txt". Here are the contents of our file from
File Write.
testFile.txt Contents:
Floppy Jalopy
Pointy Pinto
Now that the file is open, with read permissions enabled, we can get started!
One character is equal to one byte. If you wanted to read the first five characters then you would
use five as the integer.
PHP Code:
$myFile = "testFile.txt";
$fh = fopen($myFile, 'r');
$theData = fread($fh, 5);
fclose($fh);
echo $theData;
Display:
Flopp
The first five characters from the testFile.txt file are now stored inside $theData. You could echo
this string, $theData, or write it to another file.
If you wanted to read all the data from the file, then you need to get the size of the file. The
filesize function returns the length of a file, in bytes, which is just what we need! The filesize
function requires the name of the file that is to be sized up.
PHP Code:
$myFile = "testFile.txt";
$fh = fopen($myFile, 'r');
$theData = fread($fh, filesize($myFile));
fclose($fh);
echo $theData;
Display:
Floppy Jalopy Pointy Pinto
Note: It is all on one line because our "testFile.txt" file did not have a <br /> tag to create an
HTML line break. Now the entire contents of the testFile.txt file is stored in the string variable
$theData.
Lucky for us our "testFile.txt" file is separated by new lines and we can utilize this function.
PHP Code:
$myFile = "testFile.txt";
$fh = fopen($myFile, 'r');
$theData = fgets($fh);
fclose($fh);
echo $theData;
testFile.txt Contents:
Floppy Jalopy
The fgets function searches for the first occurrence of "\n" the newline character. If you did not
write newline characters to your file as we have done in File Write, then this function might not
work the way you expect it to.
If we were to write to the file it would begin writing data at the end of the file.
PHP Code:
$myFile = "testFile.txt";
$fh = fopen($myFile, 'a') or die("can't open file");
$stringData = "New Stuff 1\n";
fwrite($fh, $stringData);
$stringData = "New Stuff 2\n";
fwrite($fh, $stringData);
fclose($fh);
You should noticed that the way we write data to the file is exactly the same as in the Write
lesson. The only thing that is different is that the file pointer is placed at the end of the file in
append mode, so all data is added to the end of the file.
The contents of the file testFile.txt would now look like this:
A log is basically used to document events that occur over a period of time, rather than all at
once. Logs: a perfect use for append!
PHP Code:
$myFile = "testFile.txt";
$fh = fopen($myFile, 'w');
fclose($fh);
For example, you could create an online word processor that automatically saves every thirty
seconds. Every time it saves it would take all the data that existed within some HTML form text
box and save it to the server. This file, say tempSave.txt, would be truncated and overwritten with
new, up-to-date data every thirty seconds.
This might not be the most efficient program, but it is a nice usage of truncate.
method="POST" - Informs the browser that we want to send information to the server using
POST.
input type="hidden" name="MA... - Sets the maximum allowable file size, in bytes, that can be
uploaded. This safety mechanism is easily bypassed and we will show a solid backup solution in
PHP. We have set the max file size to 100KB in this example.
input name="uploadedfile" - uploadedfile is how we will access the file in our PHP script.
Save that form code into a file and call it upload.html. If you view it in a browser it should look
like this:
Display:
Choose a file to upload:
After the user clicks submit, the data will be posted to the server and the user will be redirected
to uploader.php. This PHP file is going to process the form data and do all the work.
The file is too large and you do not want to have it on your server.
You wanted the person to upload a picture and they uploaded something else, like an
executable file (.exe).
There were problems uploading the file and so you can't keep it.
This example is very simple and omits the code that would add such functionality.
PHP - File Upload: uploader.php
When the uploader.php file is executed, the uploaded file exists in a temporary storage area on
the server. If the file is not moved to a different location it will be destroyed! To save our
precious file we are going to need to make use of the $_FILES associative array.
The $_FILES array is where PHP stores all the information about files. There are two elements
of this array that we will need to understand for this example.
uploadedfile - uploadedfile is the reference we assigned in our HTML form. We will need this to
tell the $_FILES array which file we want to play around with.
$_FILES['uploadedfile']['name'] - name contains the original path of the user uploaded file.
Now we can finally start to write a basic PHP upload manager script! Here is how we would get
the temporary file name, choose a permanent name, and choose a place to store the file.
PHP Code:
// Where the file is going to be placed
$target_path = "uploads/";
NOTE: You will need to create a new directory in the directory where uploader.php resides,
called "uploads", as we are going to be saving files there.
We now have all we need to successfully save our file to the server. $target_path contains the
path where we want to save our file to.
PHP Code:
$target_path = "uploads/";
If the upload is successful, then you will see the text "The file filename has been uploaded". This
is because move_uploaded_file returns true if the file was moved, and false if it had a problem.
If there was a problem then the error message "There was an error uploading the file, please try
again!" would be displayed.
These few lines of code we have given you will allow anyone to upload data to your server.
Because of this, we recommend that you do not have such a simple file uploader available to the
general public. Otherwise, you might find that your server is filled with junk or that your server's
security has been compromised.
We hope you enjoyed learning about how to work with uploading files with PHP. In the near
future we will be adding an advanced lesson that will include more security and additional
features!
To make this function crystal clear, lets search a numbered, in-order string, for the number five.
PHP Code:
$numberedString = "1234567890"; // 10 numbers from 1 to 0
Display:
The position of 5 in our string was 4
Notice that the position is 4, which may seem confusing at first, until you realize that PHP starts
counting from 0.
Although we only searched for a single character, you can use this function to search for a string
with any number of characters. Also, it is important to note that this function will return the
position of the start of the first match. So if we had searched the same string for "567890" we
would again find a match and position 4 because that is where the match starts.
There is a third (optional) argument to strpos that will let you specify where to begin your search
of the string. If you were to store the position of the last match and use that + 1 as an offset, you
would skip over the first match and be find the next one.
PHP Code:
$numberedString = "1234567890123456789012345678901234567890";
Display:
The position of 5 in our string was 4
The position of the second 5 was 14
By taking the first match's position of 4 and adding 1 we then asked strpos to begin searching
after the last match. The string it was actually searching after computing the offset was:
6789012345... Letting us find the second 5 in the string.
If we use our knowledge of PHP While Loops we can find every single 5 in our string
numberedString with just a few lines of code.
PHP Code:
$numberedString = "1234567890123456789012345678901234567890";
$offset = 0; // initial offset is 0
$fiveCounter = 0;
Display:
Five #1 is at position - 4
Five #2 is at position - 14
Five #3 is at position - 24
Five #4 is at position - 34
That conditional statement in our while loop may look a little intimidating, but not if you break it
down.
$offset = strpos($numberedString, "5", $offset + 1) - This is our conditional statement for our
PHP While Loop. If this ever is false the while loop will stop running. This conditional statement
always runs before each pass through the while loop.
strpos($numberedString, "5", $offset + 1) - This is the same code we used in a previous example.
We are going to search our string numberedString for the number 5 and use the last match's
value (stored in $offset) + 1 to skip over the last match. The first $offset we use has a value of 0,
so that we start at the beginning of the string.
$offset = strpos(... We are going to store the location returned by strpos into $offset so that we
can skip this match the next time the while loop runs through the code. If strpos ever fails to
find a match then this will be set to false making our while loop stop executing.
str_replace Parameters
str_replace has three parameters that are required for the function to work properly.
str_replace(search, replace, originalString).
1. search - This is what you want to search your string for. This can be a string or an array.
2. replace - All matches for search will be replaced with this value. This can be a string or an array.
3. originalString - This is what search and replace will be operating on. The str_replace function will
return a modified version of originalString when it completes.
PHP Code:
//string that needs to be customized
$rawstring = "Welcome Birmingham parents. Your replaceme is a pleasure to
have!";
//male string
$malestr = str_replace("replaceme", "son", $rawstring);
//female string
$femalestr = str_replace("replaceme", "daughter", $rawstring);
Display:
Son: Welcome Birmingham parents. Your son is a pleasure to have!
Daughter: Welcome Birmingham parents. Your daughter is a pleasure to have!
With these two gender customized strings created we could then provide a more engaging
experience for the student's parents when they logged into the school website with their kid's
credentials.
The key thing to understand with this technique is that you are creating two arrays that will be
used to swap values. The first item in placeholders will be replaced by the first item in the
replace values, the second item of placeholders replaced with the second in replace values and
so on and so forth.
Let's extend our simple example to be a complete form letter addressed to a student's parents.
PHP Code:
//string that needs to be customized
$rawstring = "Welcome Birmingham parent! <br />
Your offspring is a pleasure to have!
We believe pronoun is learning a lot.<br />
The faculty simple adores pronoun2 and you can often hear
them say \"Attah sex!\"<br />";
//placeholders array
$placeholders = array('offspring', 'pronoun', 'pronoun2', 'sex');
//male replace values array
$malevals = array('son', 'he', 'him', 'boy');
//female replace values array
$femalevals = array('daughter', 'she', 'her', 'girl');
//male string
$malestr = str_replace($placeholders, $malevals, $rawstring);
//female string
$femalestr = str_replace($placeholders, $femalevals, $rawstring);
Display:
Son: Welcome Birmingham parent!
Your son is a pleasure to have! We believe he is learning a lot.
The faculty simple adores he2 and you can often hear them say "Attah boy!"
Notice: there is a bug in this code. The placeholder pronoun2 did not get replaced in the way we
intended (our strings have he2 and she2 instead of him and her). This is because all instances of
pronoun were replaced first and the pronoun in pronoun2 was replaced at this time with he or
she, making he2 or she2. When it was pronoun2's turn to be replaced, there were no matches to
be found, so our string has no him or her.
To fix this bug you could simply make sure that pronoun2 comes first in the placeholders array
and by updating the values of the male and female replace values to reflect this.
PHP Code:
// ...snip
//placeholders array
$placeholders = array('offspring', 'pronoun2', 'pronoun', 'sex');
//male replace values array
$malevals = array('son', 'him', 'he', 'boy');
//female replace values array
$femalevals = array('daughter', 'her', 'she', 'girl');
//snip...
Display:
Son: Welcome Birmingham parent!
Your son is a pleasure to have! We believe he is learning a lot.
The faculty simple adores him and you can often hear them say "Attah boy!"
1. original string - This is your original string that will be operated on.
2. replacement string - This string will be used to replace everything in the string from the starting
point to the ending point (specified by length).
3. starting point - This is the place in the original string that will be used to mark the replacement's
beginning. A negative value specifies the number of characters from the end of the string.
4. optional length - How many characters from the original string will be replaced. If no length is
specified then the end of the string is used. If a value of 0 is used then no characters will be
replaced and an insert is performed. A negative value specifies the number of characters from
the end of the string.
PHP Code:
//string that needs to be customized
$original = "ABC123 Hello Mr. Cow! DEF321";
//starting point 5
$sp5 = substr_replace($original, "Five", 5);
//starting point 12
$sp12 = substr_replace($original, "Twelve", 12);
//starting point 0
$sp0 = substr_replace($original, "Zero", 0);
//starting point -1
$spneg1 = substr_replace($original, "Negative 1", -1);
Display:
Original String: ABC123 Hello Mr. Cow! DEF321
Starting Point 5: ABC12Five
Starting Point 12: ABC123 HelloTwelve
Starting Point 0: Zero
Starting Point -1: ABC123 Hello Mr. Cow! DEF32Negative 1
As you can see, when you don't specify the fourth parameter, length, everything after the starting
point is replaced by the second parameter replacement string.
Note: The first replacement occurred at position 5, which in $original was the character 3. This 3
and everything onward was replaced with the replacement string. Remember that you start
counting character to begin from zero. The $original string could be labeled as so:
Letter A - Position 0
Letter B - Position 1
Letter C - Position 2
Letter 1 - Position 3
Letter 2 - Position 4
Letter 3 - Position 5
Imagine that you want to get rid of those ugly pseudo references (ABC123, DEF321) at the
beginning and end of the string. Since both of those strings are a length of 6 and we know one is
at the very beginning of the string and the other is at the very end of the string we should
probably use a starting point of 0 for ABC123 and a value of -6 for DEF321. By having a
replacement string of nothing "" we can do something similar to select and delete that we often
do in a word processor.
PHP Code:
//string that needs to be customized
$original = "ABC123 Hello Mr. Cow! DEF321";
Display:
Original String: ABC123 Hello Mr. Cow! DEF321
Clean #1: Hello Mr. Cow! DEF321
Clean #2: Hello Mr. Cow!
Make sure that you play around with this function some on your own so you can get a feel for
how the starting point and length parameters effect this function.
PHP Code:
//string that needs to be customized
$original = "Hello Mr. Cow!";
// Find where Mr. Cow ends by adding the length of Mr. Cow
$cowpos_end = $cowpos + strlen("Mr. Cow");
Display:
Original String: Hello Mr. Cow!
After Mrs. Bear: Hello Mr. Cow and Mrs. Bear!
After Sensei Shark: Hello Sensei Shark, Mr. Cow and Mrs. Bear!
We snuck a new function strlen into that example, but it isn't that complicated of a function, as it
stands for "string length."
The strlen function takes a string and then counts up how many characters are in it then returns
that number. So by calculating the length of "Mr. Cow" and adding that to the position, we find
out where the end point is!
PHP - String Capitalization Functions
If you've ever wanted to manipulate the capitalization of your PHP strings, then this lesson will
be quite helpful to you. PHP has three primary capitalization related functions: strtoupper,
strtolower and ucwords. The function names are pretty self-explanatory, but why they are useful
in programming might be new to you.
PHP Code:
$originalString = "String Capitalization 1234";
$upperCase = strtoupper($originalString);
echo "Old string - $originalString <br />";
echo "New String - $upperCase";
Display:
Old string - String Capitalization 1234
New String - STRING CAPITALIZATION 1234
One might use this function to increase emphasis of a important point or in a title. Another time
it might be used with a font that looks very nice with all caps to fit the style of the web page
design.
A more technical reason would be to convert two strings you are comparing to see if they are
equal. By converting them to the same capitalization you remove the possibility that they won't
match simply because of different capitalizations.
PHP Code:
$originalString = "String Capitalization 1234";
$lowerCase = strtolower($originalString);
echo "Old string - $originalString <br />";
echo "New String - $lowerCase";
Display:
Old string - String Capitalization 1234
New String - string capitalization 1234
PHP Code:
$titleString = "a title that could use some hELP";
$ucTitleString = ucwords($titleString);
echo "Old title - $titleString <br />";
echo "New title - $ucTitleString";
Display:
Old title - a title that could use some hELP
New title - A Title That Could Use Some HELP
Notice that the last word "hELP" did not have the capitalization changed on the letters that
weren't first, they remained capitalized. If you want to ensure that only the first letter is
capitalized in each word of your title, first use the strtolower function and then the ucwords
function.
PHP Code:
$titleString = "a title that could use some hELP";
$lowercaseTitle = strtolower($titleString);
$ucTitleString = ucwords($lowercaseTitle);
echo "Old title - $titleString <br />";
echo "New title - $ucTitleString";
Display:
Old title - a title that could use some hELP
New title - A Title That Could Use Some Help
1. Hello,
2. I
3. would
4. like
5. to
6. lose
7. weight.
The dynamite (the space character) disappears, but the other stuff remains, but in pieces. With
that abstract picture of the explode function in mind, lets take a look at how it really works.
PHP Code:
$rawPhoneNumber = "800-555-5555";
Display:
Raw Phone Number = 800-555-5555
First chunk = 800
Second chunk = 555
Third Chunk chunk = 5555
PHP Code:
$someWords = "Please don't blow me to pieces.";
Display:
Piece 0 = Please
Piece 1 = don't
Piece 2 = blow
Piece 3 = me
Piece 4 = to
Piece 5 = pieces.
Limited Piece 0 = Please
Limited Piece 1 = don't
Limited Piece 2 = blow
Limited Piece 3 = me to pieces.
The limited explosion has 4 pieces (starting from 0, ending at 3). If you forgot how a for loop
works, check out PHP For Loops.
Display:
Piece #0 = Hello
Piece #1 = World,
Piece #2 = I
Piece #3 = am
Piece #4 = Here!
Glued with Spaces = Hello World, I am Here!
Glued with Dashes = Hello-World,-I-am-Here!
The implode function will convert the entire array into a string and there is no optional argument
to limit this as there was in the explode function.
PHP Code:
$myFile = "testFile.txt";
$fh = fopen($myFile, 'a');
If we were to write to the file it would begin writing data at the end of the file.
PHP Code:
$myFile = "testFile.txt";
$fh = fopen($myFile, 'a') or die("can't open file");
$stringData = "New Stuff 1\n";
fwrite($fh, $stringData);
$stringData = "New Stuff 2\n";
fwrite($fh, $stringData);
fclose($fh);
You should noticed that the way we write data to the file is exactly the same as in the Write
lesson. The only thing that is different is that the file pointer is placed at the end of the file in
append mode, so all data is added to the end of the file.
The contents of the file testFile.txt would now look like this:
A log is basically used to document events that occur over a period of time, rather than all at
once. Logs: a perfect use for append!
To make this function crystal clear, lets search a numbered, in-order string, for the number five.
PHP Code:
$numberedString = "1234567890"; // 10 numbers from 1 to 0
Display:
The position of 5 in our string was 4
Notice that the position is 4, which may seem confusing at first, until you realize that PHP starts
counting from 0.
Although we only searched for a single character, you can use this function to search for a string
with any number of characters. Also, it is important to note that this function will return the
position of the start of the first match. So if we had searched the same string for "567890" we
would again find a match and position 4 because that is where the match starts.
PHP Code:
$numberedString = "1234567890123456789012345678901234567890";
Display:
The position of 5 in our string was 4
The position of the second 5 was 14
By taking the first match's position of 4 and adding 1 we then asked strpos to begin searching
after the last match. The string it was actually searching after computing the offset was:
6789012345... Letting us find the second 5 in the string.
If we use our knowledge of PHP While Loops we can find every single 5 in our string
numberedString with just a few lines of code.
PHP Code:
$numberedString = "1234567890123456789012345678901234567890";
$offset = 0; // initial offset is 0
$fiveCounter = 0;
Display:
Five #1 is at position - 4
Five #2 is at position - 14
Five #3 is at position - 24
Five #4 is at position - 34
That conditional statement in our while loop may look a little intimidating, but not if you break it
down.
$offset = strpos($numberedString, "5", $offset + 1) - This is our conditional statement for our
PHP While Loop. If this ever is false the while loop will stop running. This conditional statement
always runs before each pass through the while loop.
strpos($numberedString, "5", $offset + 1) - This is the same code we used in a previous example.
We are going to search our string numberedString for the number 5 and use the last match's
value (stored in $offset) + 1 to skip over the last match. The first $offset we use has a value of 0,
so that we start at the beginning of the string.
$offset = strpos(... We are going to store the location returned by strpos into $offset so that we
can skip this match the next time the while loop runs through the code. If strpos ever fails to
find a match then this will be set to false making our while loop stop executing.
str_replace Parameters
str_replace has three parameters that are required for the function to work properly.
str_replace(search, replace, originalString).
1. search - This is what you want to search your string for. This can be a string or an array.
2. replace - All matches for search will be replaced with this value. This can be a string or an array.
3. originalString - This is what search and replace will be operating on. The str_replace function will
return a modified version of originalString when it completes.
PHP Code:
//string that needs to be customized
$rawstring = "Welcome Birmingham parents. Your replaceme is a pleasure to
have!";
//male string
$malestr = str_replace("replaceme", "son", $rawstring);
//female string
$femalestr = str_replace("replaceme", "daughter", $rawstring);
Display:
Son: Welcome Birmingham parents. Your son is a pleasure to have!
Daughter: Welcome Birmingham parents. Your daughter is a pleasure to have!
With these two gender customized strings created we could then provide a more engaging
experience for the student's parents when they logged into the school website with their kid's
credentials.
The key thing to understand with this technique is that you are creating two arrays that will be
used to swap values. The first item in placeholders will be replaced by the first item in the
replace values, the second item of placeholders replaced with the second in replace values and
so on and so forth.
Let's extend our simple example to be a complete form letter addressed to a student's parents.
PHP Code:
//string that needs to be customized
$rawstring = "Welcome Birmingham parent! <br />
Your offspring is a pleasure to have!
We believe pronoun is learning a lot.<br />
The faculty simple adores pronoun2 and you can often hear
them say \"Attah sex!\"<br />";
//placeholders array
$placeholders = array('offspring', 'pronoun', 'pronoun2', 'sex');
//male replace values array
$malevals = array('son', 'he', 'him', 'boy');
//female replace values array
$femalevals = array('daughter', 'she', 'her', 'girl');
//male string
$malestr = str_replace($placeholders, $malevals, $rawstring);
//female string
$femalestr = str_replace($placeholders, $femalevals, $rawstring);
Display:
Son: Welcome Birmingham parent!
Your son is a pleasure to have! We believe he is learning a lot.
The faculty simple adores he2 and you can often hear them say "Attah boy!"
Notice: there is a bug in this code. The placeholder pronoun2 did not get replaced in the way we
intended (our strings have he2 and she2 instead of him and her). This is because all instances of
pronoun were replaced first and the pronoun in pronoun2 was replaced at this time with he or
she, making he2 or she2. When it was pronoun2's turn to be replaced, there were no matches to
be found, so our string has no him or her.
To fix this bug you could simply make sure that pronoun2 comes first in the placeholders array
and by updating the values of the male and female replace values to reflect this.
PHP Code:
// ...snip
//placeholders array
$placeholders = array('offspring', 'pronoun2', 'pronoun', 'sex');
//male replace values array
$malevals = array('son', 'him', 'he', 'boy');
//female replace values array
$femalevals = array('daughter', 'her', 'she', 'girl');
//snip...
Display:
Son: Welcome Birmingham parent!
Your son is a pleasure to have! We believe he is learning a lot.
The faculty simple adores him and you can often hear them say "Attah boy!"
1. original string - This is your original string that will be operated on.
2. replacement string - This string will be used to replace everything in the string from the starting
point to the ending point (specified by length).
3. starting point - This is the place in the original string that will be used to mark the replacement's
beginning. A negative value specifies the number of characters from the end of the string.
4. optional length - How many characters from the original string will be replaced. If no length is
specified then the end of the string is used. If a value of 0 is used then no characters will be
replaced and an insert is performed. A negative value specifies the number of characters from
the end of the string.
PHP Code:
//string that needs to be customized
$original = "ABC123 Hello Mr. Cow! DEF321";
//starting point 5
$sp5 = substr_replace($original, "Five", 5);
//starting point 12
$sp12 = substr_replace($original, "Twelve", 12);
//starting point 0
$sp0 = substr_replace($original, "Zero", 0);
//starting point -1
$spneg1 = substr_replace($original, "Negative 1", -1);
As you can see, when you don't specify the fourth parameter, length, everything after the starting
point is replaced by the second parameter replacement string.
Note: The first replacement occurred at position 5, which in $original was the character 3. This 3
and everything onward was replaced with the replacement string. Remember that you start
counting character to begin from zero. The $original string could be labeled as so:
Letter A - Position 0
Letter B - Position 1
Letter C - Position 2
Letter 1 - Position 3
Letter 2 - Position 4
Letter 3 - Position 5
Imagine that you want to get rid of those ugly pseudo references (ABC123, DEF321) at the
beginning and end of the string. Since both of those strings are a length of 6 and we know one is
at the very beginning of the string and the other is at the very end of the string we should
probably use a starting point of 0 for ABC123 and a value of -6 for DEF321. By having a
replacement string of nothing "" we can do something similar to select and delete that we often
do in a word processor.
PHP Code:
//string that needs to be customized
$original = "ABC123 Hello Mr. Cow! DEF321";
Display:
Original String: ABC123 Hello Mr. Cow! DEF321
Clean #1: Hello Mr. Cow! DEF321
Clean #2: Hello Mr. Cow!
Make sure that you play around with this function some on your own so you can get a feel for
how the starting point and length parameters effect this function.
PHP Code:
//string that needs to be customized
$original = "Hello Mr. Cow!";
// Find where Mr. Cow ends by adding the length of Mr. Cow
$cowpos_end = $cowpos + strlen("Mr. Cow");
Display:
Original String: Hello Mr. Cow!
After Mrs. Bear: Hello Mr. Cow and Mrs. Bear!
After Sensei Shark: Hello Sensei Shark, Mr. Cow and Mrs. Bear!
We snuck a new function strlen into that example, but it isn't that complicated of a function, as it
stands for "string length."
$cowpos_end = $cowpos + strlen("Mr. Cow");
The strlen function takes a string and then counts up how many characters are in it then returns
that number. So by calculating the length of "Mr. Cow" and adding that to the position, we find
out where the end point is!
PHP Code:
$originalString = "String Capitalization 1234";
$upperCase = strtoupper($originalString);
echo "Old string - $originalString <br />";
echo "New String - $upperCase";
Display:
Old string - String Capitalization 1234
New String - STRING CAPITALIZATION 1234
One might use this function to increase emphasis of a important point or in a title. Another time
it might be used with a font that looks very nice with all caps to fit the style of the web page
design.
A more technical reason would be to convert two strings you are comparing to see if they are
equal. By converting them to the same capitalization you remove the possibility that they won't
match simply because of different capitalizations.
Converting a String to Lower Case -
strtolower
The strtolower function also has one argument: the string that will be converted to lower case.
PHP Code:
$originalString = "String Capitalization 1234";
$lowerCase = strtolower($originalString);
echo "Old string - $originalString <br />";
echo "New String - $lowerCase";
Display:
Old string - String Capitalization 1234
New String - string capitalization 1234
PHP Code:
$titleString = "a title that could use some hELP";
$ucTitleString = ucwords($titleString);
echo "Old title - $titleString <br />";
echo "New title - $ucTitleString";
Display:
Old title - a title that could use some hELP
New title - A Title That Could Use Some HELP
Notice that the last word "hELP" did not have the capitalization changed on the letters that
weren't first, they remained capitalized. If you want to ensure that only the first letter is
capitalized in each word of your title, first use the strtolower function and then the ucwords
function.
PHP Code:
$titleString = "a title that could use some hELP";
$lowercaseTitle = strtolower($titleString);
$ucTitleString = ucwords($lowercaseTitle);
echo "Old title - $titleString <br />";
echo "New title - $ucTitleString";
Display:
Old title - a title that could use some hELP
New title - A Title That Could Use Some Help
1. Hello,
2. I
3. would
4. like
5. to
6. lose
7. weight.
The dynamite (the space character) disappears, but the other stuff remains, but in pieces. With
that abstract picture of the explode function in mind, lets take a look at how it really works.
PHP Code:
$rawPhoneNumber = "800-555-5555";
PHP Code:
$someWords = "Please don't blow me to pieces.";
Display:
Piece 0 = Please
Piece 1 = don't
Piece 2 = blow
Piece 3 = me
Piece 4 = to
Piece 5 = pieces.
Limited Piece 0 = Please
Limited Piece 1 = don't
Limited Piece 2 = blow
Limited Piece 3 = me to pieces.
The limited explosion has 4 pieces (starting from 0, ending at 3). If you forgot how a for loop
works, check out PHP For Loops.
Advertise on Tizag.com
This lesson will teach you how to display the current time, formating PHP's timestamp, and show
you all the various date arguments for reference purposes.
Timestamp: A timestamp is the number of seconds from January 1, 1970 at 00:00. Otherwise
known as the Unix Timestamp, this measurement is a widely used standard that PHP has chosen
to utilize.
d: The day of the month. The type of output you can expect is 01 through 31.
m: The current month, as a number. You can expect 01 through 12.
y: The current year in two digits ##. You can expect 00 through 99
We'll tell you the rest of the options later, but for now let's use those above letters to format a
simple date! The letters that PHP uses to represent parts of date and time will automatically be
converted by PHP.
However, other characters like a slash "/" can be inserted between the letters to add additional
formatting. We have opted to use the slash in our example.
PHP Code:
<?php
echo date("m/d/y");
?>
If the 2010 Winter Olympics were just finishing up, you would see something like:
Display:
02/27/10
Be sure to test this out on your own PHP enabled server, it's really great to see the instant results
available with PHP date!
Supplying a Timestamp
As our first example shows, the first argument of the date function tells PHP how you would like
your date and time displayed. The second argument allows for a timestamp and is optional.
This example uses the mktime function to create a timestamp for tomorrow. To go one day in the
future we simply add one to the day argument of mktime. For your future reference, we have the
arguments of mktime.
Note: These arguments are all optional. If you do not supply any arguments the current time will
be used to create the timestamp.
PHP Code:
<?php
$tomorrow = mktime(0, 0, 0, date("m"), date("d")+1, date("y"));
echo "Tomorrow is ".date("m/d/y", $tomorrow);
?>
Notice that we used one letter at a time with the function date to get the month, day and year. For
example the date("m") will return the month's number 01-12.
If we were to run our new script just after the 2010 Winter Olympics our display would look
like:
Display:
Tomorrow is 02/28/10
r: Displays the full date, time and timezone offset. It is equivalent to manually entering date("D,
d M Y H:i:s O")
Time:
a: am or pm depending on the time
A: AM or PM depending on the time
G: Hour in 24-hour format without leading zeroes. Values are 0 through 23.
Day:
d: Day of the month with leading zeroes. Values are 01 through 31.
j: Day of the month without leading zeroes. Values 1 through 31
Month:
m: Month number with leading zeroes. Values 01 through 12
n: Month number without leading zeroes. Values 1 through 12
Year:
L: 1 if it's a leap year and 0 if it isn't.
Y: A four digit year format
Other Formatting:
U: The number of seconds since the Unix Epoch (January 1, 1970)
O: This represents the Timezone offset, which is the difference from Greenwich Meridian Time
(GMT). 100 = 1 hour, -600 = -6 hours
We suggest that you take a few minutes to create several timestamps using PHP's mktime
function and just try out all these different letters to get your feet wet with PHP's date function.
Go Back
Continue
At first they were feared by the general public because it was believed they were a serious
privacy risk. Nowadays nearly everyone has cookies enabled on their browser, partly because
there are worse things to worry about and partly because all of the "trustworthy" websites now
use cookies.
This lesson will teach you the basics of storing a cookie and retrieving a cookie, as well as
explaining the various options you can set with your cookie.
1. name: The name of your cookie. You will use this name to later retrieve your cookie, so don't
forget it!
2. value: The value that is stored in your cookie. Common values are username(string) and last
visit(date).
3. expiration: The date when the cookie will expire and be deleted. If you do not set this expiration
date, then it will be treated as a session cookie and be removed when the browser is restarted.
In this example we will be creating a cookie that stores the user's last visit to measure how often
people return to visit our webpage. We want to ignore people that take longer than two months to
return to the site, so we will set the cookie's expiration date to two months in the future!
PHP Code:
<?php
//Calculate 60 days in the future
//seconds * minutes * hours * days + current time
$inTwoMonths = 60 * 60 * 24 * 60 + time();
setcookie('lastVisit', date("G:i - m/d/y"), $inTwoMonths);
?>
Don't worry if you can't follow the somewhat involved date calculations in this example. The
important part is that you know how to set a cookie, by specifying the three important
arguments: name, value and expiration date.
PHP Code:
<?php
if(isset($_COOKIE['lastVisit']))
$visit = $_COOKIE['lastVisit'];
else
echo "You've got some stale cookies!";
This handy script first uses the isset function to be sure that our "lastVisit" cookie still exists on
the user's PC, if it does, then the user's last visit is displayed. If the user visited our site on
February 28, 2008 it might look something like this:
Display:
Your last visit was - 11:48 - 02/28/08
It is important to ponder if the sessions' temporary storage is applicable to your website. If you
require a more permanent storage you will need to find another solution, like a MySQL database.
Sessions work by creating a unique identification(UID) number for each visitor and storing
variables based on this ID. This helps to prevent two users' data from getting confused with one
another when visiting the same webpage.
Note:If you are not experienced with session programming it is not recommended that you use
sessions on a website that requires high-security, as there are security holes that take some
advanced techniques to plug.
Below is a simple script that you should place at the beginning of your PHP code to start up a
PHP session.
PHP Code:
<?php
session_start(); // start up your PHP session!
?>
This tiny piece of code will register the user's session with the server, allow you to start saving
user information and assign a UID (unique identification number) for that user's session.
PHP Code:
<?php
session_start();
$_SESSION['views'] = 1; // store session data
echo "Pageviews = ". $_SESSION['views']; //retrieve data
?>
Display:
Pageviews = 1
In this example we learned how to store a variable to the session associative array $_SESSION
and also how to retrieve data from that same array.
This is where PHP's isset function comes in handy. isset is a function that takes any variable you
want to use and checks to see if it has been set. That is, it has already been assigned a value.
With our previous example, we can create a very simple pageview counter by using isset to
check if the pageview variable has already been created. If it has we can increment our counter.
If it doesn't exist we can create a pageview counter and set it to one. Here is the code to get this
job done:
PHP Code:
<?php
session_start();
if(isset($_SESSION['views']))
$_SESSION['views'] = $_SESSION['views']+ 1;
else
$_SESSION['views'] = 1;
The first time you run this script on a freshly opened browser the if statement will fail because
no session variable views would have been stored yet. However, if you were to refresh the page
the if statement would be true and the counter would increment by one. Each time you reran this
script you would see an increase in view by one.
Cleaning and Destroying your Session
Although a session's data is temporary and does not require that you explicitly clean after
yourself, you may wish to delete some data for your various tasks.
Imagine that you were running an online business and a user used your website to buy your
goods. The user has just completed a transaction on your website and you now want to remove
everything from their shopping cart.
PHP Code:
<?php
session_start();
if(isset($_SESSION['cart']))
unset($_SESSION['cart']);
?>
You can also completely destroy the session entirely by calling the session_destroy function.
PHP Code:
<?php
session_start();
session_destroy();
?>
Destroy will reset your session, so don't call that function unless you are entirely comfortable
losing all your stored session data!
XML Tutorial
XML is a markup language. The mighty ones who created this acronym cheated a little, as XML
stands for eXtensible Markup Language. XML was released in the late 90's and has since
received a great amount of hype. The XML standard was created by W3C to provide an easy to
use and standardized way to store self-describing data (self-describing data is data that describes
both its content and its structure).
In the past, attempts at creating a standardized format for data that could be interpreted by many
different platforms (or applications) failed miserably. XML has largely succeeded in doing this.
Applications of XML
Although there are countless numbers of applications that use XML, here are a few examples of
the current platforms and applications that are making use of this technology:
Cell Phones - XML data is sent to some cell phones. The data is then formatted by the
specification of the cell phone software designer to display text or images, and even to
play sounds!
File Converters - Many applications have been written to convert existing documents into
the XML standard. An example is a PDF to XML converter.
VoiceXML - Converts XML documents into an audio format so that you can listen to an
XML document.