PHP
Ensky / 林宏昱
Browser sends HTTP request
GET /enskylin HTTP/1.1
Host: www.facebook.com
HTTP/1.1 200 OK
HTML
Load data from database
GET /enskylin HTTP/1.1
Host: www.facebook.com
HTTP/1.1 200 OK
HTML
generate HTML
GET /enskylin HTTP/1.1
Host: www.facebook.com
HTTP/1.1 200 OK
HTML
HTTP response to browser
GET /enskylin HTTP/1.1
Host: www.facebook.com
HTTP/1.1 200 OK
HTML
CGI and Web server
Web server
CGI
HTTP Request
stdin + env
stdout
HTTP
Response
+ BODY
HTTP
request
body
HTTP
request
header
HTTP
response
head + body
What's PHP
• Rasmus Lerdorf, Danmark wrote the first version in
1995, use PHP to maintain his homepage
• Originally stood for "Personal Home Page Tools"
• It stands for PHP: Hypertext Preprocessor now
What can PHP do
• Although PHP is an "hypertext preprocessor"
you still can use it to do nearly anything you can do
in other language, not just writing a web page
C++, JAVA, Python, …
• You can use PHP to write a web server, BBS crawler,
NP homework, even a win32 program
Hello world
the same as
#include<iostream>
using namespace std;
int main () {
cout << "Hello world!";
return 0;
}
in C++
<?php
echo "Hello world!";
?>
OR
Hello world!
PHP at a glance
Variables
$helloWorld = "hello world";
echo $helloWorld;
echo $nonExistVar;
PHP Notice: Undefined variable: nonExistVar
• Variables starts with a $ (dollar) sign
• No reserved word. ($if, $else is okay)
• The other rules is the same as C/C++
Types
• Basic
– Boolean -> TRUE / True / true / FALSE / False / false
– Integer -> -(2^n) ~ 2^n - 1, n = 32 or 64
overflow: integer to float conversion
– Float -> IEEE 64bit format
– String
• Complex
– Array
– Object
Type verification
var_dump($variable)
// can print out the type
of $variable
var_dump(2147483647);
// int(2147483647)
var_dump(2147483648);
// float(2147483648)
var_dump(
array(1,2,3)
);
array(3) {
[0]=> int(1)
[1]=> int(2)
[2]=> int(3)
}
Strings
$string1 = "this is a stringn!";
// this is a string
// !
$string2 = 'this is a string, toon!';
// this is a string, toon!
$string3 = $string1 . " and " . $string2;
// this is a string
// ! and this is a string, toon!
Variables in String
$score = 95;
echo "Ensky's score is: " . $score;
echo "Ensky's score is: {$score}";
// Ensky's score is: 95
echo 'Ensky's score is: {$score}";
// Ensky's score is: {$score}
// not work with expression
echo "Hi {1+1}"; // Hi {1+1}
Strings (cont'd)
There is no "char type"
$string = "this is a string!";
var_dump($string);
// string(17) "this is a string!"
var_dump($string[0]);
// string(1) "t"
$string[0] = 'T';
echo $string;
// This is a string!
Implicitly type conversion
In PHP, type conversions are implicitly.
BEWARE OF IT!!
var_dump("123" + 456);
// int(579)
var_dump(456 + "1 apple a day keeps…");
// int(457)
var_dump(456 + "1,000");
// int(457)
Explicitly type conversion
$score = 60;
var_dump( (float) $score);
// float(60)
var_dump( (string) $score);
// string(2) "60"
var_dump( (bool) $score);
// bool(true)
== and ===
$a == $b
TRUE if $a is equal to $b after type juggling.
var_dump( 123 == "123" );
// bool(true)
var_dump( "0" == "0.00" );
// bool(true)
var_dump( "0" == 0 );
// bool(true)
== and ===
var_dump( "0" == null );
// bool(false)
var_dump( "0" == false );
// bool(true)
var_dump( null == false );
// bool(true) !!!!!!
var_dump( "0" == false && false == "" );
// bool(true)
var_dump( "0" == "" );
// bool(false) !!!!!!
== and ===
We can use === to avoid unexpected equality
var_dump( "0" === null );
// bool(false)
var_dump( "0" === false );
// bool(false)
var_dump( false === "" );
// bool(false)
var_dump( "0" === false && false === "" );
// bool(false)
var_dump( "0" === "" );
// bool(false)
== and ===
• $a == $b Equal
TRUE if $a is equal to $b after type juggling.
• $a === $b Identical
TRUE if $a is equal to $b, and they are of
the same type.
• Note: var_dump( 123 === "123" );
// bool(false)
http://tw2.php.net/ternary
Variable scopes in C
in C++, { } introduces a variable scope
for example
{
int a = 0;
}
cout << a << endl;
// reports error, a is in the inside scope
Variable scopes in PHP
in PHP, only Function introduces a new scope
{
$a = 1;
}
echo $a;
// 1
Variable scopes in PHP
in PHP, only Function introduces a new scope
function setA () {
$a = 1; // local variable
}
function printA () {
echo $a; // no, undefined $a
}
setA();
printA();
// PHP Notice: Undefined variable: a
Variable scopes in PHP
Use global keyword to access the global
variable
AVOID!!
function printA () {
global $a;
echo $a;
}
$a = 1;
printA();
// 1
functions in PHP
PHP's function acts like C/C++
function fib ($n) {
return $n <= 2 ?
1 : fib($n-1) + fib($n-2);
}
echo fib(9);
// 34
functions in PHP
Default function arguments
function printScore($score = 0) {
echo "your score is: {$score}";
}
printScore();
// your score is 0
printScore(100);
// your score is 100
Arrays
• PHP's array is very powerful, hence very inefficient
• You can use it like
– Array in C / ArrayList in Java / List in Python
– Map in C / HashMap in Java / Dictionary in Python
• With PHP's powerful built-in array functions,
array can easily becomes many data structure
like Dequeue, Queue, Stack
• You can put anything in array, even another array, or
an object;
Arrays
You can use like a simple C-style array
$scores = array(30, 35, 45, 25);
print_r($scores);
/* Array
(
[0] => 30
[1] => 35
[2] => 45
[3] => 25
) */
key
value
Arrays
Totally the same as
$scores = array(0 => 30, 1 => 35, 2 => 45, 3 => 25);
print_r($scores);
/* Array
(
[0] => 30
[1] => 35
[2] => 45
[3] => 25
) */
key
value
Arrays
or a HashMap
$menu = array(
'beef noodles' => 260,
'noodles' => 60,
'beef' => 200
);
echo "price of beef is: $" . $menu['beef'];
// price of beef is: $200
key
value
Arrays
or act as an queue
$queue = array();
$queue[] = '1';
$queue[] = '2';
$queue[] = '3';
echo array_shift($queue);
// 1
print_r($queue);
/* Array
(
[0] => 2
[1] => 3
) */
auto key
value
Arrays
or act as an stack
$queue = array();
$queue[] = '1';
$queue[] = '2';
$queue[] = '3';
echo array_pop($queue);
// 3
print_r($queue);
/* Array
(
[0] => 1
[1] => 2
) */
auto key
value
Arrays
hold a structured document
$persion = array(
'name' => 'ensky',
'age' => 23,
'works' => array(
'NCTU computer science TA',
'2014 Database TA'
)
);
key
value
value
no key, auto assign one
Control Structures
• Nearly the same as C++
• if, else if, else
• switch, case, default
• do … while
• while
• for
• break, continue
• return
Control Structures
Foreach:
$array = array(1, 2, 3);
foreach ($array as $value) {
echo $value . " ";
}
// 1 2 3
Control Structures
Foreach:
$array = array('a' => 'apple', 'b' => 'banana');
foreach ($array as $key => $value) {
echo "{$key}:{$value} ";
}
// a:apple b:banana
PHP and HTML
Let's start with Hello world
PHP & HTML - Hello world
Let's start with Hello world
== index.php ==
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>Hello world! Title</title>
</head>
<body>
<p>Hello world!</p>
</body>
</html>
Recall PHP Hello world
the same as
#include<iostream>
using namespace std;
int main () {
cout << "Hello world!";
return 0;
}
in C++
<?php
echo "Hello world!";
?>
OR
Hello world!
PHP & HTML – print variable
<?php $name = 'ensky'; ?>
…
<body>
<p>Hello world! <?php echo $name; ?></p>
<p>Hello world! <?= $name ?></p>
</body>
…
PHP & HTML – print data
<?php
$dict = array('a' => 'apple', 'b' => 'banana');
?>
…
<?php foreach ($dict as $key => $val): ?>
<p><?= $key ?> : <?= $val ?></p>
<?php endforeach; ?>
HTML Forms
HTML forms
How to create a form in HTML?
1. create a form tag
<form action="login.php" method="POST">
</form>
where to send GET or POST?
HTML forms
How to create a form in HTML?
2. put some input
<form action="login.php" method="POST">
<input type="text" name="email">
<input type="password" name="password">
</form>
http://www.w3schools.com/tags/att_input_type.asp
HTML forms
How to create a form in HTML?
2. put some inputs
<form action="login.php" method="POST">
<input type="text" name="email">
<input type="password" name="password">
<button type="submit">免費註冊</button>
</form>
POST /login.php HTTP/1.1
Host: your_hostname
<form action="login.php" method="POST">
<input type="text" name="email">
<input type="password" name="password">
<button type="submit">免費註冊</button>
</form>
email=enskylin@gmail.com&
password=nctu5566
/login.php
email=enskylin@gmail.com&
password=nctu5566
/login.php
In login.php
-----
<?php
echo $_POST['email'];
echo $_POST['password'];
?>
POST /login.php HTTP/1.1
Host: your_hostname
HTTP & states
HTTP is a stateless protocol
When you open a browser,
navigate to a url
HTTP Request
HTTP response
and it is done.
How do we preserve the
"state"?
login or not?
who are you?
what did you buy?
Cookie!
• HTTP protocol defined a spec called "cookie"
• which can help server to identify clients
HOW?
client request
HTTP Request
server response
with set-cookie header
HTTP response
Set-Cookie: name=ensky
HTML …
Server asked me
to save the cookie!
The next client request
will bring the cookie set by server
HTTP Request
cookie: name=ensky
Server is able to identify
which client it is.
HTTP Request
cookie: name=ensky
Oh! you're
ensky
Cookie's problem
• However, Cookie identification is too weak!
• Anyone who can make a fake identification
HTTP Request
cookie: name=ensky
Oh! you're
ensky
I'm Cracker
Session
• One approach is session
• Server gives client a "temporally key"
HTTP Request
After the request, server will
generate the temporarily key
session name
0aj9 ensky
s4df dy93
HTTP Request
generate a temp key,
expire in a short time
Response with session(temp key)
HTTP Request
HTTP response
Set-Cookie: session=0aj9
HTML …
session name
0aj9 ensky
s4df dy93
Server can then identify
successfully by correct key
HTTP Request
cookie: session=0aj9
Oh! you're
ensky
session name
0aj9 ensky
s4df dy93
Use session
Set
------
<?php
session_start();
$_SESSION['name'] = 'ensky';
Use session
Get
------
<?php
session_start();
echo $_SESSION['name'];
Use session
Destroy
------
<?php
session_start();
$_SESSION = array();
session_destroy();
Use session
• Note:
session_start(); must be call before any HTML output
– why?
Practice
• write a webpage
– login (using predefined username / password)
• output login error when input wrong username or password
– echo out current DateTime(ex: 2014/3/4 9:55:54)
using PHP date() function
• see PHP doc
• shows only when user is logged-in successfully
– logout
• after logout, user cannot use any function without login
• Just practice, no need to hand in
Appendix
Run PHP script
• Since PHP is a server-side CGI, you cannot just open
PHP script in your browser
• After written PHP script by IDEs I suggested last week,
you should put it in CS web server, and reach it by
http://people.cs.nctu.edu.tw/~your_id/file_name.php
or your own webserver and reach it by
http://localhost/file_name.php
functions in PHP
Defines as anonymous function
$fib = function ($n) { … }
echo $fib(9);
inner function
function a () {
$n = 0;
$b = function () use ($n) {
// you can use $n here
};
}
since PHP 5.3
functions in PHP
Reference arguments
function addN (& $n) {
$n++;
}
$n = 0;
addN($n);
echo $n;
// 1
Redirect
• how to redirect to another webpage?
<?php
header('location: another_webpage.php');
exit;
note: you must call header before any HTML output,
just like session_start();
PHP Module
In PHP, you can import other file into a file
lib.php
-----
<?php
function fib($a) { return … }
page.php
<?php
require_once "lib.php";
echo fib(3);
http://www.php.net/manual/es/function.in
clude.php

2014 database - course 2 - php

  • 1.
  • 2.
    Browser sends HTTPrequest GET /enskylin HTTP/1.1 Host: www.facebook.com HTTP/1.1 200 OK HTML
  • 3.
    Load data fromdatabase GET /enskylin HTTP/1.1 Host: www.facebook.com HTTP/1.1 200 OK HTML
  • 4.
    generate HTML GET /enskylinHTTP/1.1 Host: www.facebook.com HTTP/1.1 200 OK HTML
  • 5.
    HTTP response tobrowser GET /enskylin HTTP/1.1 Host: www.facebook.com HTTP/1.1 200 OK HTML
  • 6.
    CGI and Webserver Web server CGI HTTP Request stdin + env stdout HTTP Response + BODY HTTP request body HTTP request header HTTP response head + body
  • 8.
    What's PHP • RasmusLerdorf, Danmark wrote the first version in 1995, use PHP to maintain his homepage • Originally stood for "Personal Home Page Tools" • It stands for PHP: Hypertext Preprocessor now
  • 9.
    What can PHPdo • Although PHP is an "hypertext preprocessor" you still can use it to do nearly anything you can do in other language, not just writing a web page C++, JAVA, Python, … • You can use PHP to write a web server, BBS crawler, NP homework, even a win32 program
  • 10.
    Hello world the sameas #include<iostream> using namespace std; int main () { cout << "Hello world!"; return 0; } in C++ <?php echo "Hello world!"; ?> OR Hello world!
  • 11.
    PHP at aglance
  • 12.
    Variables $helloWorld = "helloworld"; echo $helloWorld; echo $nonExistVar; PHP Notice: Undefined variable: nonExistVar • Variables starts with a $ (dollar) sign • No reserved word. ($if, $else is okay) • The other rules is the same as C/C++
  • 13.
    Types • Basic – Boolean-> TRUE / True / true / FALSE / False / false – Integer -> -(2^n) ~ 2^n - 1, n = 32 or 64 overflow: integer to float conversion – Float -> IEEE 64bit format – String • Complex – Array – Object
  • 14.
    Type verification var_dump($variable) // canprint out the type of $variable var_dump(2147483647); // int(2147483647) var_dump(2147483648); // float(2147483648) var_dump( array(1,2,3) ); array(3) { [0]=> int(1) [1]=> int(2) [2]=> int(3) }
  • 15.
    Strings $string1 = "thisis a stringn!"; // this is a string // ! $string2 = 'this is a string, toon!'; // this is a string, toon! $string3 = $string1 . " and " . $string2; // this is a string // ! and this is a string, toon!
  • 16.
    Variables in String $score= 95; echo "Ensky's score is: " . $score; echo "Ensky's score is: {$score}"; // Ensky's score is: 95 echo 'Ensky's score is: {$score}"; // Ensky's score is: {$score} // not work with expression echo "Hi {1+1}"; // Hi {1+1}
  • 17.
    Strings (cont'd) There isno "char type" $string = "this is a string!"; var_dump($string); // string(17) "this is a string!" var_dump($string[0]); // string(1) "t" $string[0] = 'T'; echo $string; // This is a string!
  • 18.
    Implicitly type conversion InPHP, type conversions are implicitly. BEWARE OF IT!! var_dump("123" + 456); // int(579) var_dump(456 + "1 apple a day keeps…"); // int(457) var_dump(456 + "1,000"); // int(457)
  • 19.
    Explicitly type conversion $score= 60; var_dump( (float) $score); // float(60) var_dump( (string) $score); // string(2) "60" var_dump( (bool) $score); // bool(true)
  • 20.
    == and === $a== $b TRUE if $a is equal to $b after type juggling. var_dump( 123 == "123" ); // bool(true) var_dump( "0" == "0.00" ); // bool(true) var_dump( "0" == 0 ); // bool(true)
  • 21.
    == and === var_dump("0" == null ); // bool(false) var_dump( "0" == false ); // bool(true) var_dump( null == false ); // bool(true) !!!!!! var_dump( "0" == false && false == "" ); // bool(true) var_dump( "0" == "" ); // bool(false) !!!!!!
  • 22.
    == and === Wecan use === to avoid unexpected equality var_dump( "0" === null ); // bool(false) var_dump( "0" === false ); // bool(false) var_dump( false === "" ); // bool(false) var_dump( "0" === false && false === "" ); // bool(false) var_dump( "0" === "" ); // bool(false)
  • 23.
    == and === •$a == $b Equal TRUE if $a is equal to $b after type juggling. • $a === $b Identical TRUE if $a is equal to $b, and they are of the same type. • Note: var_dump( 123 === "123" ); // bool(false) http://tw2.php.net/ternary
  • 24.
    Variable scopes inC in C++, { } introduces a variable scope for example { int a = 0; } cout << a << endl; // reports error, a is in the inside scope
  • 25.
    Variable scopes inPHP in PHP, only Function introduces a new scope { $a = 1; } echo $a; // 1
  • 26.
    Variable scopes inPHP in PHP, only Function introduces a new scope function setA () { $a = 1; // local variable } function printA () { echo $a; // no, undefined $a } setA(); printA(); // PHP Notice: Undefined variable: a
  • 27.
    Variable scopes inPHP Use global keyword to access the global variable AVOID!! function printA () { global $a; echo $a; } $a = 1; printA(); // 1
  • 28.
    functions in PHP PHP'sfunction acts like C/C++ function fib ($n) { return $n <= 2 ? 1 : fib($n-1) + fib($n-2); } echo fib(9); // 34
  • 29.
    functions in PHP Defaultfunction arguments function printScore($score = 0) { echo "your score is: {$score}"; } printScore(); // your score is 0 printScore(100); // your score is 100
  • 30.
    Arrays • PHP's arrayis very powerful, hence very inefficient • You can use it like – Array in C / ArrayList in Java / List in Python – Map in C / HashMap in Java / Dictionary in Python • With PHP's powerful built-in array functions, array can easily becomes many data structure like Dequeue, Queue, Stack • You can put anything in array, even another array, or an object;
  • 31.
    Arrays You can uselike a simple C-style array $scores = array(30, 35, 45, 25); print_r($scores); /* Array ( [0] => 30 [1] => 35 [2] => 45 [3] => 25 ) */ key value
  • 32.
    Arrays Totally the sameas $scores = array(0 => 30, 1 => 35, 2 => 45, 3 => 25); print_r($scores); /* Array ( [0] => 30 [1] => 35 [2] => 45 [3] => 25 ) */ key value
  • 33.
    Arrays or a HashMap $menu= array( 'beef noodles' => 260, 'noodles' => 60, 'beef' => 200 ); echo "price of beef is: $" . $menu['beef']; // price of beef is: $200 key value
  • 34.
    Arrays or act asan queue $queue = array(); $queue[] = '1'; $queue[] = '2'; $queue[] = '3'; echo array_shift($queue); // 1 print_r($queue); /* Array ( [0] => 2 [1] => 3 ) */ auto key value
  • 35.
    Arrays or act asan stack $queue = array(); $queue[] = '1'; $queue[] = '2'; $queue[] = '3'; echo array_pop($queue); // 3 print_r($queue); /* Array ( [0] => 1 [1] => 2 ) */ auto key value
  • 36.
    Arrays hold a structureddocument $persion = array( 'name' => 'ensky', 'age' => 23, 'works' => array( 'NCTU computer science TA', '2014 Database TA' ) ); key value value no key, auto assign one
  • 37.
    Control Structures • Nearlythe same as C++ • if, else if, else • switch, case, default • do … while • while • for • break, continue • return
  • 38.
    Control Structures Foreach: $array =array(1, 2, 3); foreach ($array as $value) { echo $value . " "; } // 1 2 3
  • 39.
    Control Structures Foreach: $array =array('a' => 'apple', 'b' => 'banana'); foreach ($array as $key => $value) { echo "{$key}:{$value} "; } // a:apple b:banana
  • 40.
    PHP and HTML Let'sstart with Hello world
  • 41.
    PHP & HTML- Hello world Let's start with Hello world == index.php == <!doctype html> <html lang="en"> <head> <meta charset="utf-8"> <title>Hello world! Title</title> </head> <body> <p>Hello world!</p> </body> </html>
  • 42.
    Recall PHP Helloworld the same as #include<iostream> using namespace std; int main () { cout << "Hello world!"; return 0; } in C++ <?php echo "Hello world!"; ?> OR Hello world!
  • 43.
    PHP & HTML– print variable <?php $name = 'ensky'; ?> … <body> <p>Hello world! <?php echo $name; ?></p> <p>Hello world! <?= $name ?></p> </body> …
  • 44.
    PHP & HTML– print data <?php $dict = array('a' => 'apple', 'b' => 'banana'); ?> … <?php foreach ($dict as $key => $val): ?> <p><?= $key ?> : <?= $val ?></p> <?php endforeach; ?>
  • 45.
  • 46.
    HTML forms How tocreate a form in HTML? 1. create a form tag <form action="login.php" method="POST"> </form> where to send GET or POST?
  • 47.
    HTML forms How tocreate a form in HTML? 2. put some input <form action="login.php" method="POST"> <input type="text" name="email"> <input type="password" name="password"> </form> http://www.w3schools.com/tags/att_input_type.asp
  • 48.
    HTML forms How tocreate a form in HTML? 2. put some inputs <form action="login.php" method="POST"> <input type="text" name="email"> <input type="password" name="password"> <button type="submit">免費註冊</button> </form>
  • 49.
    POST /login.php HTTP/1.1 Host:your_hostname <form action="login.php" method="POST"> <input type="text" name="email"> <input type="password" name="password"> <button type="submit">免費註冊</button> </form> email=enskylin@gmail.com& password=nctu5566 /login.php
  • 50.
  • 51.
  • 52.
    HTTP is astateless protocol
  • 53.
    When you opena browser, navigate to a url
  • 54.
  • 55.
  • 56.
    and it isdone.
  • 57.
    How do wepreserve the "state"? login or not? who are you? what did you buy?
  • 58.
    Cookie! • HTTP protocoldefined a spec called "cookie" • which can help server to identify clients HOW?
  • 59.
  • 60.
    server response with set-cookieheader HTTP response Set-Cookie: name=ensky HTML … Server asked me to save the cookie!
  • 61.
    The next clientrequest will bring the cookie set by server HTTP Request cookie: name=ensky
  • 62.
    Server is ableto identify which client it is. HTTP Request cookie: name=ensky Oh! you're ensky
  • 63.
    Cookie's problem • However,Cookie identification is too weak! • Anyone who can make a fake identification HTTP Request cookie: name=ensky Oh! you're ensky I'm Cracker
  • 64.
    Session • One approachis session • Server gives client a "temporally key" HTTP Request
  • 65.
    After the request,server will generate the temporarily key session name 0aj9 ensky s4df dy93 HTTP Request generate a temp key, expire in a short time
  • 66.
    Response with session(tempkey) HTTP Request HTTP response Set-Cookie: session=0aj9 HTML … session name 0aj9 ensky s4df dy93
  • 67.
    Server can thenidentify successfully by correct key HTTP Request cookie: session=0aj9 Oh! you're ensky session name 0aj9 ensky s4df dy93
  • 68.
  • 69.
  • 70.
  • 71.
    Use session • Note: session_start();must be call before any HTML output – why?
  • 72.
    Practice • write awebpage – login (using predefined username / password) • output login error when input wrong username or password – echo out current DateTime(ex: 2014/3/4 9:55:54) using PHP date() function • see PHP doc • shows only when user is logged-in successfully – logout • after logout, user cannot use any function without login • Just practice, no need to hand in
  • 73.
  • 74.
    Run PHP script •Since PHP is a server-side CGI, you cannot just open PHP script in your browser • After written PHP script by IDEs I suggested last week, you should put it in CS web server, and reach it by http://people.cs.nctu.edu.tw/~your_id/file_name.php or your own webserver and reach it by http://localhost/file_name.php
  • 75.
    functions in PHP Definesas anonymous function $fib = function ($n) { … } echo $fib(9); inner function function a () { $n = 0; $b = function () use ($n) { // you can use $n here }; } since PHP 5.3
  • 76.
    functions in PHP Referencearguments function addN (& $n) { $n++; } $n = 0; addN($n); echo $n; // 1
  • 77.
    Redirect • how toredirect to another webpage? <?php header('location: another_webpage.php'); exit; note: you must call header before any HTML output, just like session_start();
  • 78.
    PHP Module In PHP,you can import other file into a file lib.php ----- <?php function fib($a) { return … } page.php <?php require_once "lib.php"; echo fib(3); http://www.php.net/manual/es/function.in clude.php