PHP Programming: Difference between revisions

From Wikibooks, open books for an open world
Jump to navigation Jump to search
[unreviewed revision][unreviewed revision]
Content deleted Content added
Line 183: Line 183:
== Resources ==
== Resources ==
*[http://alexeysmirnov.name/blog/?page_id=108 From C/C++ to PHP] Most people program in C++ but not in PHP. This tutorial will explain the important differences.
*[http://alexeysmirnov.name/blog/?page_id=108 From C/C++ to PHP] Most people program in C++ but not in PHP. This tutorial will explain the important differences.
*[http://www.wepapers.com/navigate/411/php PHP papers] Free php tutorials for download
*[http://hudzilla.org] Hudzilla.org - Paul Hudson's excellent beginner-expert guide to PHP.
*[http://hudzilla.org] Hudzilla.org - Paul Hudson's excellent beginner-expert guide to PHP.
*[http://www.w3schools.com/php/default.asp W3Schools] - Quick start with PHP for beginners.
*[http://www.w3schools.com/php/default.asp W3Schools] - Quick start with PHP for beginners.

Revision as of 13:25, 15 December 2008

Template:Programmingnav



See also Programming:Complete PHP

What is PHP?

PHP is a scripting language designed to fill the gap between SSI (Server Side Includes) and Perl, intended largely for the web environment. PHP has gained quite a following in recent times, and it is one of the forerunners in the Open Source software movement. Its popularity derives from its C-like syntax, its speed and its simplicity. PHP is currently divided into two major versions: PHP 4 and PHP 5. PHP 6 is currently under development.

If you've ever been to a website that needs you to login, you've probably encountered a server-side scripting language. Due to its market saturation, this means you've probably come across PHP. PHP was designed by Rasmus Lerdorf to display his resume online and to collect data from his visitors.

Basically, PHP allows a static web document to become dynamic. "PHP" is a recursive acronym that stands for "PHP: Hypertext Preprocessor". PHP preprocesses (that is, PHP processes before the output is sent to the browser) hypertext documents. Because of this, the pages can change before the user sees them, based on conditions. This can be used to write something to the page, create a table with a number of rows equal to the number of times the user has visited, or integrate the web page with a web database, such as MySQL.

Before you embark on the wonderful journey of Server Side Processing, it is recommended that you have some basic understanding of the HyperText Markup Language. PHP is also being used to build GUI-driven applications; PHP-GTK is used to build Graphical User Interfaces.

Setup and Installation

Note: Before contributing, check out the discussion page. How to write your examples.

Learning the Language

The Basics

This section is about things that are important for any type of PHP development. Useful for a PHP programmer of any level.
  1. Beginning with "Hello World!" 100% developed  as of 10 Feb 2006 (10 Feb 2006)
  2. Nuts and Bolts 75% developed  as of 14 Jan 2006 (14 Jan 2006)
  3. Commenting and Style 100% developed  as of 14 Jan 2006 (14 Jan 2006)
  4. Arrays 75% developed  as of 10 Feb 2006 (10 Feb 2006)
  5. Control structures
    1. The if Structure 50% developed  as of 14 Jan 2006 (14 Jan 2006)
    2. The switch Structure 75% developed  as of 14 Jan 2006 (14 Jan 2006)
    3. The while Loop 75% developed  as of 14 Jan 2006 (14 Jan 2006)
    4. The do while Loop 50% developed  as of 14 Jan 2006 (14 Jan 2006)
    5. The for Loop 50% developed  as of 14 Jan 2006 (14 Jan 2006)
    6. The foreach Loop 75% developed  as of 14 Jan 2006 (14 Jan 2006)
  6. Functions 75% developed  as of 10 Feb 2006 (10 Feb 2006)
  7. Files 100% developed  as of 12 Feb 2008 (12 Feb 2008)
  8. Mailing 50% developed  as of 14 Jan 2006 (14 Jan 2006)
  9. Cookies 75% developed  as of 14 Jan 2006 (14 Jan 2006)
  10. Sessions 75% developed  as of 2008-05-07 (2008-05-07)
  11. Databases
    1. MySQL 75% developed  as of 14 Jan 2006 (14 Jan 2006)
    2. PHP Data Objects 0% developed  as of 18 Dec 2006 (18 Dec 2006)
  12. Integration Methods (HTML Forms, etc.) 75% developed  as of 14 Jan 2006 (14 Jan 2006)

Advanced PHP

Advanced PHP includes high level programming and PHP techniques designed to make PHP even more useful and powerful.

Object Oriented Programming (OOP)

  1. Classes
  2. Special Methods
  3. Class Extensions (Inheritance)

Templating

  1. Why Templating
  2. Templates
  3. Caching
  4. SMARTY templating system
  5. PRADO Component Framework
  6. Flat Frog templating system 25% developed  as of 23 march 2006 (23 march 2006)
  7. XSL

Libraries

PHP PEAR

Frameworks

Security

  1. Configuration: Register Globals
  2. SQL Injection Attacks
  3. Cross Site Scripting Attacks
  4. Building a secure user login system

See also the section on avoiding session fixation in the Sessions chapter.

Command-Line Interface (CLI)

  1. PHP CLI
  2. PHP-GTK
  3. Daemonization

Code Snippets

Useful for any beginners to learn code from.

PHP 4 & 5

Basic Level

  • echo "the text to print"; - This language construct will echo the text between the quotes. This is not a function but a language construct.
  • echo "$var"; - Notice the double quotation marks. Because double quotation marks are used, this will print the value of the variable. If $var="Bobby", this will output:

Bobby

  • echo '$var'; - Notice that the quotation marks are now single. This will output the literal keystrokes inside the quotes. The example will output:

$var

  • $var="Jericho";echo "Joshua fit the battle of $var."; - Other than substituting the value of a variable for the variable name (and one or two other minor items), double quotes will quote literal keystrokes. So this will output:

Joshua fit the battle of Jericho.

Again, if single quotes were used — 'Joshua fit the battle of $var'; — this would output:

Joshua fit the battle of $var.

  • echo $var; - If you only want to print the value of a variable, you don't need quotes at all. If the value of $var is "1214", the code will output:

1214

  • require "url"; - This language construct will include the page between the quotes. Can NOT be used with dynamic pages, e.g. require("main.php?username=SomeUser"); would not work. This is not a function but a language construct.
  • date("Date/time format"); - Function which returns a date from a Unix Timestamp - where H is the hour, i is the minutes, s is the seconds, d is the day, m is the month and Y is the year in four digits - e.g. date("H:i:s d/m/Y"); would return 12:22:01 10/08/2006 on 10th August 2006 at 12:22:01.
  • unlink("filename"); - Function which deletes the file specified in filename.

PHP 4

Basic Level

<?php

 $variable1 = 'beginning';
 //This is a comment after a variable being defined
 if ($variable1 == 'beginning') {
   //If is a test to see if a variable has certain
   //value and initiates the wanted sequences if true
   echo 'Hello World!';
   //The echo displays to the page
 }

?>

OOP

Include OOP based examples, made by experienced developer

PHP 5 Only

Basic Level

Basics, working only on PHP 5.

  • file_put_contents("filename", "Text to save"); - Functions which saves the text specified in Text to save to the file specified in filename. Will overwrite existing file contents unless another parameter FILE_APPEND is added.

E.g. file_put_contents("filename", "Text to save"); will write Text to save to filename, but will overwrite existing text whereas file_put_contents("filename", "Text to save", FILE_APPEND); will write Text to save to filename, but will not overwrite existing text (instead it appends).

OOP

  1. Input validation by Kgrsajid.
  2. Advanced Input validation by nemesiskoen.

Editors

For reviews of numerous PHP editors, see PHP-editors.

Resources

Contributors

Jatkins: PHP 4 & 5 examples, and PHP 5 only examples.
Douglas Clifton: New editor. Hoping to add more soon!
James Booker: Minor corrections. Hoping to add more content in time.
Spoom: Original for and switch...case articles, various reformatting and additions.
IBB: See profile.
Kander: Minor edits to the PHP and MySQL section.
Qrc: Started initial page for Configuration:Register Globals.
Bumppo: Started object-oriented PHP section
programmabilities: Minor edits.
ahc: Significant editing to existing sections.
Liu Chang: Added "Setting up PHP" section. Hoping to add more in time
Monkeymatt: Fixed some typos, fixed the templating section.
Charles Iliya Krempeaux: Added PHP CLI section. Minor cleanups on existing sections. Added PHP-GTK section.
scorphus: Fixes in installation procedures on Debian systems (to conform standards - we now use aptitude)
immortalgeek: Added some php web links to Resource section.
Wykis: Working on Smarty section, foreach, arrays, sessions, all basic programming
Bolo: working on Flat Frog section.
KGR Sajid: PHP5 editor. Also edited some other minor things.
banzaimonkey: Formatting changes and editing.
Meemo: Some small edits, fixing a few scripts and the spelling of Rumpelstiltskin. ;)
Justin Kestelyn: Added a link in Resources.
Sam Wilson: Elaboration on session fixation.
http://www.zeuscoder.com -PHP, MySQL Training and development.