SlideShare ist ein Scribd-Unternehmen logo
1 von 19
Server-side programming & PHP
 server-side includes
 Netscape LiveWire
 Active Server Pages (ASP)
 Java Servlets
 PHP
− variables, control statements, file access
− form handling
− file uploading, email redirection
Internet & Web Programming
PHP
2
 PHP is similar to JavaScript, only server-side
PHP code is embedded in HTML using tags
when a page request arrives, the server recognizes PHP content via the file
extension (.php , .php3, or .phtml)
the server executes the PHP code, substitutes output into the HTML
the resulting page is then downloaded to the client
user never sees the PHP code, only the output in the page
developed in 1995 by Rasmus Lerdorf (member of the Apache Group)
 originally designed as a tool for tracking visitors at Lerdorf's Web site
 within 2 years, widely used in conjunction with the Apache server
 developed into full-featured, scripting language for server-side programming
 free, open-source
 server plug-ins exist for various servers
PHP execution
3
PHP code can be embedded within a <?php...?> tag
output is displayed using print
<!-- hello.php -->
<html>
<head>
<title>Server-side Hello</title>
</head>
<body>
<table border=1 align="center">
<tr><td>
<?php print("Hello and welcome to <i>my</i> page!"); ?>
</table>
</body>
</html>
<!-- hello.php -->
<html>
<head>
<title>Server-side Hello</title>
</head>
<body>
<table border=1 align="center">
<tr><td>
Hello and welcome to <i>my</i> page!
</table>
</body>
</html>
the server executes the
print statement, substitutes
output, downloads
resulting page
PHP variables
4
similar to JavaScript, PHP variables are not declared, dynamically typed
scalar data types: Boolean, integer, double, string
compound data types: array, object
special types: resource, NULL
all variable names begin with $
<html>
<head>
<title>Server-side Fortune</title>
<?php
$list = array("Live long and prosper",
"Save for tomorrow",
"You will meet someone");
$fortune = $list[rand(0, count($list)-1)];
?>
</head>
<body>
<table border=1 align="center">
<tr><td>
<?php print($fortune); ?>
</table>
</body>
</html>
variables are flexible
 any unassigned variable has
value NULL
 can test if NULL using IsSet
e.g., IsSet($name)
 can set mode so that
unbound access is reported,
or automatically coerced to
default values
PHP: handling form data
5
 <html> <!-- helloNice.php -->
 <head> <title>Server-side Greeting</title> </head>
 <body>
 <?php
 $yourName = $_POST['yourName'];
 print("Hello and welcome to my page <i>$yourName</i>.<br />n");
 print("If you like it, " .
 "<a href='mailto:davereed@creighton.edu'>email me</a>!n");
 ?>
 </body>
 </html>
can write server-side programs in PHP as an alternative to CGI
 no need for CGIinput class, can use either GET or POST
 form data is automatically accessible via variable with form element name
 similar to Perl, '.' is used for string concatenation
<html> <!-- helloNicePHP.html -->
<head> <title>PHP Form Handling</title> </head>
<body>
<form action="http://empirical.cs.creighton.edu/~davereed/helloNice.php"
method="post">
Enter your name: <input type="text" name="yourName"/>
<br /><br />
<input type="submit" value="click for greeting" />
</form>
</body>
</html>
PHP: email database example
6
<html>
<head> <title>PHP Email DB</title>
<?php
$emailDB = array("Jim Carlson", "carlsn@creighton.edu",
"Davendar Malik", "malik@creighton.edu",
"Prem Nair", "psnair@creighton.edu",
"Dave Reed", "davereed@creighton.edu",
"Mark Wierman", "wierman@creighton.edu");
?>
</head>
<body>
<?php
$person = $_POST['person'];
print("Search results for: " . $person . "<br /><br />n");
$found = false;
for ($i = 0; $i < count($emailDB); $i+=2) {
if ($person == "" ||
strpos("?".strtolower($emailDB[$i]), strtolower($person))) {
$entry1 = $emailDB[$i];
$entry2 = $emailDB[$i+1];
print("$entry1: <a href='mailto:$entry2'>$entry2</a><br />n");
$found = true;
}
}
if (!$found) {
print("No matching names were found. Please try again.<br />n");
}
?>
</body>
</html>
since PHP source is not
seen by user, can
embed protected data
safely
string functions
include:
• strlen
• strcmp
• strpos
• substr
• strtolower
• strtoupper
• trim
PHP: file example
7
<html>
<head>
<title>PHP Email DB</title>
<?php
$emailDB = file("email.txt");
?>
</head>
<body>
<?php
$person = $_POST['person'];
print("Search results for: " . $person . "<br /><br />n");
$found = false;
for ($i = 0; $i < count($emailDB); $i+=2) {
if ($person == "" ||
strpos("?".strtolower($emailDB[$i]), strtolower($person))) {
$entry1 = $emailDB[$i];
$entry2 = $emailDB[$i+1];
print("$entry1: <a href='mailto:$entry2'>$entry2</a><br />n");
$found = true;
}
}
if (!$found) {
print("No matching names were found. Please try again.<br />n");
}
?>
</body>
</html>
various routines exist
for reading/writing files
simplest is file, which
reads a file into an array
of strings (one per line)
Word ladder in PHP
8
 <html>
 <head>
 <title>Word Ladder Challenge</title>
 <?php
 $dictionary = file("words5.txt");
 $start = $dictionary[rand(0, count($dictionary)-1)];
 $end = $dictionary[rand(0, count($dictionary)-1)];
 ?>
 </head>
 <body>
 <div style="text-align:center">
 <h2>Dave's Word Ladder Challenge</h2>
 <p>Create a word ladder between <b> <?php print($start); ?> </b>
 and <b> <?php print($end); ?> </b>
 <form name="ladderForm"
 action="http://empirical.cs.creighton.edu/~davereed/ladderCheck.php"
 method="post">
 <textarea name="ladder" rows=10 cols=8 wrap="virtual"></textarea>
 <br /><br />
 <input type="hidden" name="start" value="<?php print($start); ?>">
 <input type="hidden" name="end" value="<?php print($end); ?>">
 <input type="submit" value="Submit Ladder">
 </form>
 </div>
 </body>
 </html>
ladder.php contains start
of game:
• PHP displays start &
end words
• static HTML gives form
with text area & submit
button
Word ladder in PHP
9
 <html>
 <head>
 <title>Word Ladder Challenge</title>
 <?php
 function binsearch($needle, $haystack)
 {
 $high = count($haystack)-1;
 $low = 0;
 while ($low <= $high){
 $middle = floor(($high + $low) / 2);
 if (trim($haystack[$middle]) == trim($needle)){
 return true;
 }
 else if (trim($haystack[$middle]) < trim($needle)){
 $low = $middle+1;
 }
 else{
 $high = $middle-1;
 }
 }
 return false;
 }
 function LetterDiff($word1, $word2)
 {
 $diffCount = 0;
 for ($z = 0; $z < strlen(word1); $z++) {
 if ($word1{$z} != $word2{$z}) {
 $diffCount++;
 }
 }
 return $diffCount;
 }
 ?>
 </head>
ladderCheck.php page
• defines functions for
checking a ladder
• static HTML gives form
with text area & submit
button
10
 <body>
 <div style="text-align:center">
 <h2>Dave's Word Ladder Challenge</h2>
 <?php
 $dictionary = file("words5.txt");
 $start = trim($_POST['start']);
 $end = trim($_POST['end']);
 $ladder = trim($_POST['ladder']);
 $ladderArr = preg_split("/[ns]+/", $ladder);
 if ($start != $ladderArr[0]) {
 print("INVALID LADDER: starting word should be $start<br />");
 }
 else if ($end != $ladderArr[count($ladderArr)-1]) {
 print("INVALID LADDER: ending word should be $end<br />");
 }
 else {
 $OK = true;
 for ($i = 1; $i < count($ladderArr) and $OK; $i++) {
 if (!binsearch($ladderArr[$i], $dictionary)) {
 print("INVALID LADDER: ".$ladderArr[$i]." is not a legal word.<br />");
 $OK = false;
 }
 else if (LetterDiff($ladderArr[$i], $ladderArr[$i-1]) != 1) {
 print("INVALID LADDER: ".$ladderArr[$i]." is not connected to" .
 $ladderArr[$i-1].".<br />");
 $OK = false;
 }
 }
 if ($OK) {
 print("$ladder is a valid ladder. Congratulations!<br />");
 }
 }
 ?>
 <form name="ladderForm"
 action="http://empirical.cs.creighton.edu/~davereed/ladder.php" method="post">
 <input type="submit" value="Play Again?">
 </form>
 </div></body></html>
rest of ladderCheck.php
• gets data from form
elements
• verifies the correctness
of the ladder
Standalone PHP
11
 <?php
 $emailDB = file("email.txt");
 $person = $_POST['person'];
 print("Search results for: " . $person . "<br /><br />n");
 $found = false;
 for ($i = 0; $i < count($emailDB); $i+=2) {
 if ($person == "" ||
 strpos("?".strtolower($emailDB[$i]), strtolower($person))) {
 $entry1 = $emailDB[$i];
 $entry2 = $emailDB[$i+1];
 print("$entry1: <a href='mailto:$entry2'>" .
 "$entry2</a><br />n");
 $found = true;
 }
 }
 if (!$found) {
 print("No matching names were found. Please try again.<br />n");
 }
 ?>
previous examples have shown how PHP code can be nested in HTML
 browsers don't really require HTML, HEAD, BODY tags
 if no static content in the page, can ignore HTML elements
 PHP output text will be treated as the body of a default Web page
Another example: file uploading
12
the HTML file input element allows the user to browse for a file
<input type="file" name="ELEMENT_NAME">
 once the user selects a file, can use a submit button to call a CGI or PHP
program to process that file
<html>
<head>
<title>Simple File Uploader</title>
</head>
<body>
<form name="uploader" action="http://empirical.cs.creighton.edu/~davereed/upload.php"
enctype="multipart/form-data" method="post">
Select file for uploading: <input type="file" name="userfile">
<br /><br />
<input type="submit" value="Upload File">
</form>
</body>
</html>
PHP file manipulations
13
 <?php
 $BASEDIR = "/var/www/davereed/files/";
 if (!file_exists($BASEDIR.$_FILES['userfile']['name'])) {
 move_uploaded_file($_FILES['userfile']['tmp_name'],
 $BASEDIR.$_FILES['userfile']['name']);
 print("File uploaded successfully");
 }
 else {
 print("File already exists - no upload performed.");
 }
 ?>
PHP provides extensive support for file/directory manipulation
$_FILES[$FORM_ELE_NAME]['name'] original name of the file uploaded via
the specified form input element
$_FILES[$FORM_ELE_NAME]['tmp_name'] temporary name of the file where it
is uploaded onto the server
move_uploaded_file($_FILES[$FORM_ELE_NAME]['tmp_name'], $FILE_PATH_NAME)
copies uploaded file to specified loc.
Robust file uploading
<html>
<head>
<title>Simple File Uploader</title>
</head>
<body>
<form name="uploader" action="http://empirical.cs.creighton.edu/~davereed/upload.php"
enctype="multipart/form-data" method="post">
<table>
<tr><td>Enter your user name:
<td><input type="text" name="userID" size=10 value="">
<tr><td>Select file for uploading:
<td><input type="file" name="userfile">
</table>
<input type="submit" value="Upload File">
</form>
</body>
</html>
14
could utilize other PHP features to make file uploading more robust
 allow multiple students to submit same assignment
 each student specifies a user name, file is uploaded into a subdirectory
Robust file uploading
15
 <?php
 $userID = $_POST['userID'];
 $BASEDIR = "/var/www/davereed/files/";
 $_FILES['userfile']['name'] = explode(' ', $_FILES['userfile']['name']);
 $_FILES['userfile']['name'] = implode('_', $_FILES['userfile']['name']);
 if (IsSet($userID)) {
 $BASEDIR = $BASEDIR.$userID."/";
 if (!file_exists($BASEDIR)) {
 mkdir($BASEDIR, 755);
 }
 }
 if (!file_exists($BASEDIR.$_FILES['userfile']['name'])) {
 move_uploaded_file($_FILES['userfile']['tmp_name'],
 $BASEDIR.$_FILES['userfile']['name']);
 print("File uploaded successfully");
 }
 else {
 print("File already exists - no upload performed.");
 }
 ?>
get the user ID from text box
replace ' ' with '_'
in file name
if user ID is entered,
extend path & create
directory if deosn't
already exist
Homework submission program
16
 Joel van Brandwijk has extended this program to create a generic homework
submission utility
 student interface is password driven
 connects with Active Directory to verify password for given user name
 student can select among current classes and assignments
 course/assignment info is stored in an SQL database, accessed via PHP
 student can specify multiple files, even structure into subdirectories for uploading
 instructor interface is also password driven
 checks database to make sure a legit instructor, then checks password
 instructor can add/remove class, add/remove students, add/remove assignments
 info is stored in SQL database, accessed via PHP
 instructor can download submissions to local computer for grading
empirical.cs.creighton.edu/submissions
Example: email redirection
17
most Web sites give visitor option of sending feedback
 can be accomplished using mailto: link
<a href=mailto:davereed@creighton.edu>Feedback?</a>
potential problem: not all client computers are email-enabled
 can instead use a PHP program as a front-end for email
 user enters address, subject, message
 PHP program receives & bundles these pieces into an email message, sends on
 if desired, can be used for anonymous email redirection (no return address supplied)
Example: email redirection
<?php function show_form($email="",$message="",$subject="") { ?>
<h2>Send Me an E-mail</h2>
<form action="http://empirical.cs.creighton.edu/~davereed/email.php"
 method="post">
Your E-mail address:<br>
<input type=text name=email size=30 value="<?php print($email); ?>"><br>
The Subject:<br>
<input type=text name=subject size=30 value="<?php print($subject); ?>"><br>
Your Message:<br>
<textarea rows=10 cols=50 name=message><?php print($message); ?></textarea><br>
<input type=submit value="Send E-mail">
</form>
<?php }
.
.
.
18
this part of the page
defines a function for
generating the input
page
Example: email redirection
(cont.)
19
 $email = $_POST['email'];
 $subject = $_POST['subject'];
 $message = $_POST['message'];
 if (!isset($email) or !isset($message)) {
 show_form();
 }
 else {
 if (empty($message)) {
 print("Please write something and resend.");
 show_form($email,$message,$subject);
 }
 else {
 if (empty($email)) {
 $email="anonymous";
 }
 if (empty($subject)) {
 $subject="stuff";
 }
 $sent = mail( "davereed@creighton.edu", $subject, $message, "From: $email" );
 if ($sent) {
 print("<H1>Your Message Has Been Sent.</H1>");
 }
 else {
 print("<p>The server was unable to send your mail.");
 }
 }
 }
 ?>
if no inputs to page (not called from
form), show input page
if message field is empty, warn user
and show the input page again
if email or subject fields are empty,
give default values
send the email message and
report status

Weitere ähnliche Inhalte

Was ist angesagt? (20)

PHP Presentation
PHP PresentationPHP Presentation
PHP Presentation
 
Functions in javascript
Functions in javascriptFunctions in javascript
Functions in javascript
 
jQuery for beginners
jQuery for beginnersjQuery for beginners
jQuery for beginners
 
An Introduction to the DOM
An Introduction to the DOMAn Introduction to the DOM
An Introduction to the DOM
 
Html / CSS Presentation
Html / CSS PresentationHtml / CSS Presentation
Html / CSS Presentation
 
Dom(document object model)
Dom(document object model)Dom(document object model)
Dom(document object model)
 
JavaScript - Chapter 12 - Document Object Model
  JavaScript - Chapter 12 - Document Object Model  JavaScript - Chapter 12 - Document Object Model
JavaScript - Chapter 12 - Document Object Model
 
Php
PhpPhp
Php
 
JQuery introduction
JQuery introductionJQuery introduction
JQuery introduction
 
Web Development Presentation
Web Development PresentationWeb Development Presentation
Web Development Presentation
 
Php and MySQL
Php and MySQLPhp and MySQL
Php and MySQL
 
JavaScript Programming
JavaScript ProgrammingJavaScript Programming
JavaScript Programming
 
Introduction of Html/css/js
Introduction of Html/css/jsIntroduction of Html/css/js
Introduction of Html/css/js
 
Javascript
JavascriptJavascript
Javascript
 
4.2 PHP Function
4.2 PHP Function4.2 PHP Function
4.2 PHP Function
 
php
phpphp
php
 
PHP - Introduction to PHP AJAX
PHP -  Introduction to PHP AJAXPHP -  Introduction to PHP AJAX
PHP - Introduction to PHP AJAX
 
Lab #2: Introduction to Javascript
Lab #2: Introduction to JavascriptLab #2: Introduction to Javascript
Lab #2: Introduction to Javascript
 
Introduction to PHP
Introduction to PHPIntroduction to PHP
Introduction to PHP
 
Java script
Java scriptJava script
Java script
 

Ähnlich wie PHP POWERPOINT SLIDES

Quick beginner to Lower-Advanced guide/tutorial in PHP
Quick beginner to Lower-Advanced guide/tutorial in PHPQuick beginner to Lower-Advanced guide/tutorial in PHP
Quick beginner to Lower-Advanced guide/tutorial in PHPSanju Sony Kurian
 
2014 database - course 2 - php
2014 database - course 2 - php2014 database - course 2 - php
2014 database - course 2 - phpHung-yu Lin
 
SULTHAN's - PHP MySQL programs
SULTHAN's - PHP MySQL programsSULTHAN's - PHP MySQL programs
SULTHAN's - PHP MySQL programsSULTHAN BASHA
 
The History of PHPersistence
The History of PHPersistenceThe History of PHPersistence
The History of PHPersistenceHugo Hamon
 
Practical PHP by example Jan Leth-Kjaer
Practical PHP by example   Jan Leth-KjaerPractical PHP by example   Jan Leth-Kjaer
Practical PHP by example Jan Leth-KjaerCOMMON Europe
 
Topological indices (t is) of the graphs to seek qsar models of proteins com...
Topological indices (t is) of the graphs  to seek qsar models of proteins com...Topological indices (t is) of the graphs  to seek qsar models of proteins com...
Topological indices (t is) of the graphs to seek qsar models of proteins com...Jitendra Kumar Gupta
 
Grok Drupal (7) Theming
Grok Drupal (7) ThemingGrok Drupal (7) Theming
Grok Drupal (7) ThemingPINGV
 
Intro to php
Intro to phpIntro to php
Intro to phpSp Singh
 
R57shell
R57shellR57shell
R57shellady36
 

Ähnlich wie PHP POWERPOINT SLIDES (20)

Ip lab
Ip labIp lab
Ip lab
 
Quick beginner to Lower-Advanced guide/tutorial in PHP
Quick beginner to Lower-Advanced guide/tutorial in PHPQuick beginner to Lower-Advanced guide/tutorial in PHP
Quick beginner to Lower-Advanced guide/tutorial in PHP
 
2014 database - course 2 - php
2014 database - course 2 - php2014 database - course 2 - php
2014 database - course 2 - php
 
SULTHAN's - PHP MySQL programs
SULTHAN's - PHP MySQL programsSULTHAN's - PHP MySQL programs
SULTHAN's - PHP MySQL programs
 
Framework
FrameworkFramework
Framework
 
Php (1)
Php (1)Php (1)
Php (1)
 
The History of PHPersistence
The History of PHPersistenceThe History of PHPersistence
The History of PHPersistence
 
Web 8 | Introduction to PHP
Web 8 | Introduction to PHPWeb 8 | Introduction to PHP
Web 8 | Introduction to PHP
 
Practical PHP by example Jan Leth-Kjaer
Practical PHP by example   Jan Leth-KjaerPractical PHP by example   Jan Leth-Kjaer
Practical PHP by example Jan Leth-Kjaer
 
Topological indices (t is) of the graphs to seek qsar models of proteins com...
Topological indices (t is) of the graphs  to seek qsar models of proteins com...Topological indices (t is) of the graphs  to seek qsar models of proteins com...
Topological indices (t is) of the graphs to seek qsar models of proteins com...
 
My shell
My shellMy shell
My shell
 
Grok Drupal (7) Theming
Grok Drupal (7) ThemingGrok Drupal (7) Theming
Grok Drupal (7) Theming
 
PHP Tutorial (funtion)
PHP Tutorial (funtion)PHP Tutorial (funtion)
PHP Tutorial (funtion)
 
wget.pl
wget.plwget.pl
wget.pl
 
Intro to php
Intro to phpIntro to php
Intro to php
 
R57shell
R57shellR57shell
R57shell
 
Web Scraping with PHP
Web Scraping with PHPWeb Scraping with PHP
Web Scraping with PHP
 
Blog Hacks 2011
Blog Hacks 2011Blog Hacks 2011
Blog Hacks 2011
 
Inc
IncInc
Inc
 
Php
PhpPhp
Php
 

Mehr von Ismail Mukiibi

Relational database (Unit 2)
Relational database (Unit 2)Relational database (Unit 2)
Relational database (Unit 2)Ismail Mukiibi
 
Relational data base management system (Unit 1)
Relational data base management system (Unit 1)Relational data base management system (Unit 1)
Relational data base management system (Unit 1)Ismail Mukiibi
 
IP/MAC Address Translation
IP/MAC Address TranslationIP/MAC Address Translation
IP/MAC Address TranslationIsmail Mukiibi
 
Traffic Characterization
Traffic CharacterizationTraffic Characterization
Traffic CharacterizationIsmail Mukiibi
 
Microprocessor application (Introduction)
Microprocessor application (Introduction)Microprocessor application (Introduction)
Microprocessor application (Introduction)Ismail Mukiibi
 
Advanced computer architecture lesson 1 and 2
Advanced computer architecture lesson 1 and 2Advanced computer architecture lesson 1 and 2
Advanced computer architecture lesson 1 and 2Ismail Mukiibi
 
Advanced computer architect lesson 3 and 4
Advanced computer architect lesson 3 and 4Advanced computer architect lesson 3 and 4
Advanced computer architect lesson 3 and 4Ismail Mukiibi
 
Advanced computer architecture lesson 5 and 6
Advanced computer architecture lesson 5 and 6Advanced computer architecture lesson 5 and 6
Advanced computer architecture lesson 5 and 6Ismail Mukiibi
 
Pc hardware course work
Pc hardware course workPc hardware course work
Pc hardware course workIsmail Mukiibi
 
Mac addresses(media access control)
Mac addresses(media access control)Mac addresses(media access control)
Mac addresses(media access control)Ismail Mukiibi
 
Why building collapse in kampala
Why building collapse in kampalaWhy building collapse in kampala
Why building collapse in kampalaIsmail Mukiibi
 

Mehr von Ismail Mukiibi (15)

Relational database (Unit 2)
Relational database (Unit 2)Relational database (Unit 2)
Relational database (Unit 2)
 
Relational data base management system (Unit 1)
Relational data base management system (Unit 1)Relational data base management system (Unit 1)
Relational data base management system (Unit 1)
 
Quality of service
Quality of serviceQuality of service
Quality of service
 
IP/MAC Address Translation
IP/MAC Address TranslationIP/MAC Address Translation
IP/MAC Address Translation
 
Traffic Characterization
Traffic CharacterizationTraffic Characterization
Traffic Characterization
 
Html notes
Html notesHtml notes
Html notes
 
Microprocessor application (Introduction)
Microprocessor application (Introduction)Microprocessor application (Introduction)
Microprocessor application (Introduction)
 
Advanced computer architecture lesson 1 and 2
Advanced computer architecture lesson 1 and 2Advanced computer architecture lesson 1 and 2
Advanced computer architecture lesson 1 and 2
 
Advanced computer architect lesson 3 and 4
Advanced computer architect lesson 3 and 4Advanced computer architect lesson 3 and 4
Advanced computer architect lesson 3 and 4
 
Advanced computer architecture lesson 5 and 6
Advanced computer architecture lesson 5 and 6Advanced computer architecture lesson 5 and 6
Advanced computer architecture lesson 5 and 6
 
Pc hardware course work
Pc hardware course workPc hardware course work
Pc hardware course work
 
Mac addresses(media access control)
Mac addresses(media access control)Mac addresses(media access control)
Mac addresses(media access control)
 
Kinds of networks
Kinds of networksKinds of networks
Kinds of networks
 
Why building collapse in kampala
Why building collapse in kampalaWhy building collapse in kampala
Why building collapse in kampala
 
Compare peer
Compare peerCompare peer
Compare peer
 

Kürzlich hochgeladen

%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein
%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein
%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfonteinmasabamasaba
 
introduction-to-automotive Andoid os-csimmonds-ndctechtown-2021.pdf
introduction-to-automotive Andoid os-csimmonds-ndctechtown-2021.pdfintroduction-to-automotive Andoid os-csimmonds-ndctechtown-2021.pdf
introduction-to-automotive Andoid os-csimmonds-ndctechtown-2021.pdfVishalKumarJha10
 
%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...
%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...
%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...masabamasaba
 
%in Harare+277-882-255-28 abortion pills for sale in Harare
%in Harare+277-882-255-28 abortion pills for sale in Harare%in Harare+277-882-255-28 abortion pills for sale in Harare
%in Harare+277-882-255-28 abortion pills for sale in Hararemasabamasaba
 
VTU technical seminar 8Th Sem on Scikit-learn
VTU technical seminar 8Th Sem on Scikit-learnVTU technical seminar 8Th Sem on Scikit-learn
VTU technical seminar 8Th Sem on Scikit-learnAmarnathKambale
 
%in Hazyview+277-882-255-28 abortion pills for sale in Hazyview
%in Hazyview+277-882-255-28 abortion pills for sale in Hazyview%in Hazyview+277-882-255-28 abortion pills for sale in Hazyview
%in Hazyview+277-882-255-28 abortion pills for sale in Hazyviewmasabamasaba
 
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️Delhi Call girls
 
%+27788225528 love spells in Vancouver Psychic Readings, Attraction spells,Br...
%+27788225528 love spells in Vancouver Psychic Readings, Attraction spells,Br...%+27788225528 love spells in Vancouver Psychic Readings, Attraction spells,Br...
%+27788225528 love spells in Vancouver Psychic Readings, Attraction spells,Br...masabamasaba
 
%in ivory park+277-882-255-28 abortion pills for sale in ivory park
%in ivory park+277-882-255-28 abortion pills for sale in ivory park %in ivory park+277-882-255-28 abortion pills for sale in ivory park
%in ivory park+277-882-255-28 abortion pills for sale in ivory park masabamasaba
 
%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...
%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...
%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...masabamasaba
 
Exploring the Best Video Editing App.pdf
Exploring the Best Video Editing App.pdfExploring the Best Video Editing App.pdf
Exploring the Best Video Editing App.pdfproinshot.com
 
%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain
%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain
%in Bahrain+277-882-255-28 abortion pills for sale in Bahrainmasabamasaba
 
%in Durban+277-882-255-28 abortion pills for sale in Durban
%in Durban+277-882-255-28 abortion pills for sale in Durban%in Durban+277-882-255-28 abortion pills for sale in Durban
%in Durban+277-882-255-28 abortion pills for sale in Durbanmasabamasaba
 
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...panagenda
 
8257 interfacing 2 in microprocessor for btech students
8257 interfacing 2 in microprocessor for btech students8257 interfacing 2 in microprocessor for btech students
8257 interfacing 2 in microprocessor for btech studentsHimanshiGarg82
 
%in kaalfontein+277-882-255-28 abortion pills for sale in kaalfontein
%in kaalfontein+277-882-255-28 abortion pills for sale in kaalfontein%in kaalfontein+277-882-255-28 abortion pills for sale in kaalfontein
%in kaalfontein+277-882-255-28 abortion pills for sale in kaalfonteinmasabamasaba
 
%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...
%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...
%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...masabamasaba
 
Chinsurah Escorts ☎️8617697112 Starting From 5K to 15K High Profile Escorts ...
Chinsurah Escorts ☎️8617697112  Starting From 5K to 15K High Profile Escorts ...Chinsurah Escorts ☎️8617697112  Starting From 5K to 15K High Profile Escorts ...
Chinsurah Escorts ☎️8617697112 Starting From 5K to 15K High Profile Escorts ...Nitya salvi
 
%in tembisa+277-882-255-28 abortion pills for sale in tembisa
%in tembisa+277-882-255-28 abortion pills for sale in tembisa%in tembisa+277-882-255-28 abortion pills for sale in tembisa
%in tembisa+277-882-255-28 abortion pills for sale in tembisamasabamasaba
 

Kürzlich hochgeladen (20)

%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein
%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein
%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein
 
Microsoft AI Transformation Partner Playbook.pdf
Microsoft AI Transformation Partner Playbook.pdfMicrosoft AI Transformation Partner Playbook.pdf
Microsoft AI Transformation Partner Playbook.pdf
 
introduction-to-automotive Andoid os-csimmonds-ndctechtown-2021.pdf
introduction-to-automotive Andoid os-csimmonds-ndctechtown-2021.pdfintroduction-to-automotive Andoid os-csimmonds-ndctechtown-2021.pdf
introduction-to-automotive Andoid os-csimmonds-ndctechtown-2021.pdf
 
%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...
%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...
%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...
 
%in Harare+277-882-255-28 abortion pills for sale in Harare
%in Harare+277-882-255-28 abortion pills for sale in Harare%in Harare+277-882-255-28 abortion pills for sale in Harare
%in Harare+277-882-255-28 abortion pills for sale in Harare
 
VTU technical seminar 8Th Sem on Scikit-learn
VTU technical seminar 8Th Sem on Scikit-learnVTU technical seminar 8Th Sem on Scikit-learn
VTU technical seminar 8Th Sem on Scikit-learn
 
%in Hazyview+277-882-255-28 abortion pills for sale in Hazyview
%in Hazyview+277-882-255-28 abortion pills for sale in Hazyview%in Hazyview+277-882-255-28 abortion pills for sale in Hazyview
%in Hazyview+277-882-255-28 abortion pills for sale in Hazyview
 
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
 
%+27788225528 love spells in Vancouver Psychic Readings, Attraction spells,Br...
%+27788225528 love spells in Vancouver Psychic Readings, Attraction spells,Br...%+27788225528 love spells in Vancouver Psychic Readings, Attraction spells,Br...
%+27788225528 love spells in Vancouver Psychic Readings, Attraction spells,Br...
 
%in ivory park+277-882-255-28 abortion pills for sale in ivory park
%in ivory park+277-882-255-28 abortion pills for sale in ivory park %in ivory park+277-882-255-28 abortion pills for sale in ivory park
%in ivory park+277-882-255-28 abortion pills for sale in ivory park
 
%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...
%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...
%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...
 
Exploring the Best Video Editing App.pdf
Exploring the Best Video Editing App.pdfExploring the Best Video Editing App.pdf
Exploring the Best Video Editing App.pdf
 
%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain
%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain
%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain
 
%in Durban+277-882-255-28 abortion pills for sale in Durban
%in Durban+277-882-255-28 abortion pills for sale in Durban%in Durban+277-882-255-28 abortion pills for sale in Durban
%in Durban+277-882-255-28 abortion pills for sale in Durban
 
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
 
8257 interfacing 2 in microprocessor for btech students
8257 interfacing 2 in microprocessor for btech students8257 interfacing 2 in microprocessor for btech students
8257 interfacing 2 in microprocessor for btech students
 
%in kaalfontein+277-882-255-28 abortion pills for sale in kaalfontein
%in kaalfontein+277-882-255-28 abortion pills for sale in kaalfontein%in kaalfontein+277-882-255-28 abortion pills for sale in kaalfontein
%in kaalfontein+277-882-255-28 abortion pills for sale in kaalfontein
 
%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...
%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...
%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...
 
Chinsurah Escorts ☎️8617697112 Starting From 5K to 15K High Profile Escorts ...
Chinsurah Escorts ☎️8617697112  Starting From 5K to 15K High Profile Escorts ...Chinsurah Escorts ☎️8617697112  Starting From 5K to 15K High Profile Escorts ...
Chinsurah Escorts ☎️8617697112 Starting From 5K to 15K High Profile Escorts ...
 
%in tembisa+277-882-255-28 abortion pills for sale in tembisa
%in tembisa+277-882-255-28 abortion pills for sale in tembisa%in tembisa+277-882-255-28 abortion pills for sale in tembisa
%in tembisa+277-882-255-28 abortion pills for sale in tembisa
 

PHP POWERPOINT SLIDES

  • 1. Server-side programming & PHP  server-side includes  Netscape LiveWire  Active Server Pages (ASP)  Java Servlets  PHP − variables, control statements, file access − form handling − file uploading, email redirection Internet & Web Programming
  • 2. PHP 2  PHP is similar to JavaScript, only server-side PHP code is embedded in HTML using tags when a page request arrives, the server recognizes PHP content via the file extension (.php , .php3, or .phtml) the server executes the PHP code, substitutes output into the HTML the resulting page is then downloaded to the client user never sees the PHP code, only the output in the page developed in 1995 by Rasmus Lerdorf (member of the Apache Group)  originally designed as a tool for tracking visitors at Lerdorf's Web site  within 2 years, widely used in conjunction with the Apache server  developed into full-featured, scripting language for server-side programming  free, open-source  server plug-ins exist for various servers
  • 3. PHP execution 3 PHP code can be embedded within a <?php...?> tag output is displayed using print <!-- hello.php --> <html> <head> <title>Server-side Hello</title> </head> <body> <table border=1 align="center"> <tr><td> <?php print("Hello and welcome to <i>my</i> page!"); ?> </table> </body> </html> <!-- hello.php --> <html> <head> <title>Server-side Hello</title> </head> <body> <table border=1 align="center"> <tr><td> Hello and welcome to <i>my</i> page! </table> </body> </html> the server executes the print statement, substitutes output, downloads resulting page
  • 4. PHP variables 4 similar to JavaScript, PHP variables are not declared, dynamically typed scalar data types: Boolean, integer, double, string compound data types: array, object special types: resource, NULL all variable names begin with $ <html> <head> <title>Server-side Fortune</title> <?php $list = array("Live long and prosper", "Save for tomorrow", "You will meet someone"); $fortune = $list[rand(0, count($list)-1)]; ?> </head> <body> <table border=1 align="center"> <tr><td> <?php print($fortune); ?> </table> </body> </html> variables are flexible  any unassigned variable has value NULL  can test if NULL using IsSet e.g., IsSet($name)  can set mode so that unbound access is reported, or automatically coerced to default values
  • 5. PHP: handling form data 5  <html> <!-- helloNice.php -->  <head> <title>Server-side Greeting</title> </head>  <body>  <?php  $yourName = $_POST['yourName'];  print("Hello and welcome to my page <i>$yourName</i>.<br />n");  print("If you like it, " .  "<a href='mailto:davereed@creighton.edu'>email me</a>!n");  ?>  </body>  </html> can write server-side programs in PHP as an alternative to CGI  no need for CGIinput class, can use either GET or POST  form data is automatically accessible via variable with form element name  similar to Perl, '.' is used for string concatenation <html> <!-- helloNicePHP.html --> <head> <title>PHP Form Handling</title> </head> <body> <form action="http://empirical.cs.creighton.edu/~davereed/helloNice.php" method="post"> Enter your name: <input type="text" name="yourName"/> <br /><br /> <input type="submit" value="click for greeting" /> </form> </body> </html>
  • 6. PHP: email database example 6 <html> <head> <title>PHP Email DB</title> <?php $emailDB = array("Jim Carlson", "carlsn@creighton.edu", "Davendar Malik", "malik@creighton.edu", "Prem Nair", "psnair@creighton.edu", "Dave Reed", "davereed@creighton.edu", "Mark Wierman", "wierman@creighton.edu"); ?> </head> <body> <?php $person = $_POST['person']; print("Search results for: " . $person . "<br /><br />n"); $found = false; for ($i = 0; $i < count($emailDB); $i+=2) { if ($person == "" || strpos("?".strtolower($emailDB[$i]), strtolower($person))) { $entry1 = $emailDB[$i]; $entry2 = $emailDB[$i+1]; print("$entry1: <a href='mailto:$entry2'>$entry2</a><br />n"); $found = true; } } if (!$found) { print("No matching names were found. Please try again.<br />n"); } ?> </body> </html> since PHP source is not seen by user, can embed protected data safely string functions include: • strlen • strcmp • strpos • substr • strtolower • strtoupper • trim
  • 7. PHP: file example 7 <html> <head> <title>PHP Email DB</title> <?php $emailDB = file("email.txt"); ?> </head> <body> <?php $person = $_POST['person']; print("Search results for: " . $person . "<br /><br />n"); $found = false; for ($i = 0; $i < count($emailDB); $i+=2) { if ($person == "" || strpos("?".strtolower($emailDB[$i]), strtolower($person))) { $entry1 = $emailDB[$i]; $entry2 = $emailDB[$i+1]; print("$entry1: <a href='mailto:$entry2'>$entry2</a><br />n"); $found = true; } } if (!$found) { print("No matching names were found. Please try again.<br />n"); } ?> </body> </html> various routines exist for reading/writing files simplest is file, which reads a file into an array of strings (one per line)
  • 8. Word ladder in PHP 8  <html>  <head>  <title>Word Ladder Challenge</title>  <?php  $dictionary = file("words5.txt");  $start = $dictionary[rand(0, count($dictionary)-1)];  $end = $dictionary[rand(0, count($dictionary)-1)];  ?>  </head>  <body>  <div style="text-align:center">  <h2>Dave's Word Ladder Challenge</h2>  <p>Create a word ladder between <b> <?php print($start); ?> </b>  and <b> <?php print($end); ?> </b>  <form name="ladderForm"  action="http://empirical.cs.creighton.edu/~davereed/ladderCheck.php"  method="post">  <textarea name="ladder" rows=10 cols=8 wrap="virtual"></textarea>  <br /><br />  <input type="hidden" name="start" value="<?php print($start); ?>">  <input type="hidden" name="end" value="<?php print($end); ?>">  <input type="submit" value="Submit Ladder">  </form>  </div>  </body>  </html> ladder.php contains start of game: • PHP displays start & end words • static HTML gives form with text area & submit button
  • 9. Word ladder in PHP 9  <html>  <head>  <title>Word Ladder Challenge</title>  <?php  function binsearch($needle, $haystack)  {  $high = count($haystack)-1;  $low = 0;  while ($low <= $high){  $middle = floor(($high + $low) / 2);  if (trim($haystack[$middle]) == trim($needle)){  return true;  }  else if (trim($haystack[$middle]) < trim($needle)){  $low = $middle+1;  }  else{  $high = $middle-1;  }  }  return false;  }  function LetterDiff($word1, $word2)  {  $diffCount = 0;  for ($z = 0; $z < strlen(word1); $z++) {  if ($word1{$z} != $word2{$z}) {  $diffCount++;  }  }  return $diffCount;  }  ?>  </head> ladderCheck.php page • defines functions for checking a ladder • static HTML gives form with text area & submit button
  • 10. 10  <body>  <div style="text-align:center">  <h2>Dave's Word Ladder Challenge</h2>  <?php  $dictionary = file("words5.txt");  $start = trim($_POST['start']);  $end = trim($_POST['end']);  $ladder = trim($_POST['ladder']);  $ladderArr = preg_split("/[ns]+/", $ladder);  if ($start != $ladderArr[0]) {  print("INVALID LADDER: starting word should be $start<br />");  }  else if ($end != $ladderArr[count($ladderArr)-1]) {  print("INVALID LADDER: ending word should be $end<br />");  }  else {  $OK = true;  for ($i = 1; $i < count($ladderArr) and $OK; $i++) {  if (!binsearch($ladderArr[$i], $dictionary)) {  print("INVALID LADDER: ".$ladderArr[$i]." is not a legal word.<br />");  $OK = false;  }  else if (LetterDiff($ladderArr[$i], $ladderArr[$i-1]) != 1) {  print("INVALID LADDER: ".$ladderArr[$i]." is not connected to" .  $ladderArr[$i-1].".<br />");  $OK = false;  }  }  if ($OK) {  print("$ladder is a valid ladder. Congratulations!<br />");  }  }  ?>  <form name="ladderForm"  action="http://empirical.cs.creighton.edu/~davereed/ladder.php" method="post">  <input type="submit" value="Play Again?">  </form>  </div></body></html> rest of ladderCheck.php • gets data from form elements • verifies the correctness of the ladder
  • 11. Standalone PHP 11  <?php  $emailDB = file("email.txt");  $person = $_POST['person'];  print("Search results for: " . $person . "<br /><br />n");  $found = false;  for ($i = 0; $i < count($emailDB); $i+=2) {  if ($person == "" ||  strpos("?".strtolower($emailDB[$i]), strtolower($person))) {  $entry1 = $emailDB[$i];  $entry2 = $emailDB[$i+1];  print("$entry1: <a href='mailto:$entry2'>" .  "$entry2</a><br />n");  $found = true;  }  }  if (!$found) {  print("No matching names were found. Please try again.<br />n");  }  ?> previous examples have shown how PHP code can be nested in HTML  browsers don't really require HTML, HEAD, BODY tags  if no static content in the page, can ignore HTML elements  PHP output text will be treated as the body of a default Web page
  • 12. Another example: file uploading 12 the HTML file input element allows the user to browse for a file <input type="file" name="ELEMENT_NAME">  once the user selects a file, can use a submit button to call a CGI or PHP program to process that file <html> <head> <title>Simple File Uploader</title> </head> <body> <form name="uploader" action="http://empirical.cs.creighton.edu/~davereed/upload.php" enctype="multipart/form-data" method="post"> Select file for uploading: <input type="file" name="userfile"> <br /><br /> <input type="submit" value="Upload File"> </form> </body> </html>
  • 13. PHP file manipulations 13  <?php  $BASEDIR = "/var/www/davereed/files/";  if (!file_exists($BASEDIR.$_FILES['userfile']['name'])) {  move_uploaded_file($_FILES['userfile']['tmp_name'],  $BASEDIR.$_FILES['userfile']['name']);  print("File uploaded successfully");  }  else {  print("File already exists - no upload performed.");  }  ?> PHP provides extensive support for file/directory manipulation $_FILES[$FORM_ELE_NAME]['name'] original name of the file uploaded via the specified form input element $_FILES[$FORM_ELE_NAME]['tmp_name'] temporary name of the file where it is uploaded onto the server move_uploaded_file($_FILES[$FORM_ELE_NAME]['tmp_name'], $FILE_PATH_NAME) copies uploaded file to specified loc.
  • 14. Robust file uploading <html> <head> <title>Simple File Uploader</title> </head> <body> <form name="uploader" action="http://empirical.cs.creighton.edu/~davereed/upload.php" enctype="multipart/form-data" method="post"> <table> <tr><td>Enter your user name: <td><input type="text" name="userID" size=10 value=""> <tr><td>Select file for uploading: <td><input type="file" name="userfile"> </table> <input type="submit" value="Upload File"> </form> </body> </html> 14 could utilize other PHP features to make file uploading more robust  allow multiple students to submit same assignment  each student specifies a user name, file is uploaded into a subdirectory
  • 15. Robust file uploading 15  <?php  $userID = $_POST['userID'];  $BASEDIR = "/var/www/davereed/files/";  $_FILES['userfile']['name'] = explode(' ', $_FILES['userfile']['name']);  $_FILES['userfile']['name'] = implode('_', $_FILES['userfile']['name']);  if (IsSet($userID)) {  $BASEDIR = $BASEDIR.$userID."/";  if (!file_exists($BASEDIR)) {  mkdir($BASEDIR, 755);  }  }  if (!file_exists($BASEDIR.$_FILES['userfile']['name'])) {  move_uploaded_file($_FILES['userfile']['tmp_name'],  $BASEDIR.$_FILES['userfile']['name']);  print("File uploaded successfully");  }  else {  print("File already exists - no upload performed.");  }  ?> get the user ID from text box replace ' ' with '_' in file name if user ID is entered, extend path & create directory if deosn't already exist
  • 16. Homework submission program 16  Joel van Brandwijk has extended this program to create a generic homework submission utility  student interface is password driven  connects with Active Directory to verify password for given user name  student can select among current classes and assignments  course/assignment info is stored in an SQL database, accessed via PHP  student can specify multiple files, even structure into subdirectories for uploading  instructor interface is also password driven  checks database to make sure a legit instructor, then checks password  instructor can add/remove class, add/remove students, add/remove assignments  info is stored in SQL database, accessed via PHP  instructor can download submissions to local computer for grading empirical.cs.creighton.edu/submissions
  • 17. Example: email redirection 17 most Web sites give visitor option of sending feedback  can be accomplished using mailto: link <a href=mailto:davereed@creighton.edu>Feedback?</a> potential problem: not all client computers are email-enabled  can instead use a PHP program as a front-end for email  user enters address, subject, message  PHP program receives & bundles these pieces into an email message, sends on  if desired, can be used for anonymous email redirection (no return address supplied)
  • 18. Example: email redirection <?php function show_form($email="",$message="",$subject="") { ?> <h2>Send Me an E-mail</h2> <form action="http://empirical.cs.creighton.edu/~davereed/email.php"  method="post"> Your E-mail address:<br> <input type=text name=email size=30 value="<?php print($email); ?>"><br> The Subject:<br> <input type=text name=subject size=30 value="<?php print($subject); ?>"><br> Your Message:<br> <textarea rows=10 cols=50 name=message><?php print($message); ?></textarea><br> <input type=submit value="Send E-mail"> </form> <?php } . . . 18 this part of the page defines a function for generating the input page
  • 19. Example: email redirection (cont.) 19  $email = $_POST['email'];  $subject = $_POST['subject'];  $message = $_POST['message'];  if (!isset($email) or !isset($message)) {  show_form();  }  else {  if (empty($message)) {  print("Please write something and resend.");  show_form($email,$message,$subject);  }  else {  if (empty($email)) {  $email="anonymous";  }  if (empty($subject)) {  $subject="stuff";  }  $sent = mail( "davereed@creighton.edu", $subject, $message, "From: $email" );  if ($sent) {  print("<H1>Your Message Has Been Sent.</H1>");  }  else {  print("<p>The server was unable to send your mail.");  }  }  }  ?> if no inputs to page (not called from form), show input page if message field is empty, warn user and show the input page again if email or subject fields are empty, give default values send the email message and report status