PPT - Webmasters

advertisement
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
resnet.unc.edu
2
Outline
 Introduction
 PHP Basics
 Programming and PHP
 PHP Topics
 Questions
resnet.unc.edu
3
Introduction
Questions for you
Materials
 Location
• http://webmasters.unc.edu/presentations/
• ZIP file of all materials (ppt, handout, code)
 Handout
• Terms, tips, Google search strategies
 PowerPoint
 Video
resnet.unc.edu
7
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
8
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
9
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
10
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
11
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
resnet.unc.edu
12
PHP Basics
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
14
What can one do with
PHP?
 Database
 Interact with web






 Interact with MS
Programming
File Read/Write
Form Processing
Form Validation
Ajax Interaction
PDF Creation
File Search and
Archive
resnet.unc.edu
APIs
Office





Image Processing and
Chart Creation
XML file Read/Write
Sending Email
Writing Code
15
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
16
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
resnet.unc.edu
17
Programming PHP
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
19
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
20
Example – php_tags
<?php
?>
testing
resnet.unc.edu
21
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
22
Example – php_errors
<?php
ini_set('display_errors',1);
?>
testing
resnet.unc.edu
23
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
24
Example – Hello World
<?php
ini_set('display_errors',1);
php_info();
echo “Hello World”;
?>
testing
resnet.unc.edu
25
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
26
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
27
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
28
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
29
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
30
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
31
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
32
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
33
Review – PHP Basics
 <?php and ?> tags, required “;”
 Turn on errors and error messages
 Variables
• Strings, Numbers, Boolean (T/F)
 Arrays
 Conditionals
 Functions
resnet.unc.edu
34
PHP topics – basic PHP and
HTML
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
36
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
37
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
38
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
39
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
resnet.unc.edu
40
PHP topics – PHP form
processing and validation
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
42
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
43
Example - get
<?php
print_r($_GET);
if($_GET){
$foo = $_GET['passed_value'];
} else { $foo = "Empty"; }
?>
Value is: <?= $foo ?>
resnet.unc.edu
44
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
45
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
46
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
47
EXAMPLE – contact_form
(above form)
<?php
if($_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
48
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
49
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
50
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
resnet.unc.edu
51
PHP topics – Debugging Errors
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
64
Common mistakes
 Misspelling variable names
 Leaving semicolon off
 Not closing PHP tag
 Quotes within quotes
 Refresh page
 Not saving work
resnet.unc.edu
65
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
66
Example - comments
<?php
ini_set('display_errors',1);
/* Broken Code */
echo “broke“
//Working Code
echo “works";
?>
testing
resnet.unc.edu
67
Example – comments
<?php
ini_set('display_errors',1);
/* Broken Code
echo “broke“ */
//Working Code
echo “works";
?>
testing
resnet.unc.edu
68
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
69
Example – die();
<?php
die(‘testing1’);
ini_set('display_errors',1);
echo "works";
echo "broke"
?>
testing
resnet.unc.edu
70
Example – die();
<?php
ini_set('display_errors',1);
die(‘testing1’);
echo “works";
echo “broke“
?>
testing
resnet.unc.edu
71
Example – die();
<?php
ini_set('display_errors',1);
echo “works";
die(‘testing1’);
echo “broke“
?>
testing
resnet.unc.edu
72
Example – die();
<?php
ini_set('display_errors',1);
echo “works";
echo “broke“
die(‘testing1’);
?>
testing
resnet.unc.edu
73
Review – Debugging PHP
 Errors are fun 
 Common Mistakes
 Comment Code
 Die function
 Process for finding errors
resnet.unc.edu
74
Final words on PHP
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
resnet.unc.edu
76
Questions?
Download