PHP Basics (See PHP on line manual at: PHP - Overview Scripting vs Programming Code Examples –...

Post on 19-Dec-2015

229 views 3 download

transcript

PHP Basics (See PHP on line manual at: http://www.php.net/manual/en/)

PHP - Overview

Scripting vs Programming

Code Examples – PHP; Perl; JSP

PHP Strengths

Basics of PHP

Included files

Variables & Scope

Output

Variable types ; Boolean; Strings

String Functions & Parsers

Screening User Input/Output

Maths functions

Control and flow

PHP

• PHP is a scripting language that allows you to create dynamic web pages

• You can embed php scripting within normal html coding

• PHP was designed primarily for the web

• PHP includes a comprehensive set of database access functions

Scripting vs Programming

• A script is interpreted line by line every time it is run • A true programming language is compiled from its human

readable form(source code) into a machine readable form (binary code) which is delivered to the user as a program.

• Variables in scripting languages are typeless whereas variables in programs need to be declared as a particular type and have memory allocated to them.

• PHP requires programming skills • PHP web sites should be developed within a software

engineering framework

PHP Competitors

• Perl • Microsoft Active Server Pages (ASP) • Java Server Pages (JSP) • Cold Fusion • It would be good to work together to make

equivalent code libraries across scripting languages– Eg. Web Services.

PHP Code Examples<?php

$name = "Lisa"; $date = date ("d-m-Y", time()); ?> <html> <head> <title>Hello World</title> </head> <body> <h1>Hello World</h1> <p>It's <?php echo $date; ?> and all is well. </p> <?php echo "<p>Hello ".$name.".</p>\n"; ?> </body> </html>

Perl Coding Example• #!/usr/local/bin/perl print "Content-type: text/html \n\n"; $date = `/usr/local/bin/date`; $name = "Lisa"; print "<html>"; print "<head>"; print "<title>Hello World</title>" print "</head>\n<body>"; print "<h1>Hello World</h1>"; print "<p>It\'s $date and all is well</p>"; print "<p>Hello $name</p>"; print "</body></html>";

JSP Coding Example<%@ page language="java"

contentType="text/html" %> <%! String name = "Lisa" %> <html><head> <title>Hello World</title> </head> <body> <h1>Hello World</h1> <p>It's <%= new java.util.Date().toString() %> and all is well. </p> <p> Hello <%= name %>.</p> </body> <html>

PHP Strengths

• High performance - see benchmarks at http://www.zend.com • Interfaces to different database systems • Low cost • SourceForge has PHPTriad (Apache, PHP and

MySQL) for Windows • Ease of learning and use • Portability –

– available on multiple platforms, Unix and Windows

Basics of PHP

• PHP files end with .php

other places use .php3 .phtml .php4 as well • PHP code is contained within tags • Canonical: <?php ?> or Short-open: <? ?> • HTML script tags: <script language="php">

</script> • Recommend canonical tags so as not to confuse

with xml tags

Include files• Files can be inserted into other files using include

or require • These files can have any name and be anywhere

on the file system so long as the file trying to include them has appropriate rights

• CAVEAT: if these files are not called blah.php, and they are fetched independently by a browser, they will be rendered in plaintext rather than passed to the PHP interpreter - not good if they contain username/passwords and the like.

Include() eg. Note ‘var scope’

• vars.php<?php$color = 'green';$fruit = 'apple';?>

test.php<?phpecho "A $color $fruit"; // Ainclude 'vars.php';echo "A $color $fruit"; // A green apple?>

Output

• Most things in PHP execute silently • You need to explicitly ask PHP to generate output • Echo is not a function and cannot return a value

– echo "<p>This is a paragraph.</p>";

• Print is a function and returns a value – 1 = success, 0 = failure– print ("<p>This is a paragraph too.</p>");

• Use echo or print statements and View Source for debugging your code

Variables

• All variables begin with $ and can contain letters, digits and underscore (and no digit directly after the $)

• The value of a variable is the value of its most recent assignment

• Don’t need to declare variables • Variables have no intrinsic type other than the type

of their current value • Can have variable variables $$variable

– Like a pointer variable type; best to avoid

• PHP Manual-variables

Variables Scope• Scope refers to where within a script or program a

variable has meaning or a value • Mostly script variables are available to you

anywhere within your script. • Note that variables inside functions are local to

that function and a function cannot access script variables outside the function even if they are in the same file.

• The modifiers global and static allow function variables to be accessed outside the function or to hold their value between function calls respectively

Variable types

• Strings • Numbers

– Integers– doubles

• Booleans– TRUE / FALSE

• Arrays • Objects

Variable Examples• Integer$a = 1234; # decimal number$a = -123; # a negative number$a = 0123; # octal number (equivalent to 83 decimal)$a = 0x1A; # hexadecimal number (equivalent to 26 decimal)• Floating Point Numbers$a = 1.234; $a = 1.2e3; $a = 7E-10;• Boolean$foo = True; // assign the value TRUE to $foo

// == is an operator which returns a boolean if ($action == "show_version") { echo "The version is 1.23"; } // this is not necessary: if ($show_separators == TRUE) { echo "<hr>\n"; } // because you can simply type this: if ($show_separators) { echo "<hr>\n"; }

Variable Examples cont.• Strings (single or double quoted) echo 'this is a simple string'; echo 'You can also have embedded newlines in strings, like this way.'; echo 'Arnold once said: "I\'ll be back"'; // output: ... "I'll be back"echo 'Are you sure you want to delete C:\*.*?'; // output: ... delete C:\*.*?• Arrays$error_descriptions[E_ERROR] = "A fatal error has occurred"; $error_descriptions[E_WARNING] = "PHP issued a warning";$error_descriptions[E_NOTICE] = "This is just an informal notice";

the last example is in fact the same as writing: $error_descriptions[1] = "A fatal error has occurred";$error_descriptions[2] = "PHP issued a warning";$error_descriptions[8] = "This is just an informal notice";(The first method is useful if E_ERROR is defined as a constant etc).

Constants and Globals

• To define a constant:define(“PI”, 3.1416);$area = PI*$radius*$radius ;

• Globals:– Defined outside any function; eg form variables…global $var1, $var2 ……function xyz() { $localvarX = $var1 …}

Boolean

• Unlike PHP3, PHP4 has a boolean type – if (TRUE) print ("This will always print");

• A number is FALSE if it exactly equals 0 otherwise it is TRUE

• A string is FALSE if it is empty (has zero characters) or is "0" otherwise it is TRUE

• An array or object is FALSE if it contains no other values and is TRUE otherwise

Arrays in PHP• An array in PHP is actually an ordered map which maps values to

keys. An array can be thought of in many ways. Each of the concepts below can be implemented in a PHP array, so you can choose which ever of these ideas that you understand to conceptualise an array.

• linearly indexed array

• list (vector)

• hashtable (which is an implementation of a map)

• dictionary

• collection

• stack (LIFO)

• queue (FIFO)

• can easily simulate trees and linked lists with arrays of arrays

Eg: Numerically-indexed arrays (Vector array)• Say that we have a list of marks out of 100 in a subject 95, 93, 56,

70, 65, 98– array value 1 - 95 – array value 2 - 93 – array value 3 - 56 – array value 4 - 70 – array value 5 - 65 – array value 6 - 98

• $marks = array (95, 93, 56, 70, 65, 98); generates a numerically-indexed array

$marks[0] = 95 ;$marks[1] = 93 ;$marks[2] = 56 ;$marks[3] = 70 ;$marks[4] = 65 ;$marks[5] = 98 ;

Example: Numerically-indexed arrays (cont)• The following code also generates a numerically-

indexed array, allocating the next index after the highest current index to the element.– $marks[] = 95;– $marks[] = 93;

• marks[0] is 95 and marks[1] is 93.• Note that array indexes start at 0 by default.• You can skip indices by allocating a specific index to

a value -– $marks[5] = 56;– $marks[] = 70;

• will allocate 70 to $marks[6].– marks[5] is 56 and marks[6] is 70.

Associative arrays

• Say we have a list of marks out of 100 in a subject and we want to know who got what mark:– Adrian - 95, Matty - 93, Lance - 56, Stephen - 70,

Craig - 65, Andy - 98$marks = array ("Adrian"=>93, "Lance"=>56,

"Stephen"=>70, "Craig"=>65, "Andy"=>98);

• maps a value to a key • name is the key (Adrian,Lance etc)• mark is the value (93, 56 etc)

List an associative array• list() in conjunction with each() assigns a key /

value pair into the variables $key and $variable. The following code prints each key / value pair into a table. Note that $value might itself be an array.

reset($marks); // go to the beginning of the array echo "<table border=\"1\">“; //note escape sequenceswhile (list($key, $value) = each($marks)) { echo "<tr><td>$key</td><td>$value</td></tr>\n"; } echo "</table><hr>";

List an associative array (cont)• each() actually returns an array for each array item

which includes the key and value as well as the index 0 mapped to the key and the index 1 mapped to the value. Reset() puts the index pointer back to 0. Hence if you are more comfortable with numeric indexes, you can do the following:

reset($marks); while ($row = each($marks)) { echo "Mark for $row[0] is $row[1]<br />"; }

Array functions• Foreach is another way to iterate through an

array.foreach ($marks as $index => $mark ){ echo “<br> $index => $mark”;}

• Index Pointer manipulation• Current() $mark = current($marks);• Next() $nextmark = next($marks);• Prev() $prevmark = prev($marks);

• Sorting– Sort() ; asort(); rsort() etc

Strings

• Dot operator for concatenation (joining) • singly quoted read in and store literally • double quoted – allow for variable substitution• certain sequences beginning with \ are replaced

with special characters + \n \t \r \$ \" \\ • Variable names are replaced with string

representations of their values • Variable interpolation • No limit on string length

String Functions

• boolean strcmp ($str1, $str2)

• boolean strcasecmp ($str1, $str2)

• boolean strstr ($str1, $str2)

• boolean stristr ($str1, $str2)

• int strlen($str)

• string substr ($str, $start_pos, $len)

String functions (cont)

• string chop ($str)

• string ltrim ($str)

• string trim ($str)

• string str_replace ($old_txt, $new_txt, $text)

• string substr_replace ($old_txt, $new_txt, $text)

• strtolower($str)

• strtoupper($str)

• ucfirst($str)

• ucwords($str)

• these last two don’t correct inappropriate upper case to lower case

Formatting User Input/Output• addslashes($str) • stripslashes($str) • magic_quotes_gpc($str) • not magic_quotes_runtime($query) • escapeshellcmd($str) • strip_tags($str) • htmlspecialchars($str) • htmlentities($str) • nl2br($str) • Urlencode()• Rawurlencode() etc

Maths functions• + - / * % • ++ -- • += -= *= • = is set to (assignment)• = = is equivalent to eg $a == $b Equal TRUE if $a is equal to $b.• = = = is identical to eg $a === $b Identical TRUE if $a is equal to $b,

and they are of the same type. (PHP 4 only) • $low_int = floor ($double) • $high_int = ceil ($double) • $nearest_int = round ($double)

– (nearest even number if exactly .5)

• $positive = abs ($number) • $min = min ($n1, $n2 … , $nn) • $max = max ($n1, $n2 … , $nn)

Control and flow• if (expr1) { } elseif (expr2) { } else { } • while (cond) { }• do { } while (cond) • switch ($var) case a { } case b { } • for ($i = 0; $i < expr; $i ++) { } • foreach (array_expr as $value) { } • foreach (array_expr as $key=>$value) { } • break [1] • continue

If.. Then.. else* if ($a > $b) print "a is bigger than b";* if ($a > $b) { print "a is bigger than b"; $b = $a; }* if ($a > $b) { print "a is bigger than b"; } elseif ($a == $b) { print "a is equal to b"; } else { print "a is smaller than b"; }* echo "You have $i ". ($i==1 ? "message" : "messages"). " in your mailbox.\n";

While/* example 1 */

$i = 1; while ($i <= 10) { print $i++; /* the printed value would be $i before the increment (post-increment) */ } /* example 2 - alternative notation to using the braces - : and endwhile*/ $i = 1; while ($i <= 10): print $i; $i++; endwhile;

For loops/* example 1 similar to C syntax */ for ($i = 1; $i <= 10; $i++) { print $i; } /* example 2 */ for ($i = 1;;$i++) { if ($i > 10) { break;

} print $i;

} /* example 3 */ $i = 1; for (;;) { if ($i > 10) { break; } print $i; $i++; } /* example 4 */ for ($i = 1; $i <= 10; print $i, $i++);

ForeachAn easy way to iterate over arrays. There are two syntaxes; the second is

a minor but useful extension of the first:

foreach(array_expression as $value) statement

foreach(array_expression as $key => $value) statement

The following are functionally identical:

//example 1 //

reset ($arr); while (list(, $value) = each ($arr)) { echo "Value: $value<br>\n"; }//example 2 // foreach ($arr as $value) { echo "Value: $value<br>\n"; }

Foreach cont./* foreach example 1: value only */$a = array (1, 2, 3, 17); foreach ($a as $v) { print "Current value of \$a: $v.\n"; } /* foreach example 2: value (with key printed for illustration) */ $a = array (1, 2, 3, 17); $i = 0; /* for illustrative purposes only */ foreach($a as $v) { print "\$a[$i] => $v.\n"; $i++; } /* foreach example 3: key and value */ $a = array ( "one" => 1, "two" => 2, "three" => 3, "seventeen" => 17 ); foreach($a as $k => $v) { print "\$a[$k] => $v.\n"; }

Break & Continue-break ends execution of the current for, foreach while,

do..while or switch structure. $arr = array ('one', 'two', 'three', 'four', 'stop', 'five'); while (list ($key, $val) = each ($arr)) { if ($val == 'stop') { break; /* You could also write 'break 1;' here. */ } echo "$val<br>\n";} /* note list() is a multiple assignment function; the key and value returned by

each() are assigned to $key and $value. $key is not used in this example.

-continue is used within looping structures to skip the rest of the current loop iteration and continue execution at the beginning of the next iteration.

Switchif ($i == 0) { print "i equals 0"; }if ($i == 1) { print "i equals 1";}if ($i == 2) { print "i equals 2"; }/* this is equivalent */ switch ($i) { case 0:

print "i equals 0"; break; case 1: print "i equals 1"; break; case 2: print "i equals 2"; break; }

require() and include()• require() includes and evaluates a specific file.

• require() and include() are identical in every way except how they handle failure. include() produces a Warning while require() results in a Fatal Error.

<?php require 'prepend.php'; require $somefile;require ('somefile.txt');?>

• require_once() or include_once() should be used in cases where the same file might be included and evaluated more than once during a particular execution of a script, and you want to be sure that it is included exactly once to avoid problems with function redefinitions, variable value reassignments, etc.

Running an Apache PHP web server on SNG

• you have an SNG account

• login to your account using telnet

• your home directory on sng is something like: /cc/staff1/l/lzwise/ (you can use pwd to find out the exact path to your directory)

• think of a number between 5000 and 10000 which no one else has thought of (to use as a port number)

• run the command makeserver and set the scratch directory

• run the command startserver– you may see this error: kill: 1044559: no such process - ignore

it :-)

• stop the server with the command stopserver

/usr/local/bin/makeserver.readme• It creates serveral files/directories• Files: (root = /scratch/username)

– $root/apache/httpd.conf– $root/apache/stopserver– $root/apache/startserver

• Directories– $root/apache/logs– $root/apache/cgi-bin– $root/apache/htdocs

• All of the directories start empty. The access and error logs will be created in the logs directories once the server is running.

• Content should be added to the htdocs directory.

Examples of PHP

• Examples of PHP at zend.com - code gallery– http://www.zend.com/zend/tut/

• http://www.phpbuilder.com/ see code library

• http://www.eltcalendar.com/stuff/convert.php