cmpe 587 adv.network programming

29
21/12/2001 Adv.Network Programming-P HP 1 CMPE 587 Adv.Network Programming Şeniz Demir, Nurcan Tezcan Şeniz Demir, Nurcan Tezcan Boğaziçi University Boğaziçi University 2001 2001 PHP Scripting Language

Upload: ingrid

Post on 15-Jan-2016

46 views

Category:

Documents


0 download

DESCRIPTION

PHP Scripting Language. CMPE 587 Adv.Network Programming. Şeniz Demir, Nurcan Tezcan Boğaziçi University 2001. Outline Definition Architecture Features Database Connection Security in PHP Session Tracking Functions Conclusion Resources. - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: CMPE 587 Adv.Network Programming

21/12/2001 Adv.Network Programming-PHP 1

CMPE 587 Adv.Network Programming

Şeniz Demir, Nurcan TezcanŞeniz Demir, Nurcan Tezcan

Boğaziçi UniversityBoğaziçi University

20012001

PHP Scripting Language

Page 2: CMPE 587 Adv.Network Programming

21/12/2001 Adv.Network Programming-PHP 2

OutlineOutline

• Definition

• Architecture

• Features

• Database Connection

• Security in PHP

• Session Tracking

• Functions

• Conclusion

• Resources

Page 3: CMPE 587 Adv.Network Programming

21/12/2001 Adv.Network Programming-PHP 3

A popular server-side scripting language with extensive DB support.

PHP provides the "glue" to link together: Web browser,   Web server,HTML,   forms,   SQL,   RDBMS

and provide a basis for Web-based database applications.

Page 4: CMPE 587 Adv.Network Programming

21/12/2001 Adv.Network Programming-PHP 4

Platforms:Platforms: • UNIX (all variants) • Win32 (NT/W95/W98/W2000) • QNX • MacOS (WebTen) • OSX ,OS/2 ,BeOS

Server Interfaces:Server Interfaces:• Apache module (UNIX,Win32) • CGI/FastCGI • thttpd ,fhttpd , phttpd • ISAPI (IIS, Zeus) • NSAPI (Netscape iPlanet) • Java servlet • AOLServer • Roxen/Caudium module

Page 5: CMPE 587 Adv.Network Programming

21/12/2001 Adv.Network Programming-PHP 5

Page 6: CMPE 587 Adv.Network Programming

21/12/2001 Adv.Network Programming-PHP 6

The PHP language has the following characteristics: •C-like syntax   (more C-like than Perl)

•"loose" attitude to types   (determined by context)

•very easy to manipulate strings •extensive libraries of functions   (including DB access for most RDBMS)

•some attempt at object-orientation   •comments introduced via # or //

PHP programs are typically executed within Web server.

FeaturesFeatures

Page 7: CMPE 587 Adv.Network Programming

21/12/2001 Adv.Network Programming-PHP 7

HTML EmbeddingHTML Embedding

<HTML><HEAD><TITLE>Search results for "<?php print $query; ?>"</TITLE></HEAD><BODY>

Traditional CGI Programming#!/usr/bin/perl

print "<HTML><HEAD>\n";print "<TITLE>Search results for \"$query\"</TITLE>\n";print "</HEAD>\n";print "<BODY>\n";

PHP

Page 8: CMPE 587 Adv.Network Programming

21/12/2001 Adv.Network Programming-PHP 8

Variables Variables

• No variable declarations required; variables created by assignment. • All variable names must be preceded by $   (eg:   $i,   $i++,   $++i) • Type of variable is set to that of last assigned value. • Can check/set variable type via gettype/settype functions. • Can convert variable value via casting   (e.g. (int), (real), (string), ...) • Default value of unassigned variables is 0  or  ""  or  false.

Page 9: CMPE 587 Adv.Network Programming

21/12/2001 Adv.Network Programming-PHP 9

Variables (cont)Variables (cont)

Examples: $foo = 3; # $foo is an int, value 3 $foo = "8"; # $foo is now a string, value "8" $foo = $foo + 2; # $foo is now an int, value 10 $foo = "$foo green bottles"; # $foo is now "10 green bottles" $foo = 3.0 * $foo; # $foo is now double, value 30.0 $foo = (int)$foo; # $foo is now an int, value 30

Page 10: CMPE 587 Adv.Network Programming

21/12/2001 Adv.Network Programming-PHP 10

String InterpolationString Interpolation

When variables are used inside string, their value is interpolated, after being converted to a suitable string representation (cf. Perl). Example: $a = 1; $b = 3.5; $c = "Hello"; $str = "a:$a, b:$b, c:$c"; // now $str == "a:1, b:3.5, c:Hello"

Page 11: CMPE 587 Adv.Network Programming

21/12/2001 Adv.Network Programming-PHP 11

Arrays Arrays

PHP provides both scalar and associative arrays: $word[0]="a"; $word[1]="the"; $word[2]="this"; ... $mark["ann"]=100; $mark["bob"]=50; $mark["col"]=9; ... $vec[]=1; $vec[]=3; $vec[]=5; $vec[]=7; ...

Arrays can be initialised in a single statement: $word = array("a", "the", "this", ...); $marks = array("ann"=>100, "bob"=>50, "col"=>9, ...); $vec = array(0 => 1, 1 => 3, 2 => 5, 3 => 9, ...);

Multiple-value <SELECT> inputs are passed to PHP as arrays.

Page 12: CMPE 587 Adv.Network Programming

21/12/2001 Adv.Network Programming-PHP 12

Variable Variables Variable Variables

In some contexts (e.g. HTML forms), we may have a collection of variables that can't be represented by an array, but we want to iterate over them ... PHP provides a mechanism to dynamically create variable names. e.g: for ($i = 0; $i < $MAX; $i++) { $varname = "myVar$i"; $value = ${$varname}; print "Value of $varname = $value\n"; } Accesses variables called   myVar0,   myVar1,   myVar2,   myVar3, ... This is not the same as an array  myVar[0], myVar[1], myVar[2],   myVar[3], ...

Page 13: CMPE 587 Adv.Network Programming

21/12/2001 Adv.Network Programming-PHP 13

Control StructuresControl Structures

Control structures have essentially the same syntax as C/Java.

{ Statement1; Statement2; ... } if (Expression1) Statement1 [elseif (Expression2) Statement2 ...] [else Statementn] switch (Expression1) { case Value1: Statement1; break; ... [case Value2: Statement2; break; ...] } while (Expression) Statement for (Init; Test; Next) Statement

Page 14: CMPE 587 Adv.Network Programming

21/12/2001 Adv.Network Programming-PHP 14

Functions Functions

Functions are defined as: function FuncName($arg1, $arg2,, ... ) { Statement; ... return Expression; } Example: // return array of first n integers function iota($n) { for ($i = 1; $i <= $n; $i++) $list[] = $i; return $list; }

Page 15: CMPE 587 Adv.Network Programming

21/12/2001 Adv.Network Programming-PHP 15

Handling FormsHandling Forms

<form action="action.php" method="POST">Your name: <input type=text name=name><br>You age: <input type=text name=age><br><input type=submit></form>

Submit Query

Hi <?echo $name?>.  You are <?echo $age?> years old.

Name:

Age:

action.php

Page 16: CMPE 587 Adv.Network Programming

21/12/2001 Adv.Network Programming-PHP 16

SQL•Adabas D •Empress •IBM DB2 •Informix •Ingres •Interbase •Frontbase •mSQL •Direct MS-SQL •MySQL •ODBC •Ovrimos •Oracle (OCI7,OCI8) •PostgreSQL •Raima Velocis •Solid •Sybase

Others•dBase •filePro (read-only) •dbm (ndbm, gdbm, Berkeley db)

Database SupportDatabase Support

Page 17: CMPE 587 Adv.Network Programming

21/12/2001 Adv.Network Programming-PHP 17

MySQL FunctionsMySQL Functions

•mysql_connect (string [server], string [username], string [password])

$link = mysql_connect("localhost", "username", "secret")

•bool mysql_close (resource [link_identifier])mysql_close($link)

•bool mysql_select_db (string database_name, resource [link_identifier])

mysql_select_db("mydb",$link)

• mysql_query (string query [, resource link_identifier])$sql = “SELECT * FROM employees WHERE id=$id” $result = mysql_query($sql)

•array mysql_fetch_array (resource result, int [result_type]) $myrow = mysql_fetch_array($result) $id = $myrow["id"]

Page 18: CMPE 587 Adv.Network Programming

21/12/2001 Adv.Network Programming-PHP 18

<html> <body><?php$db = mysql_connect("linus", "root");mysql_select_db("mydb",$db);$sql = "SELECT * FROM employees WHERE id=$id";$result = mysql_query($sql);$myrow = mysql_fetch_array($result); ?>

<form method="post" > <input type=hidden name="id" value="<?php echo $myrow["id"] ?>"> First name:<input type="Text" name="first" value="<?php echo $myrow["first"] ?>"><br> </form>

</ body> </html>

Page 19: CMPE 587 Adv.Network Programming

21/12/2001 Adv.Network Programming-PHP 19

EEncryptionncryption/D/Decryptionecryption• include mcrypt library • Four cipher modes

– ECB (electronic codebook)/ for random data

– CBC (cipher block chaining)/ files

– CFB (cipher feedback)/byte streams

– OFB (output feedback) /byte streams

• block algorithms such as DES, TripleDES, Blowfish (default), 3-WAY, SAFER-SK64, SAFER-SK128, TWOFISH

Page 20: CMPE 587 Adv.Network Programming

21/12/2001 Adv.Network Programming-PHP 20

<?php

$key = "this is a very secret key";

$input = "Let us meet at 9 o'clock at the secret place.";

$encrypted_data = mcrypt_ecb(MCRYPT_TripleDES, $key, $input, MCRYPT_ENCRYPT);

?>

Page 21: CMPE 587 Adv.Network Programming

21/12/2001 Adv.Network Programming-PHP 21

SSessionsessions

• preserve data

• stored in cookie or propogate through URL

– session.auto_start is set to 1/automatic

– session_start()/explicit

– session_register()/implicit

Page 22: CMPE 587 Adv.Network Programming

21/12/2001 Adv.Network Programming-PHP 22

ExampleExample

$pure_session_id = randomString(40)$exact_session_id = userid.

$pure_session_id

$long_session_id = randomString(100) $long_session_id[47] = $userid[0] $long_session_id[41] = $userid[1]

$long_session_id[ind1] = $pure_session_id[ind2]

Page 23: CMPE 587 Adv.Network Programming

21/12/2001 Adv.Network Programming-PHP 23

Persistent ConnectionPersistent Connection

• SQL links that do not close when the execution of your script ends

• Higher efficiency– link creation overhead

• kind of DB• load of the machine where sql server sits

• Connect once and process pages many times

Page 24: CMPE 587 Adv.Network Programming

21/12/2001 Adv.Network Programming-PHP 24

Connection HandlingConnection Handling

• Connection status: Normal, Aborted, Timeout

• if the client is disconnected abort the script or not? (default: abort)

• Terminate the script by the built-in script timer (default:30 seconds)

Page 25: CMPE 587 Adv.Network Programming

21/12/2001 Adv.Network Programming-PHP 25

Connection Handling FunctionsConnection Handling Functions

• int ignore_user_abort ([int setting])

• int connection_aborted (void )

• set_time_limit()

• int connection_timeout (void )

• int register_shutdown_function (string func)

• int connection_status (void )

Page 26: CMPE 587 Adv.Network Programming

21/12/2001 Adv.Network Programming-PHP 26

Socket ProgrammingSocket Programming

• int socket_accept (resource socket)

• int socket_bind (resource socket, string address

[, int port])• bool socket_close (resource socket)• int socket_connect (resource socket,

string address [, int port])

• .......

Page 27: CMPE 587 Adv.Network Programming

21/12/2001 Adv.Network Programming-PHP 27

Function set Function set

• FTP functions• IMAP, POP3 functions• Mail functions• Oracle functions• Semaphore and shared memory

functions• Network functions• ..........

Page 28: CMPE 587 Adv.Network Programming

21/12/2001 Adv.Network Programming-PHP 28

Conclusion Conclusion

• A server side scripting language• Easier to develop codes• C-like syntax• Lots of built-in modules and

functions

Page 29: CMPE 587 Adv.Network Programming

21/12/2001 Adv.Network Programming-PHP 29

ResourcesResources

• www.php.net• www.phpbuilder.com• www.google.de• www.zend.com