Commit 4a5bb1b7 authored by Earl Miles's avatar Earl Miles
Browse files

An example module and a couple of fixes inspired by the example

parent de73f7a4
......@@ -446,12 +446,15 @@ function advanced_help_view_topic($module, $topic, $popup = FALSE) {
// Make some exchanges
if ($popup) {
$output = preg_replace('/href="topic:([^"]+)"/', 'href="/help/$1?popup=true"', $output);
$output = preg_replace('/src="topic:([^"]+)"/', 'src="/help/$1?popup=true"', $output);
else {
$output = preg_replace('/href="topic:([^"]+)"/', 'href="/help/$1"', $output);
$output = preg_replace('/src="topic:([^"]+)"/', 'src="/help/$1"', $output);
$output = preg_replace('/href="path:([^"]+)"/', 'href="/' . $info['path'] . '/$1', $output);
$output = preg_replace('/href="path:([^"]+)"/', 'href="/' . $info['path'] . '/$1"', $output);
$output = preg_replace('/src="path:([^"]+)"/', 'src="/' . $info['path'] . '/$1"', $output);
return $output;
......@@ -4,13 +4,13 @@
background: transparent url('help.png') no-repeat top left;
background-position: 0px 0px;
display: block;
float: left; /* this is cheesy, I know */
.advanced-help-link span {
display: none;
.advanced-help-link:hover {
background-position: 0px -16px;
\ No newline at end of file
......@@ -124,3 +124,15 @@ code, pre {
display: block;
.help-left {
float: left;
.help-right {
float: right;
.help-box {
margin: .2em;
<p><b>PHP</b> (<i>PHP: Hypertext Preprocessor</i>) is a computer <a target="_blank" href="" title="Scripting language">scripting language</a>, originally designed for producing <a target="_blank" href="" title="Dynamic web page">dynamic web pages</a>. It is mainly used in <a target="_blank" href="" title="Server-side scripting">server-side scripting</a>, but can be used from a <a target="_blank" href="" title="Command line interface">command line interface</a> or in <a target="_blank" href="" title="Standalone">standalone</a> <a target="_blank" href="" title="Graphical user interface">graphical applications</a>.<sup id="cite_ref-1" class="reference"><a href="#cite_note-1" title="">[2]</a></sup></p>
<p>While PHP was originally created by <a target="_blank" href="" title="Rasmus Lerdorf">Rasmus Lerdorf</a> in 1994, the main implementation of PHP is now produced by The PHP Group and serves as the <a target="_blank" href="" title="De facto standard"><i>de facto</i> standard</a> for PHP as there is no <a target="_blank" href="" title="Formal specification">formal specification</a>.<sup id="cite_ref-history_2-0" class="reference"><a href="#cite_note-history-2" title="">[3]</a></sup> Released under the <a target="_blank" href="" title="PHP License">PHP License</a>, the <a target="_blank" href="" title="Free Software Foundation">Free Software Foundation</a> considers it to be <a target="_blank" href="" title="Free software">free software</a>.<sup id="cite_ref-3" class="reference"><a href="#cite_note-3" title="">[4]</a></sup></p>
<p>PHP is a widely-used general-purpose scripting language that is especially suited for <a target="_blank" href="" title="Web development">web development</a> and can be embedded into <a target="_blank" href="" title="HTML">HTML</a>. It generally runs on a <a target="_blank" href="" title="Web server">web server</a>, taking PHP code as its input and creating <a target="_blank" href="" title="Web page">web pages</a> as output. It can be deployed on most web servers and on almost every <a target="_blank" href="" title="Operating system">operating system</a> and <a target="_blank" href="" class="mw-redirect" title="Platform (computing)">platform</a> free of charge.<sup id="cite_ref-foundations_4-0" class="reference"><a href="#cite_note-foundations-4" title="">[5]</a></sup> PHP is installed on more than 20 million websites and 1 million <a target="_blank" href="" title="Server (computing)">servers</a>, although the number of websites with PHP <a target="_blank" href="" title="Installation (computer programs)">installed</a> has declined since August 2005.<sup id="cite_ref-usage_5-0" class="reference"><a href="#cite_note-usage-5" title="">[6]</a></sup> It is also the most popular <a target="_blank" href="" title="Apache HTTP Server">Apache</a> module among computers using Apache as a web server.<sup id="cite_ref-usage_5-1" class="reference"><a href="#cite_note-usage-5" title="">[6]</a></sup> The most recent major release of PHP was version 5.2.5 on <a target="_blank" href="" title="November 8">November 8</a>, <a target="_blank" href="" title="2007">2007</a>.<sup id="cite_ref-php5changelog_6-0" class="reference"><a href="#cite_note-php5changelog-6" title="">[7]</a></sup></p>
title = About PHP
file = about-php
weight = -10
title = History of PHP
file = history
parent = about-php
title = Usage of PHP
file = usage
weight = 1
title = Security of PHP
file = security
weight = 2
title = PHP syntax
file = syntax
parent = usage
\ No newline at end of file
<div class="help-box help-left">
<div class="thumbinner" style="width:182px;"><a href="/wiki/Image:Lerdorf.jpg" class="image" title="Rasmus Lerdorf, who wrote the original Common Gateway Interface binaries"><img alt="Rasmus Lerdorf, who wrote the original Common Gateway Interface binaries" src="path:180px-Lerdorf.jpg" width="180" height="270" border="0" class="thumbimage" /></a>
<div class="thumbcaption">
<div class="magnify"><a href="/wiki/Image:Lerdorf.jpg" class="internal" title="Enlarge"><img src="/skins-1.5/common/images/magnify-clip.png" width="15" height="11" alt="" /></a></div>
<a href="/wiki/Rasmus_Lerdorf" title="Rasmus Lerdorf">Rasmus Lerdorf</a>, who wrote the original <a href="/wiki/Common_Gateway_Interface" title="Common Gateway Interface">Common Gateway Interface</a> binaries</div>
<p>PHP, standing for Personal Home Page, began as a set of <a target="_blank" href="" title="Common Gateway Interface">Common Gateway Interface</a> <a target="_blank" href="" title="Binary file">binaries</a> written in the <a target="_blank" href="" class="mw-redirect" title="C programming language">C programming language</a> in 1994 by the <a target="_blank" href="" title="Danish people">Danish</a>/<a target="_blank" href="" title="Greenland">Greenlandic</a> programmer <a target="_blank" href="" title="Rasmus Lerdorf">Rasmus Lerdorf</a>. Lerdorf initially created these Personal Home Page Tools to replace a small set of <a target="_blank" href="" title="Perl">Perl</a> scripts he had been using to maintain his <a target="_blank" href="" class="mw-redirect" title="Personal homepage">personal homepage</a>. The tools were originally created to perform tasks such as displaying his <a target="_blank" href="" title="Résumé">résumé</a> and recording how much <a target="_blank" href="" title="Web traffic">traffic</a> his page was receiving.<sup id="cite_ref-history_2-1" class="reference"><a href="#cite_note-history-2" title="">[3]</a></sup> He combined these binaries with his Form Interpreter to create PHP/FI, which had more functionality. It included a larger <a target="_blank" href="" title="C (programming language)">C implementation</a> which could communicate with <a target="_blank" href="" title="Database">databases</a> and helped build simple, dynamic <a target="_blank" href="" title="Web application">web applications</a>. He released PHP publicly on <a target="_blank" href="" title="June 8">June 8</a>, <a target="_blank" href="" title="1995">1995</a> to speed up the finding of <a target="_blank" href="" title="Software bug">bugs</a> and improving the code.<sup id="cite_ref-7" class="reference"><a href="#cite_note-7" title="">[8]</a></sup> This release was named PHP version 2, and already had basic functionality that PHP has today. This includes Perl-like variables, form handling, and the ability to embed HTML. The syntax was similar to Perl but was more limited, simpler, and less consistent.<sup id="cite_ref-history_2-2" class="reference"><a href="#cite_note-history-2" title="">[3]</a></sup></p>
<div class="help-box help-right">
<div class="thumbinner" style="width:182px;"><a target="_blank" href="" class="image" title="Andi Gutmans, who, along with Zeev Suraski, rewrote the parser that formed PHP 3"><img alt="Andi Gutmans, who, along with Zeev Suraski, rewrote the parser that formed PHP 3" src="path:180px-Andi_Gutmans_1.jpg" width="180" height="244" border="0" class="thumbimage" /></a>
<div class="thumbcaption">
<div class="magnify"><a target="_blank" href="" class="internal" title="Enlarge"><img src="/skins-1.5/common/images/magnify-clip.png" width="15" height="11" alt="" /></a></div>
<a target="_blank" href="" title="Andi Gutmans">Andi Gutmans</a>, who, along with <a target="_blank" href="" title="Zeev Suraski">Zeev Suraski</a>, rewrote the <a target="_blank" href="" class="mw-redirect" title="Parser">parser</a> that formed PHP 3</div>
<p><a target="_blank" href="" title="Zeev Suraski">Zeev Suraski</a> and <a target="_blank" href="" title="Andi Gutmans">Andi Gutmans</a>, two <a target="_blank" href="" title="Israelis">Israeli</a> developers at the <a target="_blank" href="" class="mw-redirect" title="Technion IIT">Technion IIT</a>, rewrote the <a target="_blank" href="" class="mw-redirect" title="Parser">parser</a> in 1997 and formed the base of PHP 3, changing the language's name to the <a target="_blank" href="" class="mw-redirect" title="Recursive initialism">recursive initialism</a> <i>PHP: Hypertext Preprocessor</i>.<sup id="cite_ref-history_2-3" class="reference"><a href="#cite_note-history-2" title="">[3]</a></sup> The development team officially released PHP/FI 2 in November 1997 after months of <a target="_blank" href="" class="mw-redirect" title="Development stage">beta</a> testing. Afterwards, public testing of PHP 3 began, and the official launch came in June 1998. Suraski and Gutmans then started a new <a target="_blank" href="" title="Rewrite (programming)">rewrite</a> of PHP's core, producing the <a target="_blank" href="" title="Zend Engine">Zend Engine</a> in 1999.<sup id="cite_ref-8" class="reference"><a href="#cite_note-8" title="">[9]</a></sup> They also founded <a target="_blank" href="" title="Zend Technologies">Zend Technologies</a> in <a target="_blank" href="" title="Ramat Gan">Ramat Gan</a>, Israel, which manages the development of PHP.<sup id="cite_ref-history_2-4" class="reference"><a href="#cite_note-history-2" title="">[3]</a></sup></p>
<p>On <a target="_blank" href="" title="May 22">May 22</a>, <a target="_blank" href="" title="2000">2000</a>, PHP 4, powered by the Zend Engine 1.0, was released.<sup id="cite_ref-history_2-5" class="reference"><a href="#cite_note-history-2" title="">[3]</a></sup> On <a target="_blank" href="" title="July 13">July 13</a>, <a target="_blank" href="" title="2004">2004</a>, PHP 5 was released and is powered by the new Zend Engine II.<sup id="cite_ref-history_2-6" class="reference"><a href="#cite_note-history-2" title="">[3]</a></sup> PHP 5 included new features such as improved support for <a target="_blank" href="" title="Object-oriented programming">object-oriented programming</a>, the PHP Data Objects extension (which defines a lightweight and consistent interface for accessing databases), and numerous performance enhancements.<sup id="cite_ref-9" class="reference"><a href="#cite_note-9" title="">[10]</a></sup> The most recent update released by The PHP Group is for the older PHP version 4 code branch. As of January 2008, this branch is up to version 4.4.8. PHP 4 will be supported by security updates until <a target="_blank" href="" title="August 8">August 8</a>, <a target="_blank" href="" title="2008">2008</a>.<sup id="cite_ref-2007_news_10-0" class="reference"><a href="#cite_note-2007_news-10" title="">[11]</a></sup></p>
<p>PHP 5 is the only stable version still being developed. <a target="_blank" href="" class="mw-redirect" title="Late static binding">Late static binding</a> has been missing from PHP and will be added in version 5.3.<sup id="cite_ref-11" class="reference"><a href="#cite_note-11" title="">[12]</a></sup> <sup id="cite_ref-12" class="reference"><a href="#cite_note-12" title="">[13]</a></sup> Development on PHP 4 ceased at the end of 2007, except for the critical security updates for PHP 4 already mentioned.<sup id="cite_ref-13" class="reference"><a href="#cite_note-13" title="">[14]</a></sup><sup id="cite_ref-2007_news_10-1" class="reference"><a href="#cite_note-2007_news-10" title="">[11]</a></sup> PHP 6 is now under development and major changes include the removal of <code>register_globals</code><sup id="cite_ref-14" class="reference"><a href="#cite_note-14" title="">[15]</a></sup>, <a target="_blank" href="" title="Magic quotes">magic quotes</a>, and <a target="_blank" href="" title="Safe mode">safe mode</a>.<sup id="cite_ref-2007_news_10-2" class="reference"><a href="#cite_note-2007_news-10" title="">[11]</a></sup><sup id="cite_ref-15" class="reference"><a href="#cite_note-15" title="">[16]</a></sup> PHP does not have complete native support for <a target="_blank" href="" title="Unicode">Unicode</a> or multibyte strings;<sup id="cite_ref-16" class="reference"><a href="#cite_note-16" title="">[17]</a></sup> unicode support will be added in PHP 6.<sup id="cite_ref-17" class="reference"><a href="#cite_note-17" title="">[18]</a></sup> Many high profile open source projects ceased to support PHP 4 in new code as of <a target="_blank" href="" title="February 5">February 5</a>, <a target="_blank" href="" title="2008">2008</a>, due to the GoPHP5 initiative, provided by a consortium of PHP developers promoting the transition from PHP 4 to PHP 5.<sup id="cite_ref-gophp5_18-0" class="reference"><a href="#cite_note-gophp5-18" title="">[19]</a></sup><sup id="cite_ref-19" class="reference"><a href="#cite_note-19" title="">[20]</a></sup></p>
<p>PHP is a popular target of <a target="_blank" href="" title="Hacker">hackers</a> who exploit vulnerable applications written in PHP. Software vulnerabilities related to PHP are identified among the <a target="_blank" href="" title="Common Vulnerabilities and Exposures">CVE (Common Vulnerabilities and Exposures)</a> records, available from the <a target="_blank" href="" title="National Vulnerability Database">National Vulnerability Database</a>. The proportion of vulnerabilities related to PHP, out of the total of all common vulnerabilities, amounted to: 12% in 2003, 20% in 2004, 28% in 2005, 43% in 2006, 36% in 2007, and 33.8% for the first quarter of 2008. More than a quarter of all software vulnerabilities listed in this database are related to PHP, and more than a third of vulnerabilities listed recently. Most of these vulnerabilities can be exploited remotely, that is without being logged on the computer hosting the vulnerable application.<sup id="cite_ref-27" class="reference"><a href="#cite_note-27" title="">[28]</a></sup> Such exploitation is made possible due to poor programming habits, such as failing to check data before entering it into a database, and features of the language such as <code>register_globals</code>, which is now deprecated.<sup id="cite_ref-register_globals_21-1" class="reference"><a href="#cite_note-register_globals-21" title="">[22]</a></sup> These result in <a target="_blank" href="" title="Code injection">code injection</a>, <a target="_blank" href="" title="Cross-site scripting">cross-site scripting</a> and other <a target="_blank" href="" title="Application security">application security</a> issues. It's important to note that none of these attacks are exclusive to PHP and all are avoidable by following proper coding techniques and principles.</p>
This diff is collapsed.
<p>PHP is a general-purpose scripting language that is especially suited for <a target="_blank" href="" title="Web development">web development</a>. It is the fourth most popular computer programming language, ranking behind <a target="_blank" href="" title="Java (programming language)">Java</a>, <a target="_blank" href="" title="C (programming language)">C</a>, and <a target="_blank" href="" title="Visual Basic">Visual Basic</a>.<sup id="cite_ref-22" class="reference"><a href="#cite_note-22" title="">[23]</a></sup> PHP generally runs on a <a target="_blank" href="" title="Web server">web server</a>, taking PHP code as its input and creating <a target="_blank" href="" title="Web page">web pages</a> as output. It can also be used for <a target="_blank" href="" class="mw-redirect" title="Command-line">command-line</a> scripting and <a target="_blank" href="" title="Client-side">client-side</a> <a target="_blank" href="" title="Graphical user interface">GUI</a> applications. PHP can be deployed on most <a target="_blank" href="" title="Web server">web servers</a>, many <a target="_blank" href="" title="Operating system">operating systems</a> and <a target="_blank" href="" class="mw-redirect" title="Platform (computing)">platforms</a>, and can be used with many <a target="_blank" href="" title="Relational database management system">relational database management systems</a>. It is available free of charge, and the PHP Group provides the complete source code for users to build, customize and extend for their own use.<sup id="cite_ref-foundations_4-1" class="reference"><a href="#cite_note-foundations-4" title="">[5]</a></sup></p>
<p>PHP primarily acts as a <a target="_blank" href="" title="Filter (software)">filter</a><sup id="cite_ref-23" class="reference"><a href="#cite_note-23" title="">[24]</a></sup>, taking input from a file or stream containing text and/or PHP instructions and outputs another stream of data; most commonly the output will be HTML. From PHP 4, the PHP <a target="_blank" href="" class="mw-redirect" title="Parser">parser</a> <a target="_blank" href="" title="Compiler">compiles</a> input to produce <a target="_blank" href="" title="Bytecode">bytecode</a> for processing by the <a target="_blank" href="" title="Zend Engine">Zend Engine</a>, giving improved performance over its <a target="_blank" href="" title="Interpreter (computing)">interpreter</a> predecessor.<sup id="cite_ref-24" class="reference"><a href="#cite_note-24" title="">[25]</a></sup></p>
<p>Originally designed to create dynamic web pages, PHP's principal focus is <a target="_blank" href="" title="Server-side scripting">server-side scripting</a><sup id="cite_ref-25" class="reference"><a href="#cite_note-25" title="">[26]</a></sup>, and it is similar to other server-side scripting languages that provide dynamic content from a web server to a <a target="_blank" href="" title="Client (computing)">client</a>, such as <a target="_blank" href="" title="Microsoft">Microsoft</a>'s <a target="_blank" href="" title="ASP.NET">ASP.NET</a> system, <a target="_blank" href="" title="Sun Microsystems">Sun Microsystems</a>' <a target="_blank" href="" title="JavaServer Pages">JavaServer Pages</a><sup id="cite_ref-26" class="reference"><a href="#cite_note-26" title="">[27]</a></sup>, and <a target="_blank" href="" title="Mod perl">mod_perl</a>. PHP has also attracted the development of many <a target="_blank" href="" title="Software framework">frameworks</a> that provide building blocks and a design structure to promote <a target="_blank" href="" title="Rapid application development">rapid application development</a> (RAD). Some of these include <a target="_blank" href="" title="CakePHP">CakePHP</a>, <a target="_blank" href="" title="PRADO">PRADO</a>, <a target="_blank" href="" title="Symfony">Symfony</a> and <a target="_blank" href="" title="Zend Framework">Zend Framework</a>, offering features similar to other <a target="_blank" href="" title="List of web application frameworks">web application frameworks</a>.</p>
<p>The <a target="_blank" href="" title="LAMP (software bundle)">LAMP</a> architecture has become popular in the web industry as a way of deploying web applications. PHP is commonly used as the <i>P</i> in this bundle alongside <a target="_blank" href="" title="Linux">Linux</a>, <a target="_blank" href="" title="Apache HTTP Server">Apache</a> and <a target="_blank" href="" title="MySQL">MySQL</a>, although the <i>P</i> can also refer to <a target="_blank" href="" title="Python (programming language)">Python</a> or <a target="_blank" href="" title="Perl">Perl</a>.</p>
<p>As of April 2007, over 20 million Internet domains were hosted on servers with PHP installed, and PHP was recorded as the most popular Apache module.<sup id="cite_ref-usage_5-2" class="reference"><a href="#cite_note-usage-5" title="">[6]</a></sup></p>
; $Id$
name = Advanced help example
description = A example help module to demonstrate the advanced help module
core = 6.x
// $Id$
* @file
* Provide example help for the advanced help module.
* Implementation of hook_menu().
function help_example_menu() {
// view help topic index
$items['admin/help_example'] = array(
'title' => 'Example help',
'page callback' => 'help_example_index_page',
'access arguments' => array('view advanced help index'),
'weight' => 9,
return $items;
function help_example_index_page() {
$output = theme('advanced_help_topic', 'help_example', 'about-php');
$output .= '&nbsp;' . t('Click the help icon to view the example help. Be sure to run cron to update the index if you want to try out the search features.');
return $output;
\ No newline at end of file
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment