Introduction to PHP development

Post on 23-Feb-2016

54 views 0 download

Tags:

description

Introduction to PHP development. Daniel Reeves Web Applications Developer ResNET UNC Chapel Hill. My Assumptions. Introductory class Skill Level Programming concepts Topics Covered Future Presentations Mind Numbing Materials. Outline. Introduction PHP Basics Programming and PHP - PowerPoint PPT Presentation

Transcript of Introduction to PHP development

Introduction to PHP development

Daniel ReevesWeb Applications Developer

ResNET UNC Chapel Hill

resnet.unc.edu 2

My Assumptions

Introductory class Skill Level Programming concepts Topics Covered Future Presentations Mind Numbing Materials

resnet.unc.edu 3

Outline

Introduction PHP Basics Programming and PHP PHP Topics Questions

Introduction

Questions for you

resnet.unc.edu 7

Materials

Location• http://webmasters.unc.edu/presentation

s/

• ZIP file of all materials (ppt, handout, code)

Handout• Terms, tips, Google search strategies

PowerPoint Video

resnet.unc.edu 8

To PHP or not to PHP? The Pros

Great Documentation Allows coding to modern standards Open Source Global and Diverse Developer

Community Don’t have to reinvent the wheel Total Programmer Control Easy to deploy

resnet.unc.edu 9

To PHP or not to PHP? The Cons

Inconsistent function names Only Basic scoping Constantly Evolving Total Programmer Control Not most efficient language

resnet.unc.edu 10

Google it !!!!!

When in doubt, search! Search before you build Properly formed Searches on Google

• Google’s autocomplete is For PHP searches, start by typing

“php”• Suggestions will start to show

resnet.unc.edu 11

Programming Philosophy

Architecture Analogy• Structure: Problem/Constraints/Solution• Materials• Tools (data structures)

4 general uses: • automation, iteration/reuse, functionality,

uniformity Know Thy Enemy Pure problem solving

resnet.unc.edu 12

Programming Tips

Process Sequentially Save often, keep multiple versions Test incrementally Reuse code, copy and paste Start small and build Solving problems is a mental process Walk away and come back

PHP Basics

resnet.unc.edu 14

Client/Server

Client = User’s Browser Server = Websites, Online files PHP server only Can only process when …

• When a page is requested• After a user action has submitted the

page

resnet.unc.edu 15

What can one do with PHP?

Database Programming

File Read/Write Form Processing Form Validation Ajax Interaction PDF Creation File Search and

Archive

Interact with web APIs

Interact with MS Office

Image Processing and

Chart Creation XML file Read/Write Sending Email Writing Code

resnet.unc.edu 16

Topics for Today

Basic PHP/HTML interaction• Creating HTML with PHP

PHP form validation and processing• Server request interaction• Input validation

Basic debugging and error trapping• Methods for finding and correcting errors

resnet.unc.edu 17

What you need

Server space where PHP is enabled• http://help.unc.edu/108

Editing program to write the code in• Notepad++ good, free editor for coding

HTML Browser for viewing created pages• Firefox is my preference

Second monitor – recommended

Programming PHP

resnet.unc.edu 19

Writing Clean Code

Writing Clean Code• Using tabs for code, white space, line

breaks• Ex: which looks cleaner, easier to read?<?php echo “test”; $foo++; ?>OR<?php

echo “test”;$foo++;

?>

resnet.unc.edu 20

PHP file, <?php tag, & ‘;’

Files end in .php (ex: contact_form.php)

Server recognizes code within <?php tag

Requires ?> closing tag When writing opening tag, write

closing Code not in PHP tags displays as

HTML End statements with ;

resnet.unc.edu 21

Example – php_tags

<?php

?>testing

resnet.unc.edu 22

Errors and Error Messages

Empty Page• Difficult, frustrating when page is just

blank Turn on Errors

• On Handout: ini_set('display_errors',1); Shows warnings and errors Dangerous for production code

resnet.unc.edu 23

Example – php_errors

<?phpini_set('display_errors',1);

?>testing

resnet.unc.edu 24

PHP Programming – Hello World

How do I know if PHP is turned on?• php_info();

“Hello World” Echo statement Single/Double quotes in PHP

• echo “testing”; same as echo ‘testing’;• Use double quotes for variables

resnet.unc.edu 25

Example – Hello World

<?phpini_set('display_errors',1);php_info();echo “Hello World”;

?>testing

resnet.unc.edu 26

What are Variables ?

Basic building block of programming Stores information/data 3 basic parts: name, type and value Variables store different types of data

• Numbers, Strings, Boolean (True/False) PHP Initialization PHP Types

resnet.unc.edu 27

PHP Variable Syntax

All variables start with “$” Any combination of letters, numbers,

“_” Variable Type Examples

• Ex: $customer = “Daniel Reeves”;• Ex: $cost = 1.25;• Ex: $is_administrator = true;

Will use $foo as default variable• $foo, $foo1, $foo2, etc.

resnet.unc.edu 28

Manipulating Variables

Set Variables • $foo = 1; $foo = “test”; $foo1 =

$foo Display Variables

• echo $foo; echo “$foo”; Change and Combine text

• $foo = “testing”.“ is fun”;• $foo1 = “Foo’s Value is: $foo”;

resnet.unc.edu 29

And Arrays?

Collections of variable values Access various elements from index Index number or keyword

• 1st element starts at 0 Format: $array_name[‘index’] Array elements same as variables Mostly for form processing

• $_GET, $_POST

resnet.unc.edu 30

PHP Array Syntax

Create• $numbers = array(1,2,3,4,5);• $names = array(‘fn’=>”Bob”,

‘ln’=>”Smith”); Numbers

5 = $numbers[4]; Strings

• “Bob” = $names[‘fn’];• “Bob” = $names[0];

resnet.unc.edu 31

Conditionals – If/Then/Else

Need to test truth values If/ Else If/Else Establish consequences based on

test Allows for options Example: Contact form

• Category for student major• When submitted, choice would be tested• Assign a different action per major

resnet.unc.edu 32

Conditionals – PHP Syntax

Syntax: if( testcondition ){ code } Syntax for if, else:

• if( testcondition ){ code }• else if( testcondition ){ code }• else {code}

Test values with: <, <=, >, >=, !, ==, !=

resnet.unc.edu 33

PHP Programming – Functions

Reuse Separate code Elements

• Name, Parameters, Code, Return Many system functions available

• include(); php_info(); echo “”; Ex: function strlen($foo);

• Returns number of characters in string

resnet.unc.edu 34

Review – PHP Basics

<?php and ?> tags, required “;” Turn on errors and error messages Variables

• Strings, Numbers, Boolean (T/F) Arrays Conditionals Functions

PHP topics – basic PHP and HTML

resnet.unc.edu 36

Adding Dynamic Content

Use variables 2 Philosophies 2 ways to display information Echo

• echo “First Name: $first_name”; In HTML

• First Name: <?= $first_name ?>

resnet.unc.edu 37

Example – hello_world2

<?php$first_name = “Bob”;$last_name = “Smith”;echo “<html><body>”;

?><p>My Name is: <?= $first_name ?> <?= $last_name?></p></body></html>

resnet.unc.edu 38

Creating HTML with PHP

HTML Break and new line• To write new line to document, use \n• To add new line to rendered HTML, use

<br> Build then display HTML put just below php on page

• Nice segregation of server, client sides• Much easier to comment and debug

Create JS with PHP too

resnet.unc.edu 39

Display HTML uniformity

Includes• Headers, footers, menus

Widths, heights• Easily keep for element sizes uniform

Naming conventions• Prefix for names or css classes

Other repeated code• Especially if it may ever change

resnet.unc.edu 40

Review – PHP and HTML

Adding dynamic content Use Variables Output to screen: echo, <?= ?> Breaks <br> and New Lines \n Display Uniformity

• Includes, reuse, naming, cohesive form items

PHP topics – PHP form processing and validation

resnet.unc.edu 42

PHP and form submission

Process of filling out a form Where PHP gets access to form GET and POST PHP and request information

• GET and POST arrays• $_GET[‘form element name’];• $_POST[‘form element name’];

resnet.unc.edu 43

Getting data from your request

Good first test: use GET• Can see parameters you are sending• Don’t need form• Print entire $_GET array: print_r($_GET);

Set items from GET to variables• Use same name as name you sent

Once variable, can process further

resnet.unc.edu 44

Example - get

<?phpprint_r($_GET);if($_GET){

$foo = $_GET['passed_value'];} else { $foo = "Empty"; }?>Value is: <?= $foo ?>

resnet.unc.edu 45

EXAMPLE – contact_form

<html><body><form action=“contact_form.php” method=“get”>

Input: <input type=“text” name=“passed_value” value=“<?= $foo ?>”><input type=“submit” value=“Submit”>

</form></body></html>

resnet.unc.edu 46

Validation Options

Cleaning user input discussed later Multiple validations of data Client = JavaScript, Server = PHP

• JS can be turned off from client, PHP cannot

• Test both ends, safer, better use experience

Validation proportional to importance Separate from security

resnet.unc.edu 47

Using PHP for validation

Test multiple issues for same value Test with conditionals Test for empty values

• If($foo == “”) { do something } Flags = Boolean variables (T/F) Use variable to verify validation

• Set to true• If any validation fails, set it to false

resnet.unc.edu 48

EXAMPLE – contact_form (above

form)<?phpif($_GET){

$foo = $_GET[‘passed_value’];$form_passes = true;if($foo == “”){ $form_passes = false; }if(strlen($foo) < 5) {$form_passes =

false; }if($form_passes){ finish processing }

}?>

resnet.unc.edu 49

Redisplay and Error notification

Good idea to redisplay form• Can redisplay all submitted information

Easy to find & read error messages• DIV at top of page, red and bold text• Tailored message for each issue

Interact with JS if helpful PHP mark the fields in error

resnet.unc.edu 50

Process for Validation

User Submits page to server Use PHP to get information Test information

• Not empty, length Errors and Redisplay

• Show messages• Mark errors

resnet.unc.edu 51

Review – PHP and Forms

PHP gets form data at submission $_GET, $_POST and variables Validation

• Conditionals• Functions

Error notification and Redisplay• Communicate clearly with user

PHP topics – Debugging Errors

resnet.unc.edu 64

The fun of errors

Programming requires proper syntax One error, entire page wont run Bad code can crash servers (unlikely) Example: Mariner 1 Rocket Realistic Worries

• Angering ITS Gods (Gogan does not approve)

• Loss, Compromise of data

resnet.unc.edu 65

Common mistakes

Misspelling variable names Leaving semicolon off Not closing PHP tag Quotes within quotes Refresh page Not saving work

resnet.unc.edu 66

Commenting Code

Comments• PHP does not run in comments

2 Uses• Removing code from page• Document what the code does

2 ways: // or /* … */• Single vs. Multi-line comments

resnet.unc.edu 67

Example - comments

<?phpini_set('display_errors',1);/* Broken Code */echo “broke“//Working Codeecho “works";

?>testing

resnet.unc.edu 68

Example – comments

<?phpini_set('display_errors',1);/* Broken Codeecho “broke“ *///Working Codeecho “works";

?>testing

resnet.unc.edu 69

die(); to the rescue

PHP system function Will stop any PHP immediately Process to find errors

• Start with error message, may be simple• Put a die statement at top of page• Move down page section by section• When die no longer works, have found

error• Error is in the last block of code you past

resnet.unc.edu 70

Example – die();

<?phpdie(‘testing1’);ini_set('display_errors',1);echo "works";echo "broke"

?>testing

resnet.unc.edu 71

Example – die();

<?phpini_set('display_errors',1);die(‘testing1’);echo “works";echo “broke“

?>testing

resnet.unc.edu 72

Example – die();

<?phpini_set('display_errors',1);echo “works";die(‘testing1’);echo “broke“

?>testing

resnet.unc.edu 73

Example – die();

<?phpini_set('display_errors',1);echo “works";echo “broke“die(‘testing1’);

?>testing

resnet.unc.edu 74

Review – Debugging PHP

Errors are fun Common Mistakes Comment Code Die function Process for finding errors

Final words on PHP

resnet.unc.edu 76

My take

PHP highly powerful, useful web tool• Can do everything I need efficiently• Unique properties great bonus• PHP my favorite by far

Use what you like• Make sure its open source if you can• Coding should be challenging but fun

Big picture, how programming can help

Questions?