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?