LIS651 lecture 3 taming PHP - PowerPoint PPT Presentation

About This Presentation
Title:

LIS651 lecture 3 taming PHP

Description:

But one of the strengths of PHP is that you can create your own ... It reads as $title, which means 'idiot' for your web user. Even if you replace $title with ... – PowerPoint PPT presentation

Number of Views:67
Avg rating:3.0/5.0
Slides: 29
Provided by: open6
Learn more at: https://openlib.org
Category:

less

Transcript and Presenter's Notes

Title: LIS651 lecture 3 taming PHP


1
LIS651 lecture 3taming PHP
  • Thomas Krichel
  • 2006-04-01

2
functions
  • The PHP function reference is available on its
    web site http//www.php.net/quickref.php. It
    shows the impressive array of functions within
    PHP.
  • But one of the strengths of PHP is that you can
    create your own functions as you please.
  • If you recreate one of the built-in functions,
    your own function will have no effect.

3
simplest function
  • function beer_print
  • print beer\n
  • beer_print() // prints beer

4
A more practical example
  • Stephanie Rubino was an English teacher and
    objects to sentences like
  • You have ordered 1 bottles of Grosswald Pils.
  • Let us define a function rubino_print(). It will
    take three arguments
  • a number to check for plural or singular
  • a word for the singular
  • a word for the plural

5
function their argument
  • use the keyword "function" and declare the
    arguments to the function, as in
  • function rubino_print (number,
    singular,plural)
  • if(number 1)
  • print "one singular"
  • else
  • print "number plural"

6
default arguments
  • Sometimes you want to allow a function to be
    called without giving all its arguments. You can
    do this by declaring a default value, using an
    equal sign in the function list
  • function thomas_need(thing'beer')
  • print Thomas needs thing.\n"
  • thomas_need() // prints Thomas needs beer.
  • thomas_need(vodka') // prints Thomas needs
    vodka.

7
rubino_print using common plurals
  • function rubino_print (num, sing,plur1)
  • if(num 1)
  • print "one sing"
  • elseif(plur 1)
  • print "num sing"."s"
  • else
  • print "num plur"

8
return value
  • Up until now we have just looked at the effect of
    a function.
  • return is a special command that returns a
    value.
  • It takes the return value as a parameter
  • return result
  • When return is used, the function is left.

9
rubino_print with return
  • function rubino_print (number,
    singular,plural)
  • if(number 1)
  • return "one singular"
  • return "number plural"
  • orderrubino_print(2,"beer","beers")
  • print "you ordered order\n"
  • // prints you ordered 2 beers.

10
utility function for database queries
  • function mysql_fetch_all(query)
  • r_at_mysql_query(query)
  • if(errmysql_error())
  • return err
  • if( mysql_num_rows(r) )
  • while(rowmysql_fetch_array(r))
  • resultrow
  • return result

11
usage example
  • my query"SELECT FROM my_table"
  • if(is_array(rowsmysql_fetch_all(query))
  • // do something
  • else if (! is_null(rows))
  • die("Query failed!")

12
visibility of variables
  • Variables used inside a function are not visible
    from the outside. Example
  • beer"Karlsberg"
  • function yankeefy (name'Sam Adams')
  • beername
  • yankeefy()
  • print beer // prints Karlsberg
  • The variable inside the function is something
    different than the variables outside.

13
accessing global variables.
  • There are two ways to change a global variable,
    i.e. one that is defined in the main script.
  • One is just to call it as GLOBAL'name' where
    name is the name of the global variable.
  • function yankeefy (name"Sam Adams")
  • GLOBALS'beer'"name"
  • The other is to change it outside a function
    definition.
  • Example in brewer_quiz.php

14
working with many source files
  • Many times it is useful to split a PHP script
    into several files.
  • PHP has two mechanisms.
  • require(file) requires the to be included. If the
    file is not there, PHP exits with an error.
  • include(file) includes the file.

15
require() and include()
  • Both assume that you leave PHP. Thus within your
    included file you can write simple HTML.
  • If you want to include PHP in your included file,
    you have to surround it by lt?php and ?gt, just
    like in a PHP script.
  • Here is an example to use include to build the
    basic web page.

16
top.html
  • lt!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0
    Strict//EN"
  • "http//www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd
    "gt
  • lthtmlgt
  • ltheadgtlttitlegttitlelt/titlegt
  • ltmeta http-equiv"content-type"
    content"text/html charsetUTF-8"/gt
  • ltlink rel"stylesheet" type"text/css"
    href"main.css"/gt
  • lt/headgt
  • ltbodygt

17
bottom.html
  • ltp id"validator"gt
  • lta href"http//validator.w3.org/check?urireferer
    "gtltimg
  • style"border 0pt"
  • src"http//wotan.liu.edu/valid-xhtml10.png"
  • alt"Valid XHTML 1.0!" height"31" width"88"
    /gtlt/agt
  • lt/pgt
  • lt/bodygt
  • lt/htmlgt

18
validated.php
  • lt?php
  • title"my basic page\n"
  • include("top.html")
  • print "ltdivgthello, worldlt/divgt"
  • include("bottom.html")
  • ?gt

19
trouble
  • title in the top.html is not understood as the
    title. It reads as title, which means "idiot"
    for your web user.
  • Even if you replace title with
  • lt?php title ?gt
  • title is empty. The definition from the
    outer file is not seen in the included file.
  • So you have to split into three files, and print
    the title in the main file. I leave that to you
    to figure out.

20
login.php create_account.php
  • Both require a database that has three fields
  • id which is an auto_increment int acting as a
    handle
  • username is the username of the account. it must
    be unique and this is enforced by mySQL
  • password is a varchar(41) because the sha1 of the
    password is stored. This is 40 chars long.

21
sessions
  • You will recall that HTTP is a stateless
    protocol. Each request/response is
    self-contained.
  • Statefulness is crucial in Web applications.
    Otherwise users have to authenticate every time
    they access a new page.
  • Traditionally, one way to create statefullness is
    to use cookies.
  • PHP uses cookies to create a concept of its own,
    sessions, that makes it all very easy.

22
cookies
  • A cookie is a piece of attribute/value data. A
    server can send cookies as value of a HTTP header
    Set-Cookie. Multiple headers may be sent.
  • When the client visits the web site again, it
    will send the cookie back to the server with a
    HTTP header Cookie

23
Set-Cookie
  • Set-Cookie namevalue expires date
    pathpath domain domain secure
  • where
  • name is the variable name set in the cookie
  • value is the variable's value
  • date is a date when the cookie expires
  • path restricts the cookie to be sent only when
    requests to a path starting with path are made
  • domain restricts the sending of the cookie to a
    certain domain
  • secure restricts transmission to https

24
Cookies
  • The browser compares the request it wants to make
    with the URL and the domain that sent the cookie.
  • If the path is not set the cookie will only be
    sent to a request with the originating URL.
  • If the cookie matches the request a request
    header of the form
  • Cookie name1value1 name2value2
  • is sent.

25
sessions
  • Sessions are a feature of PHP. PHP remembers a
    session through a special cookie PHPSESSID.
  • To activate the sessions, include
    session_start() at the beginning of your script,
    before any printing has been done.
  • One a session is active, you have a special
    super-global variable _SESSION. Session data is
    stored in special files on wotan.

26
_SESSION
  • This is an array where you can read and set
    variables that you want to keep during the
    session.
  • if(_SESSIONuser_name)
  • print "welcome _SESSIONuser_name"
  • else
  • // show users login form
  • print login_form()

27
ending sessions
  • At 9 and 39 past each hour, wotan deletes all
    session files that have not been changed for 24
    minutes or more.
  • If you want to remove a session yourself, you can
    call session_destroy() in your script.
  • An example is in visit.php.

28
http//openlib.org/home/krichel
  • Thank you for your attention!
  • Please switch off machines b4 leaving!
Write a Comment
User Comments (0)
About PowerShow.com