0% found this document useful (0 votes)
310 views

PHP PPT

The document provides an introduction to server-side programming with PHP. It covers basics of HTTP requests and responses, PHP syntax including variables, operators, conditional and looping statements, functions, and arrays. It also discusses server-side options like PHP, JavaScript frameworks, and Ruby on Rails.

Uploaded by

fgg
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
310 views

PHP PPT

The document provides an introduction to server-side programming with PHP. It covers basics of HTTP requests and responses, PHP syntax including variables, operators, conditional and looping statements, functions, and arrays. It also discusses server-side options like PHP, JavaScript frameworks, and Ruby on Rails.

Uploaded by

fgg
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 66

Introduction to Server-Side Programming

Charles Liu
Overview
1.  Basics of HTTP
2.  PHP syntax
3.  Server-side programming
4.  Connecting to MySQL
Request to a Static Site

Server:
1.  Homepage
lookup
2.  Send as HTTP
Response
HTTP Request: GET www.xkcd.com

You (client) Web server

HTTP Response: web content (HTML file) IP: 72.26.203.99


Client-side code: HTML, CSS, JavaScript
Request to a Dynamic Site
!  The server must respond dynamically if it needs to provide
different client-side code depending on the situation
!  Date and time

!  Specifics of the user’s request

!  Database contents – forms and authentication

Server:
HTTP Request: GET www.facebook.com
1.  Look up things that go on
user’s profile, such as
wall posts and friends "
caches, database
lookups
You (client) Web server
2.  Generate client-side
HTTP Response: web content (HTML file) code containing these
things
Client-side code: HTML, CSS, JavaScript
3.  Send as HTTP response
(dynamically generated by server)
sample http interactions

› GET, data passed as query string


sample http interactions

› POST, data passed as form data


http methods
idempotent all
safe PUT
GET DELETE
HEAD
POST

› safe: no side effects


› idempotent: doing twice same as once
› PUT vs POST: PUT typically names a created object
› PUT & DELETE used in APIs but not usually in browsers
response status codes
categories of codes
› 1xx informational
› 2xx success
› 3xx redirect
› 4xx client error
› 5xx server error
most common codes
› 200 OK (request succeeded, resource is in message body)
› 404 Not Found (resource doesn’t exist)
› 303 See Other (resource moved, see location header)
› 500 Server Error (web app implementer messed up)
Server-side options
!  PHP – today
!  Easy to start, lower learning curve
!  Potentially messy as your site grows

!  Javascript frameworks – node.js and Meteor.js


!  Ruby on Rails

!  Other options – Django, Flask, Sinatra…


PHP
Introduction and Basic Syntax

Charles Liu
What is PHP?

!  PHP = PHP: Hypertext Preprocessor


!  Server-side scripting language that may be

embedded into HTML


!  Ultimate goal is to get PHP files to generate client-

side code
!  mustend up with HTML, CSS, JavaScript, other client-
side code!
Side-by-side

PHP File: Output: resulting HTML


<html> <html>
<head> <head>
<title> PHP Introduction </title> <title> PHP Introduction </title>
</head> </head>
<body> <body>
This is HTML! <br /> This is HTML! <br />
<?php This is PHP! <br /></body>
echo 'This is PHP! <br />'; </html>
?>
</body>
</html>
A closer look
<html>
<head>
<title> PHP Introduction </title>
</head>
<body>
This is HTML! <br />
<?php
echo 'This is PHP! <br />'; // prints to screen
/*
Here's a longer
comment
that spans multiple
lines.
*/
?>
</body> !  PHP tags: <?php and ?>
</html>
!  The echo command
!  Single line comment ( // )
!  Multiple line comment (/* and */)
Viewing PHP files
!  PHP files executed on the web server
!  Save .php files in subdirectory of web server

!  /var/www/ on many Linux configurations


!  web_scripts directory of your user directory on Athena

!  Make call to web server via domain name


(google.com), IP address (72.26.203.99), or localhost
if on your own computer
PHP
Syntax: Variables, Operators, and Strings

Charles Liu
Variables
!  Store values for future reference, use variable name
to refer to the value stored in it
$x = 42; // store the value 42 in $x
echo $x; // prints 42
echo $x+1; // prints 43, value of $x is still 42
$x = ‘hello!’ // type of $x can change

!  PHP is a loosely-typed language


!  Do not need to declare the type of a variable
!  Type can change throughout the program
Operators
!  Arithmetic operators
!  +, -, *, /, % (modulus – remainder after division)
!  Logical AND (&&), OR (||), NOT (!)
!  Assignment operators (=)

!  Shorthand for assignment operators:

!  $x += $y equivalent to $x = $x + $y
!  Also works with subtraction, multiplication, division,
modulus, and string concatenation
== versus ===
!  Two “equality” operators
!  ==tests for “equality” in value but not necessarily type
!  === tests for “identity” in value AND type

!  == ignores the distinction between:


!  Integers,floating point numbers, and strings containing
the same numerical value
!  Nonzero numbers and boolean TRUE
!  Zero and boolean FALSE
!  Empty string, the string ‘0’ and boolean FALSE
!  Any other non-empty string and boolean TRUE
Strings
!  Concatenation of strings – the . operator
$a = ‘hello’;
$b = ‘world’;
echo $a . ‘ ‘ . $b . ‘!’; // prints ‘hello world!’

!  String functions
!  Length: strlen()
!  Position of substring: strpos()

!  More on string functions:


http://www.w3schools.com/php/php_ref_string.asp
PHP
Syntax: Conditional and Looping Statements

Charles Liu
Conditional Statements
if (condition / boolean expression) {
statements
}
else if (another condition) {
statements
}
// there may be more than one else if block
else {
statements
}

$x = 5;
if ($x == 5) {
echo ‘The variable x has value 5!’;
}
Loops
$x = 2;
while ($x < 1000) {
echo $x . “\n”; // \n is newline character
$x = $x * $x;
}

do {
echo $x . “\n”;
$x = $x * $x;
} while ($x < 1000); // note the semicolon

for ($i = 1; $i <= 10; $i++) {


echo $i . “:” . ($i * $i) . “\n”;
}
PHP
Syntax: Functions and Global Variables

Charles Liu
Defining your own functions
function function_name ($arg1, $arg2) {
function code function parameters
return $var // optional
}

Example: a simple multiply function


function multiply($x, $y) {
echo $x * $y;
echo “\n”;
}
multiply(5, 1.2); " prints 6
$a = 5;
$b = 1.2;
multiply($a, $b); " prints 6
$a = array(1,2,3);
multiply($a, $b); " error
$a = “string”
multiply($a, $b); " prints 0 (?!)
Return values
!  A function can return a value after it is done
!  Usethis value in future computation, use like a variable,
assign value to a variable

function multiply($x, $y) {


return $x * $y;
}
multiply(2,3); " prints nothing! returns value, but we don’t store anywhere
echo multiply(2,3); " prints 6
$a = multiply(2,3); " assigns the value 6 to the variable $a
$b = multiply(multiply(2,3), multiply(3,4)); " assigns the
value 72 to the variable $b
Variable scope
!  Variables declared within a function have local scope
!  Can only be accessed from within the function
<?php
function function1() {
… // some code
$local_var = 5; // this variable is LOCAL to
// function1()
echo $local_var + 3; // prints 8
}

… // some code
function1();
echo $local_var; // does nothing, since $local_var is
// out of scope

?>
Global variable scope
!  Variables declared outside a function have global
scope
!  Use global keyword to gain access within functions
<?php
function function1() {
echo $a; // does nothing, $a is out of scope
global $a; // gain access to $a within function
echo $a; // prints 4
}

… // some code
$a = 4; // $a is a global variable
function1();

?>
PHP
Syntax: Arrays

Charles Liu
Arrays as a list of elements
!  Use arrays to keep track of a list of elements using
the same variable name, identifying each element by
its index, starting with 0
$colors = array(‘red’, ‘blue’, ‘green’, ‘black’, ‘yellow’);

!  To add an element to the array:


$colors[] = ‘purple’;
!  To remove an element from the array:
unset($colors[2]);
$colors = array_values($colors);
Arrays as key-value mappings
!  Use arrays to keep track of a set of unique keys and the
values that they map to – called an associative array
$favorite_colors = array(‘Joe’ => ‘blue’, ‘Elena’ =>
‘green’,
‘Mark’ => ‘brown’, ‘Adrian’ => ‘black’, ‘Charles’ =>
‘red’);
!  To add an element to the array:
$favorite_colors[‘Bob’] = ‘purple’;
!  To remove an element from the array:
unset($favorite_colors[‘Charles’]);
!  Keys must be unique:
$favorite_colors[‘Joe’] = ‘purple’ overwrites ‘blue’
The for-each loop
!  The for-each loops allow for easy iteration over all
elements of an array.

foreach ($colors as $color) {


echo $color; // simply prints each color
}
foreach ($colors as $number => color) {
echo “$number => $color”; // prints color with index
// to change an element:
// $colors[$number] = $new_color;
PHP
HTTP Requests and Forms

Charles Liu
Superglobals
!  A few special associative arrays that can be
accessed from anywhere in a PHP file

!  The $_SERVER superglobal gives information about


server and client
!  $_SERVER[‘SERVER_ADDR’]" server IP
!  $_SERVER[‘REMOTE_ADDR’] " client IP

!  $_SERVER[‘HTTP_USER_AGENT’] " client OS and


browser
Passing information to the server
!  Sometimes, we require additional values be passed
from client to server
!  Login:username and password
!  Form information to be stored on server

!  GET request: pass information via the URL


!  http://www.yourdomain.com/yourpage.php?
firstparam=firstvalue&secondparam=secondvalue
!  Access values server-side using $_GET superglobal
#  $_GET[‘firstparam’]
=> ‘firstvalue’
#  $_GET[‘secondparam’] => ‘secondvalue’
When to use $_GET vs. $_POST
!  GET requests are sent via the URL, and can thus be
cached, bookmarked, shared, etc
!  GET requests are limited by the length of the URL

!  POST requests are not exposed in the URL and

should be used for sensitive data


!  There is no limit to the amount of information passed
via POST
Dealing with forms
!  Forms are generally used to collect data, whether
the data needs to be stored on the server
(registration) or checked against the server (login)
!  2 components to a form:

!  The HTML generating the form itself


!  The server-side script that the form data is sent to (via
GET or POST), taking care of the processing involved
#  Servershould respond appropriately, redirecting the user to
the appropriate destination or generating the appropriate
page
Forms: client-side
<html>
<head>
<title> A Form Example </title>
</head><body>
<form action="welcome.php" method="post">
Name: <br /> <input type="text" name="name" /><br />
Phone Number: <br /> <input type="text" name="phone" /><br /
>
<input type="submit" value="Submit">
</form>
</body>
</html>
!  form action – where to send the form data
!  method – how to send the data (GET or POST)
!  Name attributes become the keys used to access the
corresponding fields in the $_GET or $_POST arrays
Forms: server-side

<html>
<head><title>This is welcome.php</title></head>
<body>
The name that was submitted was: &nbsp;
<?php echo $_POST['name']; ?><br />
The phone number that was submitted was: &nbsp;
<?php echo $_POST['phone']; ?><br />
</body>
</html>

!  A simple PHP file that displays what was entered


into the form
!  Can do many other things server-side depending on the
situation
PHP
Cookies and Sessions

Charles Liu
Cookies and sessions

!  HTTP is stateless – it does not keep track of the


client between requests
!  But sometimes we need to keep track of this

information
!  Shoppingcart
!  “Remember me” on login sites

!  2 solutions to this issue


!  Cookies – small file stored client-side
!  Sessions – relevant data stored on the server
cookies in http
cookie is
› name-value pair
› expiration, path & domain
server sends
› using set-cookie header
browser sends back
› all unexpired cookies
› with matching path
a funny cookie tale
expiration nytimes.com used cookies
› session cookies: on quit to count #articles read, so
› persistent cookies: on expire viewers just deleted
cookies...
Cookies

!  Cookies are stored on the user’s browser, and are


sent to the server on every relevant request
!  The $_COOKIE superglobal makes a cookie a key-

value pairing
!  Store user information as a value with a known key
!  Never assume a cookie has been set. Always check with
isset($_COOKIE[$cookie_name]) before trying to use
the cookie’s value
The setcookie() function
!  To set a cookie in PHP:
setcookie(name, value, expire, path, domain);
!  Name and value correspond to $_COOKIE[$name] =
$value
!  Expiration – cookie will no longer be read after the
expiration
!  Useful to use time in seconds relative to the present:
#  time() + time in seconds until expiration
!  Path and domain refer to where on the site the cookie is
valid
!  Usually ‘/’ for path and the top-level domain (yoursitename.com)
!  To delete a cookie, set a new cookie with same arguments
but expiration in the past
Setting cookies

!  Cookies are set via the HTTP header


!  Must be sent before the body – before any HTML, CSS,
JS, etc.
!  This code will not work:
if(isset($_COOKIE["6470"])) {
$value = $_COOKIE['6470'];
echo "Cookie is set to $value";
}
else {
$value = 0;
}
// after echo statement: will not work!
setcookie("6470", $value+1, time()+60*60);?>
Sessions

!  Two main disadvantages of cookies


!  Limitedin size by browser
!  Stored client-side " users / malicious people can change

!  Sessions store user data on the server


!  Limitedonly by server space
!  Cannot be modified by users

!  A potential downside to sessions is that they expire


when the browser is closed
!  Sessions are identified by a session id: often a small
cookie! But the rest of the data is still stored on the
server
Using sessions

!  Call session_start() at top of every page to start session


!  Sets
a cookie on the client: must follow same rules as cookies
(before any HTML, CSS, JS, echo or print statements)
!  Access data using the $_SESSION superglobal
<?php
session_start();
if (isset($_SESSION["count"])) {
$_SESSION["count"] += 1;
echo "You\'ve visited here {$_SESSION['count']}
times";
}
else {
$_SESSION["count"] = 1;
echo "You\'ve visited once";
}
?>
Removing sessions

!  Remove an individual element of the $_SESSION


superglobal
!  unset($_SESSION[‘key_name’]);

!  Destroy the entire session, remove all data


!  Use the function session_destroy()
!  $_SESSION no longer valid

!  Will need to call session_start() to start a new session


Recap: a comparison

COOKIES SESSIONS
Where is data stored? Locally on client Remotely on server
Expiration? Variable – determined Session is destroyed
when cookie is set when the browser is
closed
Size limit? Depends on browser Depends only on server
(practically no size
limit)
Accessing information? $_COOKIE $_SESSION
General use? Remember small things Remembering varying
about the user, such as amount of data about
login name. Remember the user in one
things after re-opening browsing “session”.
browser More sensitive info.
PHP
MySQL

Charles Liu
Databases and MySQL

!  Databases give us an easy way to issue


“commands” to insert, select, organize, and remove
data

!  MySQL: open-source database, relatively easy to


set up, easy to use with PHP
!  Other
SQL databases, as well as non-SQL options such
as MongoDB
Connecting to MySQL

!  MySQL database server can contain many


databases, each of which can contain many tables
!  Connecting to the server via PHP:
$db = mysql_connect(server, username, password);
if (!$db) {
// terminate and give error message
die(mysql_error());
}
mysql_select_db(database_name, $db);
!  $db is a database resource type. We use this
variable to refer to the connection created
Making SQL queries

!  PHP function for making queries:


mysql_query(query_string, db_resource);

!  Queries that return information, such as SELECT:


returns a resource
$result = mysql_query(query_string, $db);
!  In this case, this resource is stored in the variable $result
!  Other queries, returns TRUE upon success.
!  All queries return FALSE on failure. Best practice is
to handle the error (e.g. die(mysql_error()))
Retrieving information from a query

!  Loop over the returned $result resource, row by row

$result = mysql_query(query, $db);


while ($row = mysql_fetch_assoc($result)) {
$col1 = $row['column_1_name'];
$col2 = $row['column_2_name'];
// and so forth...
}
A shared database resource

!  Don’t repeat code - put database connection, select


database code into the same file
!  Reference the connection resource ($db) in other

files (using include($file_path))


SQL queries
!  INSERT INTO table_name (col1, col2 …) VALUES
(val1, val2 …)
!  SELECT col1, col2 … FROM table_name WHERE

conditions
!  CREATE TABLE table_name (column_name

data_type(size), column_name data_type(size) …)


The relational model
!  Indicate relations between objects (rows) with an id
" a pointer to a row in a different table
!  The INNER JOIN
what is a relational database?
a relation is a set of tuples id first
users
last email password
› tuple is ordered, set isn’t 1 Ann Alert aa@mit aa
2 Chloe Closure cc@mit blah

a relational database is 3 Ben Bitdiddle ben@mit 1010

› a set of named relations id by


subjects
name category
› with named columns 1
2
3
2
Lucid
Clover
2
1
3 3 Cosi 1

reviews
id by content rating about
1 3 yummy! 5 2
2 2 neat 4 1

categories
id name
1 Food
2 Tech
3 Travel
query operators
relational algebra operators
› select: filter rows by a predicate
› project: filter by columns
› product: combine two tables
in SQL, all parts of select statement
-- show content and ratings of reviews about Clover
select content, rating from subjects, reviews
where subjects.id = reviews.about and name = "Clover"
deconstructing a query
subjects reviews
id by name category id by content rating about
1 3 Lucid 2 1 3 yummy! 5 2
2 2 Clover 1 2 2 neat 4 1
3 3 Cosi 1

-- product operator (implicit in list of tables)


select * from subjects, reviews

examples from RazorSQL: available at http://www.razorsql.com/


deconstructing a query
subjects reviews
id by name category id by content rating about
1 3 Lucid 2 1 3 yummy! 5 2
2 2 Clover 1 2 2 neat 4 1
3 3 Cosi 1

-- selection operator (where)


select * from subjects, reviews
where subjects.id = reviews.about and name = "Clover"
deconstructing a query
subjects reviews
id by name category id by content rating about
1 3 Lucid 2 1 3 yummy! 5 2
2 2 Clover 1 2 2 neat 4 1
3 3 Cosi 1

-- projection operator (implicit in list of columns)


select content, rating from subjects, reviews
where subjects.id = reviews.about and name = "Clover"
your turn
what does this query say?
select distinct name from subjects, reviews
where rating = 5

-- lists all subject names: oops!

categs
subjects users

reviews
special operators
› order by: sort the results by some column
› sum, avg, count, max, min
› group by: group rows before applying functions
-- show subjects and their average ratings
select name, avg(rating) from subjects, reviews
where reviews.about = subjects.id group by subjects.id

-- show reviews ordered by rating


select name, content, rating from subjects, reviews
where reviews.about = subjects.id order by rating
PHP
Conclusion

Charles Liu
What we’ve talked about…

!  Purpose of server-side programming


!  Basic PHP syntax, arrays, functions

!  Specifics to websites: cookies, sessions, HTTP

requests and forms, MySQL


!  Other server-side solutions:

!  ASP.NET
!  Python

!  PHP’s extensive documentation:


http://www.php.net/manual/en
PHP workshop and tomorrow
!  Mostly to get you set up with a PHP server, write
some simple code

!  Tomorrow: more server-side frameworks


!  Node.js
!  Meteor.js

!  35-225, 11AM

You might also like