1 Working With PHP David Lash Module 1 Getting Started
2 Objectives l To understand what PHP is »What is HTML »How PHP compares with CGI l Getting Started with PHP »Your first script »PHP syntax and embedding in HTML »Finding out about your PHP configuration l Using PHP variables »Numerical variables and operators »String variables, operators and a few functions Separating PHP from HTML using <?=
3 Competencies l At end of unit be able to »Understand how PHP compares with other dynamic technologies »Create a Web Page with PHP embedded »Receive input into PHP script with variables Competency Alert: You need to know this ! Common Problem Area! People seem to forget this
4 Ummm, What is HTML used for? l HTML primarily... »Provides instructions to browser on how file should display. –Has a set of markup language commands –Can include graphical image files l HTML documents are Static. »For example, cannot use HTML alone to: – have a document display current time –receive results of a form, query a database, and display the results –Open an input file and based on its contents, display different document content
5 Accessing HTML Files Note: The file is just retrieved no code is executed on server Note2: HTML tags interpreted on client by browser. http protocol
6 HTTP, Web Servers, Clients … l Hyper Text Transport Protocol – The protocol used to move data between Web server and Web browser. l Web Server Machine: A machine that runs web server software that listens for incoming requests on a port. »They have Internet IP addresses (e.g., ) and listen on a specific ports – :80 l Web Server Software - an application, that exchanges data between Web server and Web browser. »Uses HTTP »Excepts a requests (e.g., from browser) in a specific format. »Responds to browser in a specific format. »For example, a request consist of TOP LINE, HEADER and BODY (BODY is sometimes absent). »HEADER and BODY are separated by an empty line.
7 HTML? l The Hypertext Markup Language (HTML) »used coded HTML tags »provide Web browsers display instructions. l HTML is » It is simple to use and understand » It provides ways to include things like text, graphics, sounds, links. » It is STANDARD » Its creation (and use) is one of the big reasons the WWW became popular
8 Major Server-Side Web Technologies l CGI - Computer Gateway Interface »Web Servers enable computer variety of computer languages to dynamically generate HTML »E.g. Perl, C, Unix Shell, C++ l Web Server add-on »Builds on to existing web servers – E.g., Cold Fusion l Embedded Web server »Web server has scripting language built into it. »Comprises most modern scripting technologies –ASP, JSP, PHP Competency Alert: You need to know this !
9 Often the Choice Depends on Web Server l If running a Microsoft Web Server (e.g., IIS) »More likely to use ASP or ASP.net l If running UNIX/Linux (e.g., Apache) »more likely to use PHP, or JSP. Source netscrat
10 What Is PHP? Advantages of Using PHP to enhance Web pages: »Easy to use. »Open source. »Multiple platform. l Started around 1996 when »Rasmus Lerdorf (a consultant) wanted to know number of people viewing his on- line resume. »Developed a CGI/Perl script that counted visitors and logged some visitor information. »He received many inquires for his CGI/Perl toolset so started giving it away for free (and called it Personal Home Page). »Got so many requests for additions, developed a next release of toolset (called PHP 2.0) »PHP 2.0 became popular and PHP moved to open source model.
11 How PHP Pages are Accessed and Interpreted
12 Compare with CGI Note this can be shell script, perl script, C program or whatever. On a UNIX server this is a fork operation
13 Objectives l To understand what PHP is »What is HTML »How PHP compares with CGI l Getting Started with PHP »Your first script »PHP syntax and embedding in HTML »Finding out about your PHP configuration l Using PHP variables »Numerical variables and operators »String variables, operators and a few functions Separating PHP from HTML using <?=
14 Getting Started with PHP To develop and publish PHP scripts you need: »A Web server with PHP built into it »A client machine with a basic text editor and Internet connection »FTP or Telnet software Its worth noting: There are a couple good IDEs for PHP. They basically allow you create PHP scripts on PC, syntax check them, see output, and then copy to Web server
15 Common PHP Development Configurations Linux/Apache FTP or telnet Development PC Development PC Windows/ Apache/IIS PC Running Windows Apache/IIS PC Running Linux Apache
16 Creating a PHP Script File and Saving It to a Local Disk You can use a number of different editors to create your PHP script files. »The PHP script starts with a. »Between these tags is a single PHP print statement.
17 Alternative PHP Delimiters You can alternatively start your PHP scripts with the tag as follows: print ("A simple initial script"); If have short_open_tag enabled in its configuration file, you can use. If asp_tags is enabled in the PHP configuration file, you can use as delimiters.
18 On a Linux/Apache Web Server Typically you: 1. Save files with a.php suffix (myfile.php). 2. Place files under public_html (e.g., /home/dlash/public_html/ Its worth noting: Some web hosts allow direct access to servers with SSH telnet. Others only allow you to use FTP to copy files over.
19 PHP Proper Syntax l Need to be syntactically correct. For example, the print statement syntax:
20 If Use Improper Syntax l Suppose you use the wrong syntax: 1. <?php 2. print ( “A simple initial script); 3. ?>
21 A Little About PHP's Syntax l Some PHP Syntax Issues: »Be careful to use quotation marks, parentheses, and brackets in pairs. »Most PHP commands end with a semicolon (;). »Be careful of case. »PHP ignores blank spaces.
22 Embedding PHP Statements Within HTML Documents HTML With PHP Embedded Welcome To My Page 6.<?php 7. print (" Using PHP is not hard "); 8.?> 9.and you can learn to use it quickly! 10.
23 Using Backslash (\) to Generate HTML Tags with print() Sometimes you want to output an HTML tag that also requires double quotation marks. »Use the backslash (“\”) character to signal that the double quotation marks themselves should be output: print (" "); » The above statement would output: Note!... You could also output the above line using the following PHP line: print (‘ “’); We will examine the meaning between “ and ‘ later.
24 Using Comments with PHP Scripts Comment Syntax - Use // <?php // This is a comment ?> l Can place on Same line as a statement: <?php print ("A simple initial script"); //Output a line ?> Note: Comment lines are ignored when the script runs. They do not slow down the run-time
25 Alternative Comment Syntax PHP allows a couple of additional ways to create comments. <?php phpinfo(); # This is a built-in function ?> Multiple line comments. <?php /* A script that gets information about the PHP version being used. */
26 More on phpinfo() l Use a script with the following to find out about your PHP installation: » This build does NOT have mysql! Location of PHP main config file The php version Other interesting items: Apache version & configuration, php config variables, environment.
27 More on phpinfo() Manual strongly recommends setting to off Allow ASP style tages Valueconstant 1E_ERROR 2E_WARNING 4E_PARSE 8E_NOTICE 16E_CORE_ERROR 32E_CORE_WARNING 64E_COMPILE_ERROR 128E_COMPILE_WARNING 256E_USER_ERROR 512E_USER_WARNING 1024E_USER_NOTICE 2047E_ALL 2048E_STRICT Flag values indicates which errors to display/log
28 Error Definitions... ValueConstantDescriptionNote 1 E_ERROR (integer)integer Fatal run-time errors. These indicate errors that can not be recovered from, such as a memory allocation problem. Execution of the script is halted. 2 E_WARNING (integer)integer Run-time warnings (non-fatal errors). Execution of the script is not halted. 4 E_PARSE (integer)integer Compile-time parse errors. Parse errors should only be generated by the parser. 8 E_NOTICE (integer)integer Run-time notices. Indicate that the script encountered something that could indicate an error, but could also happen in the normal course of running a script. 16 E_CORE_ERROR (integer)integer Fatal errors that occur during PHP's initial startup. This is like an E_ERROR, except it is generated by the core of PHP. since PHP 4 32 E_CORE_WARNING (integer)integer Warnings (non-fatal errors) that occur during PHP's initial startup. This is like an E_WARNING, except it is generated by the core of PHP. since PHP 4 64 E_COMPILE_ERROR (integer)integer Fatal compile-time errors. This is like an E_ERROR, except it is generated by the Zend Scripting Engine. since PHP E_COMPILE_WARNING (integer)integer Compile-time warnings (non-fatal errors). This is like an E_WARNING, except it is generated by the Zend Scripting Engine. since PHP E_USER_ERROR (integer)integer User-generated error message. This is like an E_ERROR, except it is generated in PHP code by using the PHP function trigger_error().trigger_error() since PHP E_USER_WARNING (integer)integer User-generated warning message. This is like an E_WARNING, except it is generated in PHP code by using the PHP function trigger_error().trigger_error() since PHP E_USER_NOTICE (integer)integer User-generated notice message. This is like an E_NOTICE, except it is generated in PHP code by using the PHP function trigger_error().trigger_error() since PHP E_ALL (integer)integer All errors and warnings, as supported, except of level E_STRICT E_STRICT (integer)integer Run-time notices. Enable to have PHP suggest changes to your code which will ensure the best interoperability and forward compatibility of your code. since PHP
29 ‘Overriding’ php.ini settings <?php ini_set('error_reporting', 2047); phpinfo(); ?> Global is ’85’ Local is 2047.
30 Apache2triad provide config administrator Show errors in browser Include HTML errors Note: Has option at bottom to save configuration. Also must restart apache for changes to take effect.
31 Setting Your own Configuration Options <?php ini_set('error_reporting', E_ALL); $x = $y + 1; print " x=$x $y=$y" ?> 2047 E_ALL (integer)integer All errors and warnings, as supported, except of level E_STRICT E_STRICT (integer)integer Run-time notices. Enable to have PHP suggest changes to your code which will ensure the best interoperability and forward compatibility of your code. since PHP
32 How to read ‘Error_reporting’ variable l How did ‘get’ error_reporting = 85 ? »Answer: php.ini has the following line: error_reporting = E_COMPILE_ERROR|E_PARSE|E_ERROR|E_CORE_ERROR 1E_ERROR (integer)integer 2E_WARNING (integer)integer 4E_PARSE (integer)integer 8E_NOTICE (integer)integer 16E_CORE_ERROR (integer)integer 32E_CORE_WARNING (integer)integer 64E_COMPILE_ERROR (integer)integer 128E_COMPILE_WARNIN G (integer)integer 256E_USER_ERROR (integer)integer 512E_USER_WARNING (integer)integer = 85.
33 Even more phpinfo() Send errors to logfile Require input variables to use super-global array Enable scripts to upload to server Defines where to look for includes. (This can be set dynamically in scripts.)
34 Visit Quick function search Function manual
35 Objectives l To understand what PHP is »What is HTML »How PHP compares with CGI l Getting Started with PHP »Your first script »PHP syntax and embedding in HTML »Finding out about your PHP configuration l Using PHP variables »Numerical variables and operators »String variables, operators and a few functions Separating PHP from HTML using <?=
36 PHP allows creating variables on the fly For example, <?php $days = 3; $newdays = 100; $days = $newdays; ?> l A PHP variable names must: »Use a dollar sign ($) as the first character »Use a letter or an underscore character (_) as the second character.
37 Combining Variables and the print Statement l Use print statement with double quotes: $age=6; print ("Bryant is $age years old."); print (‘but george is $age years old.’); Would output: Bryant is 6 years old but george is $age years old. Double quotes output any variable’s value Single quotes output any variable’s name.
38 Using Arithmetic Operators PHP supports various arithmetic operators. For example <?php $apples = 12; $oranges = 14; $total_fruit = $apples + $oranges; print ("The total number of fruit is $total_fruit"); ?> These PHP statements would output The total number of fruit is 26.
39 Common PHP Numeric Operators
40 Common PHP Combined Assignment Operators
41 A Full Example Variable Example <?php 5. $columns = 20; 6. $rows = 12; 7. $total_seats = $rows * $columns; $ticket_cost = 3.75; 10. $total_revenue = $total_seats * $ticket_cost; $building_cost = 300; 13. $profit = $total_revenue - $building_cost; print ("Total Seats are $total_seats "); 16. print ("Total Revenue is $total_revenue "); 17. print ("Total Profit is $profit"); 18. ?>
42 WARNING: Using Variables with Undefined Values Use a variable without a value assigned will have no value (called a null value). PHP will NOT generate an error and will complete the expression. For example, <?php $y = 3; $y=$y + $x + 1; // $x has a null value print ("x=$x y=$y"); ?> Will output x= y=4.
43 PHP Precedence Rules l PHP follows the precedence rules listed below. »First it evaluates operators within parentheses. »Next it evaluates multiplication and division »Finally it evaluates addition and subtraction For example, the first 2 statements evaluate to 80 while the last to 180. $x = * 2; $y = (10 * 2); $z = ( ) * 2;
44 Objectives l To understand what PHP is »What is HTML »How PHP compares with CGI l Getting Started with PHP »Your first script »PHP syntax and embedding in HTML »Finding out about your PHP configuration l Using PHP variables »Numerical variables and operators »String variables, operators and a few functions Separating PHP from HTML using <?=
45 Working with PHP String Variables l Use character strings for data such as customer names, addresses, product names, and descriptions. E.g., »$name="Christopher"; »$preference="Milk Shake"; Note: Technically it is more correct to write: $name=‘Christopher’; $preference=‘Milk Shake’; Since there are no variable values to evaluate.
46 WARNING: Be Careful Not to Mix Variable Types l Be careful not to mix string and numeric variable types. <?php $x ="banana"; $sum = 1 + $x; print ("y=$sum"); ?> No error will occur instead will output: y=1
47 Using the Concatenate Operator l The concatenate operator combines two separate string variables into one. For example, »$fullname = $firstname. $lastname; $fullname will receive the string values of $firstname and $lastname connected together. For example, $firstname = "John"; $lastname = "Smith"; $fullname = $firstname. $lastname; print ("Fullname=$fullname");
48 TIP : Different ways to concatenate strings. l A couple different ways to concatenate strings: »Concatenation operator $Fullname2 = $FirstName. " ". $LastName; »Double quotes l $Fullname2 = "$FirstName $LastName"; »Concatenation combination operator l $comment = ‘I love this job’; l $comment.= ‘but the hours and not that good’; »Mix and match: l $name = ‘George’; l $comment = “$name said: I love this job”; l $comment.= ‘but the hours and not that good’;
49 The strlen() Function l Usually use one or more arguments with » Arguments are input values that functions »Often functions return a value »For example <?php $comments = "Good Job"; $len = strlen($comments); print ("Length=$len"); ?> Would output Length=8 Note: Function output would be one reason to use the concatenate operator <?php $First = 'George'; print "$First has ". strlen($First ). ' characters'; ?> Would output: George has 6 characters
50 The trim() Function l Removes any blank characters from the beginning and end of a string. For example, consider the following script: »<?php »$in_name = " Joe Jackson "; »$name = trim($in_name); »print ("name=$name$name"); »?> Would output Lname=“Joe JacksonJoe Jackson”
51 The strtolower() and strtoupper() Functions l These functions return the input string in all uppercase or all lowercase letters, respectively. For example, <?php $inquote = "Now Is The Time"; $lower = strtolower($inquote); $upper = strtoupper($inquote); print ("upper=$upper lower=$lower"); ?> Would output “upper=NOW IS THE TIME lower=now is the time”.
52 The substr() Function »Substr has the following general format: $part = substr( $name, 0, 5); Extract from here. Assign results into here Position to start extracting from. Number of characters to extract (If omitted will continue to end of string.) For example: <?php $date = "12/25/2002"; $month = substr($date, 0, 2); $day = substr($date, 3, 2); print ("Month=$month Day=$day"); ?> Would output “Month=12 Day=25”.
53 Objectives l To understand what PHP is »What is HTML »How PHP compares with CGI l Getting Started with PHP »Your first script »PHP syntax and embedding in HTML »Finding out about your PHP configuration l Using PHP variables »Numerical variables and operators »String variables, operators and a few functions Separating PHP from HTML using <?=
54 Evaluation delimiters 1 <?php 2 3 $url = ' mysite.com '; 4 $store = ' toy store '; 5 $special = 'boxed block sets'; 6 ?> 7 8 this is a title 9 10 Welcome to the 11 our special today is 12 Visit our home page at 13 Can separate PHP from HTML and use <?= delimiter. It automatically outputs any PHP variables found.
55 Getting input data l To receive data with REGISTER_GOBALS OFF you use a special variable called $_GET. »$mynm = $_GET[“name”]; Enclose in square bracket and then quotes Name of HTML form CGI variable (note do not use $) Special PHP Global variable. Technically it is an associative array (covered in chptr 5.) PHP variable name that you want to receive the HTML form input.
56 Sending Input From URL l You can send data to your application by: » Bats l If needed to send multiple input variables could: » Bats&myname=Dave Use & sign
57 Objectives l To understand what PHP is »What is HTML »How PHP compares with CGI l Getting Started with PHP »Your first script »PHP syntax and embedding in HTML »Finding out about your PHP configuration l Using PHP variables »Numerical variables and operators »String variables, operators and a few functions Separating PHP from HTML using <?=
58 Module 1 Hands on Assignment l Create a php script that calculates the total possible revenue of a theater. Suppose that: »The theater charges $5 per seat »The theater has with 10 rows and 8 seats per row. »Output the total possible revenue. »Set the seat cost, rows and seats per row at top of script and separate PHP from HTML code.
59 One possible solution 1 <?php 2 $cost = 5; $rows = 10; 3 $cols = 8; $total = $rows * $cols; 4 $rev = $cost * $total; 5 ?> 6 7 Theater Calculation 8 9 We have seats in the house At a costs of $ our total possible revenue is
60 Lab 1 Extension Exercise Modify that same script to receive the values of $rows and $cols from the Web URL. »Send different input values from the web
61 One Possible Solution <?php $cost = 5; $rows = $_GET[rows]; $cols = $_GET[cols]; $total = $rows * $cols; $rev = $cost * $total; ?> Theater Calculation We have seats in the house At a costs of $ our total possible revenue is.
62 Module 1 Hands on assignment l Write a simple script that outputs the configuration of PHP l What are compilation settings of our PHP »What version? »What apache version? » Other interesting settings?
63 One possible solution