PHP ITCS 323

74
ITCS 323 Web Programming Concepts III

description

ITCS 323 PHP STUDY POWER POINT PRESENTAION

Transcript of PHP ITCS 323

Page 1: PHP ITCS 323

ITCS 323

Web Programming Concepts III

Page 2: PHP ITCS 323

COURSE OVERVIEW

Page 3: PHP ITCS 323

What is PHP?

recursive acronym for PHP: Hypertext Preprocessor

a widely-used open source general-purpose scripting language

Page 4: PHP ITCS 323

What is PHP?

especially suited for web development and can be embedded into HTML

is a server-side scripting languagescripts are executed on the serversupports many databases (MySQL, Informix,

Oracle, Sybase, Solid, PostgreSQL, Generic ODBC

Page 5: PHP ITCS 323

What is PHP?

PHP files can contain text, HTML tags and scripts PHP pages contain HTML with embedded code

that does "something" have a file extension of ".php", ".php3", or

".phtml“enclosed in special start and end processing

instructions <?php and ?> allow you to jump into and out of "PHP mode."

Page 6: PHP ITCS 323

Example

• <!DOCTYPE HTML PUBLIC <html> <head> <title>Example</title> </head> <body>

<?php echo “Hello World!"; ?>

</body></html>

Page 7: PHP ITCS 323

Why PHP?

open source softwarefree to download and use

runs on different platforms (Windows, Linux, Unix, Mac OS X, RISC OS, etc.)

compatible with almost all servers used today (Apache, IIS, etc.)

support for a wide range of databaseswith PHP, you have the freedom of choosing an

operating system and a web server

Page 8: PHP ITCS 323

Why PHP?

not limited to output HTML PHP's abilities includes outputting images, PDF

files and even Flash movies (using libswf and Ming) generated on the fly

can autogenerate files, and save them in the file system

Page 9: PHP ITCS 323

Why PHP?

1. Easy to UseCode is embedded into HTML. The PHP code is enclosed in special start and end tags that allow you to jump into and out of "PHP mode".

• <html> <head> <title>Example</title> </head> <body>

<?php echo "Hi, I'm a PHP script!"; ?>

Page 10: PHP ITCS 323

Why PHP?

2. Cross PlatformRuns on almost any Web server on several operating systems.One of the strongest features is the wide range of supported databases

Web Servers: Apache, Microsoft IIS, Caudium, Netscape Enterprise Server

Operating Systems: UNIX (HP-UX,OpenBSD,Solaris,Linux), Mac OSX, Windows NT/98/2000/XP/2003

Supported Databases: Adabas D, dBase,Empress, FilePro (read-only), Hyperwave,IBM DB2, Informix, Ingres, InterBase, FrontBase, mSQL, Direct MS-SQL, MySQL, ODBC, Oracle (OCI7 and OCI8), Ovrimos, PostgreSQL, SQLite, Solid, Sybase, Velocis,Unix dbm

Page 11: PHP ITCS 323

Why PHP?

3.Cost BenefitsPHP is free. Open source code means that the entire PHP community will contribute towards bug fixes. There are several add-on technologies (libraries) for PHP that are also free.

PHP

Software Free

Platform Free (Linux)

Development Tools FreePHP Coder, jEdit

Page 12: PHP ITCS 323

Difference?

Compare to other client-side program like java script. PHP code is executed on the server

PHP combined with MySQL are cross-platform (you can develop in Windows and serve on a Unix platform)

It is an open source

Page 13: PHP ITCS 323

Three main areas where PHP scripts are used.

1. Server-side scripting.2. Command line scripting.3. Writing desktop applications.

Page 14: PHP ITCS 323

Three main areas where PHP scripts are used.

1. Server-side scripting. most traditional and main target field for PHP three things to make this work

1. PHP parser (CGI or server module)2. web server3. web browser

Page 15: PHP ITCS 323

Three main areas where PHP scripts are used.

2. Command line scripting run PHP script without any server or browser only need the PHP parser to use this type of usage is ideal for scripts regularly

executed using cron (on *nix or Linux) or Task Scheduler (on Windows).

These scripts can also be used for simple text processing tasks

Page 16: PHP ITCS 323

Three main areas where PHP scripts are used.

3. Writing desktop applications. One of the advance features of PHP have the ability to write cross-platform

applications PHP-GTK is an extension to PHP not available in the main distribution

Page 17: PHP ITCS 323

What is needed?

Web sever that support php (apache server)Sql database (MySql)PHP installer

Page 18: PHP ITCS 323

Assignment

• How to install, configure and use php• Give different AMP packages• Give different php functions, give example

code and syntax

Page 19: PHP ITCS 323

BRIEF HISTORYOverview to PHP

Page 20: PHP ITCS 323

Brief HistoryPHP (PHP: Hypertext Preprocessor) was created by Rasmus Lerdorf in 1994. It was

initially developed for HTTP usage logging and server-side form generation in Unix.

PHP 2 (1995) transformed the language into a Server-side embedded scripting language. Added database support, file uploads, variables, arrays, recursive functions, conditionals, iteration, regular expressions, etc.

PHP 3 (1998) added support for ODBC data sources, multiple platform support, email protocols (SNMP,IMAP), and new parser written by Zeev Suraski and Andi Gutmans .

PHP 4 (2000) became an independent component of the web server for added efficiency. The parser was renamed the Zend Engine. Many security features were added.

PHP 5 (2004) adds Zend Engine II with object oriented programming, robust XML support using the libxml2 library, SOAP extension for interoperability with Web Services, SQLite has been bundled with PHP

Page 21: PHP ITCS 323

As of August 2004, PHP is used on 16,946,328 Domains, 1,348,793 IP Addresses http://www.php.net/usage.php

This is roughly 32% of all domains on the web.

Page 22: PHP ITCS 323

PHP START UPIntroduction

Page 23: PHP ITCS 323

Objectives

PHP StructureVariables, operators, and CommentsPHP ArraysPassing Variables in LinksHTML special CharactersPassing Variables in Forms

Page 24: PHP ITCS 323
Page 25: PHP ITCS 323
Page 26: PHP ITCS 323

Installation Procedure

1. install your selected HTTP (web) server on your system, and make sure that it works.

2. Run the executable installer and follow the instructions provided by the installation wizard. Two types of installation are supported –

1. standard, which provides sensible defaults for all the settings it can,

2. advanced, which asks questions as it goes along.

Page 27: PHP ITCS 323

Installation Procedure

3. The installation wizard gathers enough information to set up the php.ini file, and configure certain web servers to use PHP. One of the web servers the PHP installer does not configure for is Apache, so you'll need to configure it manually.

4. Once the installation has completed, the installer will inform you if you need to restart your system, restart the server, or just start using PHP.

Page 28: PHP ITCS 323

PHP Script• Typically file ends in .php--this is set by the web

server configuration • Separated in files with the <?php ?> tag • php commands can make up an entire file, or can

be contained in html--this is a choice….• Program lines end in ";" or you get an error• Server recognizes embedded script and executes• Result is passed to browser, source isn't visible<P><?php $myvar = "Hello World!"; echo $myvar;?></P>

Page 29: PHP ITCS 323

Two ways

• You can embed sections of php inside html:

• Or you can call html from php:

<BODY><P><?php $myvar = "Hello World!"; echo $myvar;</BODY>

<?phpecho "<html><head><title>Howdy</title>…?>

Page 30: PHP ITCS 323

Variables• Typed by context (but one can force type), so it's

loose• Begin with "$" (unlike javascript!)• Assigned by value

– $foo = "Bob"; $bar = $foo;

• Assigned by reference, this links vars– $bar = &$foo;

• Some are preassigned, server and env vars– For example, there are PHP vars, eg. PHP_SELF, HTTP_GET_VARS

Page 31: PHP ITCS 323

Variables• Case-sensitive ($Foo != $foo != $fOo)• Global and locally-scoped variables

– Global variables can be used anywhere– Local variables restricted to a function or class

• Certain variable names reserved by PHP– Form variables ($_POST, $_GET)– Server variables ($_SERVER)– Etc.

Page 32: PHP ITCS 323

Variable of variable

• Using the value of a variable as the name of a second variable)$a = "hello";$$a = "world";

• Thus:echo "$a ${$a}";

• Is the same as: echo "$a $hello";

• But $$a echoes as "$hello"….

Page 33: PHP ITCS 323

Variable usage

<?php$foo = 25; // Numerical variable$bar = “Hello”; // String variable

$foo = ($foo * 7); // Multiplies foo by 7$bar = ($bar * 7); // Invalid expression ?>

Page 34: PHP ITCS 323

Constant

• You cannot alter the value of constant after declaration– -define(CONSTANT, “value”);– -print CONSTANT;

Page 35: PHP ITCS 323

Magic Constants

• PHP has lot of predefined variables• Also, predefined Constants:

– _LINE_– _FILE_– _FUNCTION_– _CLASS_– _METHOD_

Page 36: PHP ITCS 323

Echo

• The PHP command ‘echo’ is used to output the parameters passed to it– The typical usage for this is to send data to the

client’s web-browser• Syntax

– void echo (string arg1 [, string argn...]) – In practice, arguments are not passed in

parentheses since echo is a language construct rather than an actual function

Page 37: PHP ITCS 323

Echo Example

• Notice how echo ‘5x5=$foo’ outputs $foo rather than replacing it with 25

• Strings in single quotes (‘ ’) are not interpreted or evaluated by PHP

• This is true for both variables and character escape-sequences (such as “\n” or “\\”)

<?php$foo = 25; // Numerical variable$bar = “Hello”; // String variable

echo $bar; // Outputs Helloecho $foo,$bar; // Outputs 25Helloecho “5x5=”,$foo; // Outputs 5x5=25echo “5x5=$foo”; // Outputs 5x5=25echo ‘5x5=$foo’; // Outputs 5x5=$foo?>

Page 38: PHP ITCS 323

Concatenation

• Use a period to join strings into one.

<?php$string1=“Hello”;$string2=“PHP”;$string3=$string1 . “ ” . $string2;Print $string3;?>

Hello PHP

Page 39: PHP ITCS 323

Escaping the Characters

• If the string has a set of double quotation marks that must remain visible, use the \ [backslash] before the quotation marks to ignore and display them.

<?php$heading=“\”Computer Science\””;Print $heading;?>

“Computer Science”

Page 40: PHP ITCS 323

Date Display$datedisplay=date(“yyyy/m/d”);Print $datedisplay;# If the date is April 1st, 2009# It would display as 2009/4/1

2009/4/1

$datedisplay=date(“l, F d, Y”);Print $datedisplay;# If the date is April 1st, 2009# Wednesday, April 1, 2009

Wednesday, April 1, 2009

Page 41: PHP ITCS 323

Month, Day, Date Format SymbolM Jan

F January

m 01

n 1

Day of Month d 01

Day of Month J 1

Day of Week l Monday

Day of Week D Mon

Page 42: PHP ITCS 323

PHPinfo()• The phpinfo() function shows the php

environment• Use this to read system and server

variables, setting stored in php.ini, versions, and modules

• Notice that many of these data are in arrays• This is the first script you should write…

Page 43: PHP ITCS 323

Operator• Arithmetic (+, -, *, /, %) and String (.)• Assignment (=) and combined assignment

$a = 3;$a += 5; // sets $a to 8;$b = "Hello ";$b .= "There!"; // sets $b to "Hello There!";

• Bitwise (&, |, ^, ~, <<, >>) – $a ^ $b (Xor: Bits that are set in $a or $b but not both are set.)

– ~ $a (Not: Bits that are set in $a are not set, and vice versa.)

• Comparison (==, ===, !=, !==, <, >, <=, >=)

Page 44: PHP ITCS 323

Arithmetic Operation

• $a - $b // subtraction• $a * $b // multiplication• $a / $b // division• $a += 5 // $a = $a+5 Also works for *=

and /=

<?php$a=15;$b=30;$total=$a+$b;Print $total;Print “<p><h1>$total</h1>”;// total is 45

?>

Page 45: PHP ITCS 323

Coercion• Just like javascript, php is loosely typed• Coercion occurs the same way• If you concatenate a number and string, the

number becomes a string

Page 46: PHP ITCS 323

Operators• Error Control (@)

– When this precedes a command, errors generated are ignored (allows custom messages)

• Execution (` is similar to the shell_exec() function)– You can pass a string to the shell for execution:

$output = `ls -al`;$output = shell_exec("ls -al");

– This is one reason to be careful about user set variables!

• Incrementing/Decrementing++$a (Increments by one, then returns $a.)$a++ (Returns $a, then increments $a by one.)--$a (Decrements $a by one, then returns $a.)$a-- (Returns $a, then decrements $a by one.)

Page 47: PHP ITCS 323

Operators• Logical

$a and $b And True if both $a and $b are true.$a or $b Or True if either $a or $b is true.$a xor $b Xor True if either $a or $b is true,

but not both.! $a Not True if $a is not true.$a && $b And True if both $a and $b are true.$a || $b Or True if either $a or $b is true.

• The two ands and ors have different precedence rules, "and" and "or" are lower precedence than "&&" and "||"

• Use parentheses to resolve precedence problems or just to be clearer

Page 48: PHP ITCS 323

Control Structure

• Wide Variety available– if, else, elseif– while, do-while– for, foreach– break, continue, switch– require, include, require_once, include_once

Mostly parallel to what we've covered already in javascriptif, elseif, else, while, for, foreach, break and continue

Page 49: PHP ITCS 323

Control Structure Control Structures: Are the structures within a language that allow us to control the flow of execution through a program or script. Grouped into conditional (branching) structures (e.g. if/else) and repetition structures (e.g. while loops). Example if/else if/else statement:

if ($foo == 0) {echo ‘The variable foo is equal to 0’;

}else if (($foo > 0) && ($foo <= 5)) {

echo ‘The variable foo is between 1 and 5’;}else {

echo ‘The variable foo is equal to ‘.$foo;}

Page 50: PHP ITCS 323

If….Else

• If (condition){

Statements;}Else{

Statement;}

<?phpIf($user==“John”){

Print “Hello John.”;}Else{

Print “You are not John.”;}?>

Page 51: PHP ITCS 323

Alternative Syntax

• Applies to if, while, for, foreach, and switch• Change the opening brace to a colon• Change the closing brace to an endxxx

statement

<?php if ($a == 5): ?>A is equal to 5<?php endif; ?>

<?phpif ($a == 5): echo "a equals 5"; echo "...";else: echo "a is not 5";endif;?>

Page 52: PHP ITCS 323

While…loop

• While (condition){

Statements;}

<?php$count=0;While($count<3){

Print “hello PHP. ”;$count += 1;// $count = $count + 1;// or// $count++;

?>

hello PHP. hello PHP. hello PHP.

Page 53: PHP ITCS 323

Switch

• Switch, which we've seen, is very useful• These two do the same

things….

if ($i == 0) { echo "i equals 0";} elseif ($i == 1) { echo "i equals 1";} elseif ($i == 2) { echo "i equals 2";}

switch ($i) {case 0: echo "i equals 0"; break;case 1: echo "i equals 1"; break;case 2: echo "i equals 2"; break;}

Page 54: PHP ITCS 323

Function

• Functions MUST be defined before then can be called• Function headers are of the format

– Note that no return type is specified

• Unlike variables, function names are not case sensitive (foo(…) == Foo(…) == FoO(…))

function functionName($arg_1, $arg_2, …, $arg_n)

Page 55: PHP ITCS 323

Function Example

<?php // This is a function

function foo($arg_1, $arg_2) { $arg_2 = $arg_1 * $arg_2; return $arg_2;}

$result_1 = foo(12, 3); // Store the function echo $result_1; // Outputs 36echo foo(12, 3); // Outputs 36

?>

Page 56: PHP ITCS 323

Include FilesInclude “opendb.php”;Include “closedb.php”;This inserts files; the code in files will be inserted into current code. This will

provide useful and protective means once you connect to a database, as well as for other repeated functions.

Include (“footer.php”);The file footer.php might look like:

<hr SIZE=11 NOSHADE WIDTH=“100%”><i>Copyright © 2008-2010 KSU </i></font><br><i>ALL RIGHTS RESERVED</i></font><br><i>URL: http://www.kent.edu</i></font><br>

Page 57: PHP ITCS 323

Scope<?php$a = “Pekka”;Print “My Name is “. $a;?>

<?php$a = “Pekka”;Function test() {Print $a;}Print “My Name is “;Test();?>

Page 58: PHP ITCS 323

Scope<?php$a = “Pekka”;Function test() {global $a;Print $a;}Print “My Name is “;Test();?>

Page 59: PHP ITCS 323

PHP BASIC

Page 60: PHP ITCS 323

Strings

Page 61: PHP ITCS 323

PHP FORMS AND SESSIONMy First PHP script

Page 62: PHP ITCS 323

PHP Forms•Access to the HTTP POST and GET data is simple in PHP•The global variables $_POST[] and $_GET[] contain the request data <?php

if ($_POST["submit"]) echo "<h2>You clicked Submit!</h2>"; else if ($_POST["cancel"]) echo "<h2>You clicked Cancel!</h2>";?><form action="form.php" method="post"> <input type="submit" name="submit" value="Submit"> <input type="submit" name="cancel" value="Cancel"></form>

http://www.cs.kent.edu/~nruan/form.php

Page 63: PHP ITCS 323

Why PHP Sessions?Whenever you want to create a website that allows you to store and display information about a user, determine which user groups a person belongs to, utilize permissions on your website or you just want to do something cool on your site, PHP's Sessions are vital to each of these features.

Cookies are about 30% unreliable right now and it's getting worse every day. More and more web browsers are starting to come with security and privacy settings and people browsing the net these days are starting to frown upon Cookies because they store information on their local computer that they do not want stored there.

PHP has a great set of functions that can achieve the same results of Cookies and more without storing information on the user's computer. PHP Sessions store the information on the web server in a location that you chose in special files. These files are connected to the user's web browser via the server and a special ID called a "Session ID". This is nearly 99% flawless in operation and it is virtually invisible to the user.

Page 64: PHP ITCS 323

PHP Sessions

http://www.cs.kent.edu/~nruan/form.php

•Sessions store their identifier in a cookie in the client’s browser•Every page that uses session data must be proceeded by the session_start() function•Session variables are then set and retrieved by accessing the global $_SESSION[]

•Save it as session.php <?php

session_start(); if (!$_SESSION["count"]) $_SESSION["count"] = 0; if ($_GET["count"] == "yes") $_SESSION["count"] = $_SESSION["count"] + 1; echo "<h1>".$_SESSION["count"]."</h1>";?><a href="session.php?count=yes">Click here to count</a>

Page 65: PHP ITCS 323

Avoid Error PHP SessionsPHP Example: <?php echo "Look at this nasty error below:<br />"; session_start(); ?> Error!

PHP Example: <?php session_start(); echo "Look at this nasty error below:"; ?> Correct

Warning: Cannot send session cookie - headers already sent by (output started at session_header_error/session_error.php:2) in session_header_error/session_error.php on line 3

Warning: Cannot send session cache limiter - headers already sent (output started at session_header_error/session_error.php:2) in session_header_error/session_error.php on line 3

Page 66: PHP ITCS 323

Destroy PHP SessionsDestroying a Session

why it is necessary to destroy a session when the session will get destroyed when the user closes their browser. Well, imagine that you had a session registered called "access_granted" and you were using that to determine if the user was logged into your site based upon a username and password. Anytime you have a login feature, to make the users feel better, you should have a logout feature as well. That's where this cool function called session_destroy() comes in handy. session_destroy() will completely demolish your session (no, the computer won't blow up or self destruct) but it just deletes the session files and clears any trace of that session.

NOTE: If you are using the $_SESSION superglobal array, you must clear the array values first, then run session_destroy.

Here's how we use session_destroy():

Page 67: PHP ITCS 323

Destroy PHP Sessions

http://www.cs.kent.edu/~nruan/form.php

<?php // start the session session_start(); header("Cache-control: private"); //IE 6 Fix $_SESSION = array(); session_destroy(); echo "<strong>Step 5 - Destroy This Session </strong><br />"; if($_SESSION['name']){     echo "The session is still active"; } else {     echo "Ok, the session is no longer active! <br />";     echo "<a href=\"page1.php\"><< Go Back Step 1</a>"; } ?>

Page 68: PHP ITCS 323

PHP Script• Save as sample.php:

<!– sample.php --><html><body>

<strong>Hello World!</strong><br /> <?php

echo “<h2>Hello, World</h2>”; ?> <?php

$myvar = "Hello World";echo $myvar;

?></body></html>

Page 69: PHP ITCS 323

Example – Show data into table

• Function: list all tables in your database. Users can select one of tables, and show all contents in this table.

• second.php• showtable.php

Page 70: PHP ITCS 323

Example – Show data into table• second.php<html><head><title>MySQL Table Viewer</title></head><body><?php// change the value of $dbuser and $dbpass to your username and password$dbhost = 'hercules.cs.kent.edu:3306';$dbuser = 'nruan';$dbpass = ‘*****************’;$dbname = $dbuser;$table = 'account';$conn = mysql_connect($dbhost, $dbuser, $dbpass);if (!$conn) { die('Could not connect: ' . mysql_error());}if (!mysql_select_db($dbname)) die("Can't select database");

Page 71: PHP ITCS 323

Example – Show data into table• second.php<html><head><title>MySQL Table Viewer</title></head><body><?php// change the value of $dbuser and $dbpass to your username and password$dbhost = 'hercules.cs.kent.edu:3306';$dbuser = 'nruan';$dbpass = ‘*****************’;$dbname = $dbuser;$table = 'account';$conn = mysql_connect($dbhost, $dbuser, $dbpass);if (!$conn) { die('Could not connect: ' . mysql_error());}if (!mysql_select_db($dbname)) die("Can't select database");

Page 72: PHP ITCS 323

Example – Show data into table• Showtable.php

<html><head><title>MySQL Table Viewer</title></head><body><?php$dbhost = 'hercules.cs.kent.edu:3306';$dbuser = 'nruan';$dbpass = ‘**********’;$dbname = 'nruan';$table = $_POST[“table”];$conn = mysql_connect($dbhost, $dbuser, $dbpass);if (!$conn)

die('Could not connect: ' . mysql_error());if (!mysql_select_db($dbname))

die("Can't select database");$result = mysql_query("SELECT * FROM {$table}");if (!$result) die("Query to show fields from table failed!" . mysql_error());

Page 73: PHP ITCS 323

Example – Show data into table• Showtable.php (cont)$fields_num = mysql_num_fields($result);echo "<h1>Table: {$table}</h1>";echo "<table border='1'><tr>";// printing table headersfor($i=0; $i<$fields_num; $i++) {

$field = mysql_fetch_field($result);echo "<td><b>{$field->name}</b></td>";

}echo "</tr>\n";while($row = mysql_fetch_row($result)) {

echo "<tr>";// $row is array... foreach( .. ) puts every element// of $row to $cell variableforeach($row as $cell)

echo "<td>$cell</td>";echo "</tr>\n";

}mysql_free_result($result);mysql_close($conn);?></body></html>

Page 74: PHP ITCS 323

Function Covered• mysql_connect() mysql_select_db()• include()• mysql_query() mysql_num_rows()• mysql_fetch_array() mysql_close()