SlideShare a Scribd company logo
Intro to PHP
A brief overview – Patrick Laverty
What is PHP?
 PHP (recursive acronym for "PHP:
Hypertext Preprocessor") is a widely-used
Open Source general-purpose scripting
language that is especially suited for Web
development and can be embedded into
HTML.
<? echo “HI!”; ?>
What is PHP?
Compared to others like:
 Java – Sun, compiled and interpreted (jsp)
 Perl – Open Source, scripting
 .NET – MS, opposite of Java
 ColdFusion – Now Adobe, the original
 Javascript – Netscape, client-side
 PHP – Open Source, server-side
How it works
 PHP is installed on web server
 Our web server is Apache (just an FYI)
 Server parses files based on extensions
 Returns plain HTML, no code
How To – The Basics
 Need to name files is a .php extension
Example: index.php, mypage.php
 Open and close tags: <? ?>
Was: <?php ?>
 Save file to server, view in a browser
Hello World
helloworld.php
<html>
<body>
<? echo “Hello World!”; ?>
</body>
</html>
Variables
Variables are like a cup
The same cup can hold
lots of different things
Same with variables
Variables
In PHP, you create a variable with a dollar
sign and some text.
Usually the text will be something descriptive
of what it is going to hold.
$name = “Patrick Laverty”;
$dept = “CIS”;
$campus_addr = “Box 1885”;
Variables
There are many different kinds of variables in
PHP
 Scalar
 Array
 Object
Scalar Variables
Hold single values
 String/text
 Numbers
$name = “Josiah”;
$dob = “1/1/23”;
$age = 84;
$waist_size = 36;
Array Variables
Hold multiple values
All in one step example:
$kids = Array(“Tom”,”Dick”,”Harry”);
Multiple steps example:
$kids = Array();
$kids[0] = “Tom”;
$kids[1] = “Dick”;
$kids[2] = “Harry”;
Individual array values are just a scalar
Array Variables
Associative Arrays – may be easier to find
stuff
$teams = Array(‘bos’=>’Red Sox’,
‘nyy’=>’Yankees’, ’bal’=>’Orioles’);
The two-step way works the same:
$teams = Array();
$teams[‘bos’] = ‘Red Sox’;
Object Variables
We’ll talk about these later.
We’re in no rush
Functions
Getting PHP to do some action for you
echo() or print()
phpinfo() (phpinfo.php)
Functions
Be lazy. It’s a good thing.
If you’re going to do the same action more
than once, write a function.
sayhello.php
function sayHello($toWhom)
{
echo “Hello $toWhom”;
}
Functions
Lots have already been written for you:
http://php.net/manual/en
If you know the function:
http://php.net/echo
A Basic Form
How we do things now: eform.cgi
<form method=“POST” action=
http://www.brown.edu/cgi-local/eform.cgi>
<input type=“text” name=“name”>
<input type=“text” name=“age”>
<input type=“submit”>
</form>
A Basic Form
How we do things with PHP:
basicform.html
<form method=“POST” action=“output.php”>
<input type=“text” name=“name”>
<input type=“text” name=“age”>
<input type=“submit”>
</form>
A Basic Form
Capturing the data in output.php
Variables:
 $_POST[‘name’]
 $_POST[‘age’]
Use phpinfo() to see variables
A Basic Form
Weave HTML and PHP
output.php
<html><body>
<?
$name = $_POST[‘name’];
$age = $_POST[‘age’];
echo “My name is $name and I am $age years old”;
?>
</body></html>
Data Validation
We’ll talk more about validating user input
later.
A Basic Form
Outputting to the screen is nice, but boring
We could email the results
Let’s store data in a database
Layers of a Database
 Server
 Database
 Tables
 Fields/Columns
 Records
 Data
How to Get a Database
 Use Microsoft Access
 Use Filemaker
 Request a MySQL Database
(http://brown.edu/db)
Request a MySQL Database
You will receive:
 Server name (it’s not localhost)
 Database name
 Username
 Password
 Link to phpMyAdmin
phpMyAdmin
 phpMyAdmin is a graphical view of your
database
 Very easy
Let’s take a look
(http://brown.edu/phpMyAdmin)
Connecting to DB from PHP
Create one connection script:
dbconn.php
<?
$conn = mysql_connect($server,$user,$pw);
mysql_select_db($db,$conn);
?>
Connecting to DB from PHP
Remember, “Be Lazy!”
At the top of each file that needs the DB:
<? require(“dbconn.php”); ?>
Database Table
Table named ‘info’ has two fields, name and age
Use a SQL INSERT statement:
$sql =
“INSERT INTO
info (name,age)
values (‘$name’, ‘$age’)”;
Database Table
Send it to the Database:
mysql_query($sql,$conn);
The Whole Picture
dbinsert.php
<? require(“dbconn.php”);
$name = $_POST[‘name’];
$age = $_POST[‘age’];
$sql = “INSERT into info (name,age) values(‘$name’, ‘$age’);”
mysql_query($sql,$conn);
?>
<html><body>
Thank you, your name and age were received.
</body></html>
The Whole Picture - Fancier
fancydbinsert.php
<? require(“dbconn.php”);
$name = $_POST[‘name’];
$age = $_POST[‘age’];
$sql = “INSERT into info (name,age) values(‘$name’, ‘$age’);”
$success = mysql_query($sql,$conn);
?>
<html><body>
<? if($success)
{ echo “Thank you, your name and age were received.”; }
else
{ echo “Sorry, your info wasn’t received, please contact …”; }
?>
</body></html>
Getting the Info Back
 Read it in phpMyAdmin
 Create an output page
(Just like that little survey you filled out)
Create an Output Page
 Connect to the Server
 Do a query of the data
 Programmatically write the data to a page
 View the page in a browser
 Let’s see how to do it
Connect to the Server
First, include our connection script:
<? require(“dbconn.php”); ?>
Do a Query of the Data
This time we use SELECT
$sql = “SELECT name, age FROM info”;
Or if you have many fields and want to be LAZY!
$sql = “SELECT * from info”;
Programmatically Write the Data
Here’s the only hard part:
<table border=“1”>
<? $result = mysql_query($sql, $conn);
while($table = mysql_fetch_object($result))
{
echo “<tr><td>”;
echo $table->name;
echo “</td><td>”;
echo $table->age;
echo “</td></tr>”;
}
?>
</table>
Putting it All Together
statuspage.php
<? require(“dbconn.php”);
$sql = “SELECT * FROM info”;
$result = mysql_query($sql, $conn);
?>
<html><body>
<table border=“1”>
<? while($table = mysql_fetch_object($result))
{ echo “<tr><td>”;
echo $table->name;
echo “</td><td>”;
echo $table->age;
echo “</td></tr>”;
}
?>
<table>
</body></html>
I Hate Objects!
If you don’t like using mysql_fetch_object:
 mysql_fetch_array($result)
 mysql_fetch_assoc($result)
mysql_fetch_array()
Access the columns by numbers:
while($array = mysql_fetch_array($result))
{
echo $array[0];
echo $array[1];
}
mysql_fetch_assoc()
Access the columns by column names:
while($array = mysql_fetch_assoc($result))
{
echo $array[‘name’];
echo $array[‘age’];
}
One Helpful Function
nl2br() – Line breaks in a form are not
respected
This function will turn a newline (nl) character
into (2) an html <br> (br) tag.
Data Validation
 Very Important!
 Without it, your site and all others can be
hacked!
 PHP makes it easier
Data Validation
 Cut down on XSS with htmlentities()
 Cut down on SQL-injection with
mysql_real_escape_string()
 Check that you’re getting what you expect
 Check that you’re getting the length you
expect
 Don’t trust JavaScript
Data Validation
 Cross site scripting vulnerability
 Allows a user to input scripts
 Allows a user to input links to malicious sites
 Allows a user to steal a
session/cookie/password
The htmlentities() function turns entities into
its harmless entity number.
A ‘ is turned into &#39;
Data Validation
 SQL-injection vulnerability
 Allows a user to directly access your database
 Allows a user to get access to other accounts
 Allows a user to read data you don’t want read
Prevention can be as simple as escaping quotes
with mysql_real_escape_string to all user input
$clean_user =
mysql_real_escape_string($_POST[‘username’]);
Data Validation
 Get what you expect to get
 Don’t change it, give error message
Example: (validinsert.php)
Age, should be less than 110, and numeric. Reject
anything else
if(strlen($age)>3){ //error message }
if(!is_int($age)){ //error message }
if($age>110 || $age<18){ //error message }
Data Validation
Get the length you expect
<input type=“text” name=“username” maxlength=“8”>
Make sure the username is no longer than 8
if(strlen($username)>8)){ //error message }
Data Validation
 Don’t trust JavaScript
 Do client side AND server side validation
Slide #50
I think that’s enough
webpublishers@listserv.brown.edu
Next topic – to be announced for early May
Ad

More Related Content

What's hot (20)

PHP 5.3 Overview
PHP 5.3 OverviewPHP 5.3 Overview
PHP 5.3 Overview
jsmith92
 
PHP and MySQL PHP Written as a set of CGI binaries in C in ...
PHP and MySQL PHP Written as a set of CGI binaries in C in ...PHP and MySQL PHP Written as a set of CGI binaries in C in ...
PHP and MySQL PHP Written as a set of CGI binaries in C in ...
webhostingguy
 
Php hacku
Php hackuPhp hacku
Php hacku
Tom Praison Praison
 
My shell
My shellMy shell
My shell
Ahmed Salah
 
Php tips-and-tricks4128
Php tips-and-tricks4128Php tips-and-tricks4128
Php tips-and-tricks4128
PrinceGuru MS
 
Php functions
Php functionsPhp functions
Php functions
JIGAR MAKHIJA
 
News of the Symfony2 World
News of the Symfony2 WorldNews of the Symfony2 World
News of the Symfony2 World
Fabien Potencier
 
Intermediate PHP
Intermediate PHPIntermediate PHP
Intermediate PHP
Bradley Holt
 
Introducation to php for beginners
Introducation to php for beginners Introducation to php for beginners
Introducation to php for beginners
musrath mohammad
 
07 Introduction to PHP #burningkeyboards
07 Introduction to PHP #burningkeyboards07 Introduction to PHP #burningkeyboards
07 Introduction to PHP #burningkeyboards
Denis Ristic
 
Php security3895
Php security3895Php security3895
Php security3895
PrinceGuru MS
 
SPL: The Missing Link in Development
SPL: The Missing Link in DevelopmentSPL: The Missing Link in Development
SPL: The Missing Link in Development
jsmith92
 
Php mysql
Php mysqlPhp mysql
Php mysql
Alebachew Zewdu
 
Fatc
FatcFatc
Fatc
Wade Arnold
 
Php with my sql
Php with my sqlPhp with my sql
Php with my sql
husnara mohammad
 
Introduction to PHP
Introduction to PHPIntroduction to PHP
Introduction to PHP
prabhatjon
 
Symfony2 - WebExpo 2010
Symfony2 - WebExpo 2010Symfony2 - WebExpo 2010
Symfony2 - WebExpo 2010
Fabien Potencier
 
PhpBB meets Symfony2
PhpBB meets Symfony2PhpBB meets Symfony2
PhpBB meets Symfony2
Fabien Potencier
 
Class 6 - PHP Web Programming
Class 6 - PHP Web ProgrammingClass 6 - PHP Web Programming
Class 6 - PHP Web Programming
Ahmed Swilam
 
Web Development Course: PHP lecture 1
Web Development Course: PHP lecture 1Web Development Course: PHP lecture 1
Web Development Course: PHP lecture 1
Gheyath M. Othman
 
PHP 5.3 Overview
PHP 5.3 OverviewPHP 5.3 Overview
PHP 5.3 Overview
jsmith92
 
PHP and MySQL PHP Written as a set of CGI binaries in C in ...
PHP and MySQL PHP Written as a set of CGI binaries in C in ...PHP and MySQL PHP Written as a set of CGI binaries in C in ...
PHP and MySQL PHP Written as a set of CGI binaries in C in ...
webhostingguy
 
Php tips-and-tricks4128
Php tips-and-tricks4128Php tips-and-tricks4128
Php tips-and-tricks4128
PrinceGuru MS
 
News of the Symfony2 World
News of the Symfony2 WorldNews of the Symfony2 World
News of the Symfony2 World
Fabien Potencier
 
Introducation to php for beginners
Introducation to php for beginners Introducation to php for beginners
Introducation to php for beginners
musrath mohammad
 
07 Introduction to PHP #burningkeyboards
07 Introduction to PHP #burningkeyboards07 Introduction to PHP #burningkeyboards
07 Introduction to PHP #burningkeyboards
Denis Ristic
 
SPL: The Missing Link in Development
SPL: The Missing Link in DevelopmentSPL: The Missing Link in Development
SPL: The Missing Link in Development
jsmith92
 
Introduction to PHP
Introduction to PHPIntroduction to PHP
Introduction to PHP
prabhatjon
 
Class 6 - PHP Web Programming
Class 6 - PHP Web ProgrammingClass 6 - PHP Web Programming
Class 6 - PHP Web Programming
Ahmed Swilam
 
Web Development Course: PHP lecture 1
Web Development Course: PHP lecture 1Web Development Course: PHP lecture 1
Web Development Course: PHP lecture 1
Gheyath M. Othman
 

Viewers also liked (20)

Array in php
Array in phpArray in php
Array in php
Ashok Kumar
 
JQuery-Tutorial
 JQuery-Tutorial JQuery-Tutorial
JQuery-Tutorial
tutorialsruby
 
Using mySQL in PHP
Using mySQL in PHPUsing mySQL in PHP
Using mySQL in PHP
Mike Crabb
 
Financial intelligent for start ups
Financial intelligent for start upsFinancial intelligent for start ups
Financial intelligent for start ups
jubril
 
Fcp lecture 01
Fcp lecture 01Fcp lecture 01
Fcp lecture 01
educationfront
 
Presentation & Pitching tips
Presentation & Pitching tipsPresentation & Pitching tips
Presentation & Pitching tips
ABrandNewYou
 
Microsoft excel beginner
Microsoft excel beginnerMicrosoft excel beginner
Microsoft excel beginner
denstar ricardo silalahi
 
Why Learn PHP Programming?
Why Learn PHP Programming?Why Learn PHP Programming?
Why Learn PHP Programming?
XtreemHeights
 
How to Use Publicity to Grow Your Startup
How to Use Publicity to Grow Your StartupHow to Use Publicity to Grow Your Startup
How to Use Publicity to Grow Your Startup
Joy Schoffler
 
Intro to PHP for Beginners
Intro to PHP for BeginnersIntro to PHP for Beginners
Intro to PHP for Beginners
mtlgirlgeeks
 
Computer Programming- Lecture 10
Computer Programming- Lecture 10Computer Programming- Lecture 10
Computer Programming- Lecture 10
Dr. Md. Shohel Sayeed
 
Excel training for beginners
Excel training for beginnersExcel training for beginners
Excel training for beginners
Parul Sharan
 
phpTutorial1
phpTutorial1phpTutorial1
phpTutorial1
tutorialsruby
 
Beating the decline of the Facebook Organic Reach - KRDS singapore
Beating the decline of the Facebook Organic Reach - KRDS singapore Beating the decline of the Facebook Organic Reach - KRDS singapore
Beating the decline of the Facebook Organic Reach - KRDS singapore
KRDS
 
Computer Programming- Lecture 9
Computer Programming- Lecture 9Computer Programming- Lecture 9
Computer Programming- Lecture 9
Dr. Md. Shohel Sayeed
 
How to present your business plan to investors
How to present your business plan to investorsHow to present your business plan to investors
How to present your business plan to investors
The Hatch
 
Comp 107chp 1
Comp 107chp 1Comp 107chp 1
Comp 107chp 1
Bala Ganesh
 
Comp 107 cep ii
Comp 107 cep iiComp 107 cep ii
Comp 107 cep ii
Bala Ganesh
 
9 Tips For Building An Internal Social Media Team
9 Tips For Building An Internal Social Media Team9 Tips For Building An Internal Social Media Team
9 Tips For Building An Internal Social Media Team
Ogilvy Consulting
 
Excel for beginners class 1
Excel for beginners class 1Excel for beginners class 1
Excel for beginners class 1
Carlstadt Public Library
 
Using mySQL in PHP
Using mySQL in PHPUsing mySQL in PHP
Using mySQL in PHP
Mike Crabb
 
Financial intelligent for start ups
Financial intelligent for start upsFinancial intelligent for start ups
Financial intelligent for start ups
jubril
 
Presentation & Pitching tips
Presentation & Pitching tipsPresentation & Pitching tips
Presentation & Pitching tips
ABrandNewYou
 
Why Learn PHP Programming?
Why Learn PHP Programming?Why Learn PHP Programming?
Why Learn PHP Programming?
XtreemHeights
 
How to Use Publicity to Grow Your Startup
How to Use Publicity to Grow Your StartupHow to Use Publicity to Grow Your Startup
How to Use Publicity to Grow Your Startup
Joy Schoffler
 
Intro to PHP for Beginners
Intro to PHP for BeginnersIntro to PHP for Beginners
Intro to PHP for Beginners
mtlgirlgeeks
 
Excel training for beginners
Excel training for beginnersExcel training for beginners
Excel training for beginners
Parul Sharan
 
Beating the decline of the Facebook Organic Reach - KRDS singapore
Beating the decline of the Facebook Organic Reach - KRDS singapore Beating the decline of the Facebook Organic Reach - KRDS singapore
Beating the decline of the Facebook Organic Reach - KRDS singapore
KRDS
 
How to present your business plan to investors
How to present your business plan to investorsHow to present your business plan to investors
How to present your business plan to investors
The Hatch
 
9 Tips For Building An Internal Social Media Team
9 Tips For Building An Internal Social Media Team9 Tips For Building An Internal Social Media Team
9 Tips For Building An Internal Social Media Team
Ogilvy Consulting
 
Ad

Similar to Intro to php (20)

How to Create Login and Registration API in PHP.pdf
How to Create Login and Registration API in PHP.pdfHow to Create Login and Registration API in PHP.pdf
How to Create Login and Registration API in PHP.pdf
Appweb Coders
 
Supercharging WordPress Development - Wordcamp Brighton 2019
Supercharging WordPress Development - Wordcamp Brighton 2019Supercharging WordPress Development - Wordcamp Brighton 2019
Supercharging WordPress Development - Wordcamp Brighton 2019
Adam Tomat
 
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
Sanju Sony Kurian
 
HackU PHP and Node.js
HackU PHP and Node.jsHackU PHP and Node.js
HackU PHP and Node.js
souridatta
 
Php session
Php sessionPhp session
Php session
argusacademy
 
Php summary
Php summaryPhp summary
Php summary
Michelle Darling
 
PHP Basics and Demo HackU
PHP Basics and Demo HackUPHP Basics and Demo HackU
PHP Basics and Demo HackU
Anshu Prateek
 
PHP Arrays - indexed and associative array.
PHP Arrays - indexed and associative array. PHP Arrays - indexed and associative array.
PHP Arrays - indexed and associative array.
wahidullah mudaser
 
Create a res tful services api in php.
Create a res tful services api in php.Create a res tful services api in php.
Create a res tful services api in php.
Adeoye Akintola
 
18.register login
18.register login18.register login
18.register login
Razvan Raducanu, PhD
 
Introduction to PHP
Introduction to PHPIntroduction to PHP
Introduction to PHP
Collaboration Technologies
 
Php Tutorial
Php TutorialPhp Tutorial
Php Tutorial
Dr. Ramkumar Lakshminarayanan
 
[Bristol WordPress] Supercharging WordPress Development
[Bristol WordPress] Supercharging WordPress Development[Bristol WordPress] Supercharging WordPress Development
[Bristol WordPress] Supercharging WordPress Development
Adam Tomat
 
CHAPTER six DataBase Driven Websites.pptx
CHAPTER six DataBase Driven Websites.pptxCHAPTER six DataBase Driven Websites.pptx
CHAPTER six DataBase Driven Websites.pptx
KelemAlebachew
 
Php with mysql ppt
Php with mysql pptPhp with mysql ppt
Php with mysql ppt
Rajamanickam Gomathijayam
 
Training on php by cyber security infotech (csi)
Training on  php by cyber security infotech (csi)Training on  php by cyber security infotech (csi)
Training on php by cyber security infotech (csi)
Cyber Security Infotech Pvt. Ltd.
 
Php talk
Php talkPhp talk
Php talk
Jamil Ramsey
 
php-mysql-tutorial-part-3
php-mysql-tutorial-part-3php-mysql-tutorial-part-3
php-mysql-tutorial-part-3
tutorialsruby
 
&lt;b>PHP&lt;/b>/MySQL &lt;b>Tutorial&lt;/b> webmonkey/programming/
&lt;b>PHP&lt;/b>/MySQL &lt;b>Tutorial&lt;/b> webmonkey/programming/&lt;b>PHP&lt;/b>/MySQL &lt;b>Tutorial&lt;/b> webmonkey/programming/
&lt;b>PHP&lt;/b>/MySQL &lt;b>Tutorial&lt;/b> webmonkey/programming/
tutorialsruby
 
php-mysql-tutorial-part-3
php-mysql-tutorial-part-3php-mysql-tutorial-part-3
php-mysql-tutorial-part-3
tutorialsruby
 
How to Create Login and Registration API in PHP.pdf
How to Create Login and Registration API in PHP.pdfHow to Create Login and Registration API in PHP.pdf
How to Create Login and Registration API in PHP.pdf
Appweb Coders
 
Supercharging WordPress Development - Wordcamp Brighton 2019
Supercharging WordPress Development - Wordcamp Brighton 2019Supercharging WordPress Development - Wordcamp Brighton 2019
Supercharging WordPress Development - Wordcamp Brighton 2019
Adam Tomat
 
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
Sanju Sony Kurian
 
HackU PHP and Node.js
HackU PHP and Node.jsHackU PHP and Node.js
HackU PHP and Node.js
souridatta
 
PHP Basics and Demo HackU
PHP Basics and Demo HackUPHP Basics and Demo HackU
PHP Basics and Demo HackU
Anshu Prateek
 
PHP Arrays - indexed and associative array.
PHP Arrays - indexed and associative array. PHP Arrays - indexed and associative array.
PHP Arrays - indexed and associative array.
wahidullah mudaser
 
Create a res tful services api in php.
Create a res tful services api in php.Create a res tful services api in php.
Create a res tful services api in php.
Adeoye Akintola
 
[Bristol WordPress] Supercharging WordPress Development
[Bristol WordPress] Supercharging WordPress Development[Bristol WordPress] Supercharging WordPress Development
[Bristol WordPress] Supercharging WordPress Development
Adam Tomat
 
CHAPTER six DataBase Driven Websites.pptx
CHAPTER six DataBase Driven Websites.pptxCHAPTER six DataBase Driven Websites.pptx
CHAPTER six DataBase Driven Websites.pptx
KelemAlebachew
 
php-mysql-tutorial-part-3
php-mysql-tutorial-part-3php-mysql-tutorial-part-3
php-mysql-tutorial-part-3
tutorialsruby
 
&lt;b>PHP&lt;/b>/MySQL &lt;b>Tutorial&lt;/b> webmonkey/programming/
&lt;b>PHP&lt;/b>/MySQL &lt;b>Tutorial&lt;/b> webmonkey/programming/&lt;b>PHP&lt;/b>/MySQL &lt;b>Tutorial&lt;/b> webmonkey/programming/
&lt;b>PHP&lt;/b>/MySQL &lt;b>Tutorial&lt;/b> webmonkey/programming/
tutorialsruby
 
php-mysql-tutorial-part-3
php-mysql-tutorial-part-3php-mysql-tutorial-part-3
php-mysql-tutorial-part-3
tutorialsruby
 
Ad

Recently uploaded (20)

Manifest Pre-Seed Update | A Humanoid OEM Deeptech In France
Manifest Pre-Seed Update | A Humanoid OEM Deeptech In FranceManifest Pre-Seed Update | A Humanoid OEM Deeptech In France
Manifest Pre-Seed Update | A Humanoid OEM Deeptech In France
chb3
 
Heap, Types of Heap, Insertion and Deletion
Heap, Types of Heap, Insertion and DeletionHeap, Types of Heap, Insertion and Deletion
Heap, Types of Heap, Insertion and Deletion
Jaydeep Kale
 
Build Your Own Copilot & Agents For Devs
Build Your Own Copilot & Agents For DevsBuild Your Own Copilot & Agents For Devs
Build Your Own Copilot & Agents For Devs
Brian McKeiver
 
Mobile App Development Company in Saudi Arabia
Mobile App Development Company in Saudi ArabiaMobile App Development Company in Saudi Arabia
Mobile App Development Company in Saudi Arabia
Steve Jonas
 
Linux Support for SMARC: How Toradex Empowers Embedded Developers
Linux Support for SMARC: How Toradex Empowers Embedded DevelopersLinux Support for SMARC: How Toradex Empowers Embedded Developers
Linux Support for SMARC: How Toradex Empowers Embedded Developers
Toradex
 
Drupalcamp Finland – Measuring Front-end Energy Consumption
Drupalcamp Finland – Measuring Front-end Energy ConsumptionDrupalcamp Finland – Measuring Front-end Energy Consumption
Drupalcamp Finland – Measuring Front-end Energy Consumption
Exove
 
IEDM 2024 Tutorial2_Advances in CMOS Technologies and Future Directions for C...
IEDM 2024 Tutorial2_Advances in CMOS Technologies and Future Directions for C...IEDM 2024 Tutorial2_Advances in CMOS Technologies and Future Directions for C...
IEDM 2024 Tutorial2_Advances in CMOS Technologies and Future Directions for C...
organizerofv
 
TrustArc Webinar: Consumer Expectations vs Corporate Realities on Data Broker...
TrustArc Webinar: Consumer Expectations vs Corporate Realities on Data Broker...TrustArc Webinar: Consumer Expectations vs Corporate Realities on Data Broker...
TrustArc Webinar: Consumer Expectations vs Corporate Realities on Data Broker...
TrustArc
 
Quantum Computing Quick Research Guide by Arthur Morgan
Quantum Computing Quick Research Guide by Arthur MorganQuantum Computing Quick Research Guide by Arthur Morgan
Quantum Computing Quick Research Guide by Arthur Morgan
Arthur Morgan
 
2025-05-Q4-2024-Investor-Presentation.pptx
2025-05-Q4-2024-Investor-Presentation.pptx2025-05-Q4-2024-Investor-Presentation.pptx
2025-05-Q4-2024-Investor-Presentation.pptx
Samuele Fogagnolo
 
Generative Artificial Intelligence (GenAI) in Business
Generative Artificial Intelligence (GenAI) in BusinessGenerative Artificial Intelligence (GenAI) in Business
Generative Artificial Intelligence (GenAI) in Business
Dr. Tathagat Varma
 
Noah Loul Shares 5 Steps to Implement AI Agents for Maximum Business Efficien...
Noah Loul Shares 5 Steps to Implement AI Agents for Maximum Business Efficien...Noah Loul Shares 5 Steps to Implement AI Agents for Maximum Business Efficien...
Noah Loul Shares 5 Steps to Implement AI Agents for Maximum Business Efficien...
Noah Loul
 
Role of Data Annotation Services in AI-Powered Manufacturing
Role of Data Annotation Services in AI-Powered ManufacturingRole of Data Annotation Services in AI-Powered Manufacturing
Role of Data Annotation Services in AI-Powered Manufacturing
Andrew Leo
 
Electronic_Mail_Attacks-1-35.pdf by xploit
Electronic_Mail_Attacks-1-35.pdf by xploitElectronic_Mail_Attacks-1-35.pdf by xploit
Electronic_Mail_Attacks-1-35.pdf by xploit
niftliyevhuseyn
 
ThousandEyes Partner Innovation Updates for May 2025
ThousandEyes Partner Innovation Updates for May 2025ThousandEyes Partner Innovation Updates for May 2025
ThousandEyes Partner Innovation Updates for May 2025
ThousandEyes
 
Rusty Waters: Elevating Lakehouses Beyond Spark
Rusty Waters: Elevating Lakehouses Beyond SparkRusty Waters: Elevating Lakehouses Beyond Spark
Rusty Waters: Elevating Lakehouses Beyond Spark
carlyakerly1
 
Increasing Retail Store Efficiency How can Planograms Save Time and Money.pptx
Increasing Retail Store Efficiency How can Planograms Save Time and Money.pptxIncreasing Retail Store Efficiency How can Planograms Save Time and Money.pptx
Increasing Retail Store Efficiency How can Planograms Save Time and Money.pptx
Anoop Ashok
 
Enhancing ICU Intelligence: How Our Functional Testing Enabled a Healthcare I...
Enhancing ICU Intelligence: How Our Functional Testing Enabled a Healthcare I...Enhancing ICU Intelligence: How Our Functional Testing Enabled a Healthcare I...
Enhancing ICU Intelligence: How Our Functional Testing Enabled a Healthcare I...
Impelsys Inc.
 
AI and Data Privacy in 2025: Global Trends
AI and Data Privacy in 2025: Global TrendsAI and Data Privacy in 2025: Global Trends
AI and Data Privacy in 2025: Global Trends
InData Labs
 
HCL Nomad Web – Best Practices und Verwaltung von Multiuser-Umgebungen
HCL Nomad Web – Best Practices und Verwaltung von Multiuser-UmgebungenHCL Nomad Web – Best Practices und Verwaltung von Multiuser-Umgebungen
HCL Nomad Web – Best Practices und Verwaltung von Multiuser-Umgebungen
panagenda
 
Manifest Pre-Seed Update | A Humanoid OEM Deeptech In France
Manifest Pre-Seed Update | A Humanoid OEM Deeptech In FranceManifest Pre-Seed Update | A Humanoid OEM Deeptech In France
Manifest Pre-Seed Update | A Humanoid OEM Deeptech In France
chb3
 
Heap, Types of Heap, Insertion and Deletion
Heap, Types of Heap, Insertion and DeletionHeap, Types of Heap, Insertion and Deletion
Heap, Types of Heap, Insertion and Deletion
Jaydeep Kale
 
Build Your Own Copilot & Agents For Devs
Build Your Own Copilot & Agents For DevsBuild Your Own Copilot & Agents For Devs
Build Your Own Copilot & Agents For Devs
Brian McKeiver
 
Mobile App Development Company in Saudi Arabia
Mobile App Development Company in Saudi ArabiaMobile App Development Company in Saudi Arabia
Mobile App Development Company in Saudi Arabia
Steve Jonas
 
Linux Support for SMARC: How Toradex Empowers Embedded Developers
Linux Support for SMARC: How Toradex Empowers Embedded DevelopersLinux Support for SMARC: How Toradex Empowers Embedded Developers
Linux Support for SMARC: How Toradex Empowers Embedded Developers
Toradex
 
Drupalcamp Finland – Measuring Front-end Energy Consumption
Drupalcamp Finland – Measuring Front-end Energy ConsumptionDrupalcamp Finland – Measuring Front-end Energy Consumption
Drupalcamp Finland – Measuring Front-end Energy Consumption
Exove
 
IEDM 2024 Tutorial2_Advances in CMOS Technologies and Future Directions for C...
IEDM 2024 Tutorial2_Advances in CMOS Technologies and Future Directions for C...IEDM 2024 Tutorial2_Advances in CMOS Technologies and Future Directions for C...
IEDM 2024 Tutorial2_Advances in CMOS Technologies and Future Directions for C...
organizerofv
 
TrustArc Webinar: Consumer Expectations vs Corporate Realities on Data Broker...
TrustArc Webinar: Consumer Expectations vs Corporate Realities on Data Broker...TrustArc Webinar: Consumer Expectations vs Corporate Realities on Data Broker...
TrustArc Webinar: Consumer Expectations vs Corporate Realities on Data Broker...
TrustArc
 
Quantum Computing Quick Research Guide by Arthur Morgan
Quantum Computing Quick Research Guide by Arthur MorganQuantum Computing Quick Research Guide by Arthur Morgan
Quantum Computing Quick Research Guide by Arthur Morgan
Arthur Morgan
 
2025-05-Q4-2024-Investor-Presentation.pptx
2025-05-Q4-2024-Investor-Presentation.pptx2025-05-Q4-2024-Investor-Presentation.pptx
2025-05-Q4-2024-Investor-Presentation.pptx
Samuele Fogagnolo
 
Generative Artificial Intelligence (GenAI) in Business
Generative Artificial Intelligence (GenAI) in BusinessGenerative Artificial Intelligence (GenAI) in Business
Generative Artificial Intelligence (GenAI) in Business
Dr. Tathagat Varma
 
Noah Loul Shares 5 Steps to Implement AI Agents for Maximum Business Efficien...
Noah Loul Shares 5 Steps to Implement AI Agents for Maximum Business Efficien...Noah Loul Shares 5 Steps to Implement AI Agents for Maximum Business Efficien...
Noah Loul Shares 5 Steps to Implement AI Agents for Maximum Business Efficien...
Noah Loul
 
Role of Data Annotation Services in AI-Powered Manufacturing
Role of Data Annotation Services in AI-Powered ManufacturingRole of Data Annotation Services in AI-Powered Manufacturing
Role of Data Annotation Services in AI-Powered Manufacturing
Andrew Leo
 
Electronic_Mail_Attacks-1-35.pdf by xploit
Electronic_Mail_Attacks-1-35.pdf by xploitElectronic_Mail_Attacks-1-35.pdf by xploit
Electronic_Mail_Attacks-1-35.pdf by xploit
niftliyevhuseyn
 
ThousandEyes Partner Innovation Updates for May 2025
ThousandEyes Partner Innovation Updates for May 2025ThousandEyes Partner Innovation Updates for May 2025
ThousandEyes Partner Innovation Updates for May 2025
ThousandEyes
 
Rusty Waters: Elevating Lakehouses Beyond Spark
Rusty Waters: Elevating Lakehouses Beyond SparkRusty Waters: Elevating Lakehouses Beyond Spark
Rusty Waters: Elevating Lakehouses Beyond Spark
carlyakerly1
 
Increasing Retail Store Efficiency How can Planograms Save Time and Money.pptx
Increasing Retail Store Efficiency How can Planograms Save Time and Money.pptxIncreasing Retail Store Efficiency How can Planograms Save Time and Money.pptx
Increasing Retail Store Efficiency How can Planograms Save Time and Money.pptx
Anoop Ashok
 
Enhancing ICU Intelligence: How Our Functional Testing Enabled a Healthcare I...
Enhancing ICU Intelligence: How Our Functional Testing Enabled a Healthcare I...Enhancing ICU Intelligence: How Our Functional Testing Enabled a Healthcare I...
Enhancing ICU Intelligence: How Our Functional Testing Enabled a Healthcare I...
Impelsys Inc.
 
AI and Data Privacy in 2025: Global Trends
AI and Data Privacy in 2025: Global TrendsAI and Data Privacy in 2025: Global Trends
AI and Data Privacy in 2025: Global Trends
InData Labs
 
HCL Nomad Web – Best Practices und Verwaltung von Multiuser-Umgebungen
HCL Nomad Web – Best Practices und Verwaltung von Multiuser-UmgebungenHCL Nomad Web – Best Practices und Verwaltung von Multiuser-Umgebungen
HCL Nomad Web – Best Practices und Verwaltung von Multiuser-Umgebungen
panagenda
 

Intro to php

  • 1. Intro to PHP A brief overview – Patrick Laverty
  • 2. What is PHP?  PHP (recursive acronym for "PHP: Hypertext Preprocessor") is a widely-used Open Source general-purpose scripting language that is especially suited for Web development and can be embedded into HTML. <? echo “HI!”; ?>
  • 3. What is PHP? Compared to others like:  Java – Sun, compiled and interpreted (jsp)  Perl – Open Source, scripting  .NET – MS, opposite of Java  ColdFusion – Now Adobe, the original  Javascript – Netscape, client-side  PHP – Open Source, server-side
  • 4. How it works  PHP is installed on web server  Our web server is Apache (just an FYI)  Server parses files based on extensions  Returns plain HTML, no code
  • 5. How To – The Basics  Need to name files is a .php extension Example: index.php, mypage.php  Open and close tags: <? ?> Was: <?php ?>  Save file to server, view in a browser
  • 6. Hello World helloworld.php <html> <body> <? echo “Hello World!”; ?> </body> </html>
  • 7. Variables Variables are like a cup The same cup can hold lots of different things Same with variables
  • 8. Variables In PHP, you create a variable with a dollar sign and some text. Usually the text will be something descriptive of what it is going to hold. $name = “Patrick Laverty”; $dept = “CIS”; $campus_addr = “Box 1885”;
  • 9. Variables There are many different kinds of variables in PHP  Scalar  Array  Object
  • 10. Scalar Variables Hold single values  String/text  Numbers $name = “Josiah”; $dob = “1/1/23”; $age = 84; $waist_size = 36;
  • 11. Array Variables Hold multiple values All in one step example: $kids = Array(“Tom”,”Dick”,”Harry”); Multiple steps example: $kids = Array(); $kids[0] = “Tom”; $kids[1] = “Dick”; $kids[2] = “Harry”; Individual array values are just a scalar
  • 12. Array Variables Associative Arrays – may be easier to find stuff $teams = Array(‘bos’=>’Red Sox’, ‘nyy’=>’Yankees’, ’bal’=>’Orioles’); The two-step way works the same: $teams = Array(); $teams[‘bos’] = ‘Red Sox’;
  • 13. Object Variables We’ll talk about these later. We’re in no rush
  • 14. Functions Getting PHP to do some action for you echo() or print() phpinfo() (phpinfo.php)
  • 15. Functions Be lazy. It’s a good thing. If you’re going to do the same action more than once, write a function. sayhello.php function sayHello($toWhom) { echo “Hello $toWhom”; }
  • 16. Functions Lots have already been written for you: http://php.net/manual/en If you know the function: http://php.net/echo
  • 17. A Basic Form How we do things now: eform.cgi <form method=“POST” action= http://www.brown.edu/cgi-local/eform.cgi> <input type=“text” name=“name”> <input type=“text” name=“age”> <input type=“submit”> </form>
  • 18. A Basic Form How we do things with PHP: basicform.html <form method=“POST” action=“output.php”> <input type=“text” name=“name”> <input type=“text” name=“age”> <input type=“submit”> </form>
  • 19. A Basic Form Capturing the data in output.php Variables:  $_POST[‘name’]  $_POST[‘age’] Use phpinfo() to see variables
  • 20. A Basic Form Weave HTML and PHP output.php <html><body> <? $name = $_POST[‘name’]; $age = $_POST[‘age’]; echo “My name is $name and I am $age years old”; ?> </body></html>
  • 21. Data Validation We’ll talk more about validating user input later.
  • 22. A Basic Form Outputting to the screen is nice, but boring We could email the results Let’s store data in a database
  • 23. Layers of a Database  Server  Database  Tables  Fields/Columns  Records  Data
  • 24. How to Get a Database  Use Microsoft Access  Use Filemaker  Request a MySQL Database (http://brown.edu/db)
  • 25. Request a MySQL Database You will receive:  Server name (it’s not localhost)  Database name  Username  Password  Link to phpMyAdmin
  • 26. phpMyAdmin  phpMyAdmin is a graphical view of your database  Very easy Let’s take a look (http://brown.edu/phpMyAdmin)
  • 27. Connecting to DB from PHP Create one connection script: dbconn.php <? $conn = mysql_connect($server,$user,$pw); mysql_select_db($db,$conn); ?>
  • 28. Connecting to DB from PHP Remember, “Be Lazy!” At the top of each file that needs the DB: <? require(“dbconn.php”); ?>
  • 29. Database Table Table named ‘info’ has two fields, name and age Use a SQL INSERT statement: $sql = “INSERT INTO info (name,age) values (‘$name’, ‘$age’)”;
  • 30. Database Table Send it to the Database: mysql_query($sql,$conn);
  • 31. The Whole Picture dbinsert.php <? require(“dbconn.php”); $name = $_POST[‘name’]; $age = $_POST[‘age’]; $sql = “INSERT into info (name,age) values(‘$name’, ‘$age’);” mysql_query($sql,$conn); ?> <html><body> Thank you, your name and age were received. </body></html>
  • 32. The Whole Picture - Fancier fancydbinsert.php <? require(“dbconn.php”); $name = $_POST[‘name’]; $age = $_POST[‘age’]; $sql = “INSERT into info (name,age) values(‘$name’, ‘$age’);” $success = mysql_query($sql,$conn); ?> <html><body> <? if($success) { echo “Thank you, your name and age were received.”; } else { echo “Sorry, your info wasn’t received, please contact …”; } ?> </body></html>
  • 33. Getting the Info Back  Read it in phpMyAdmin  Create an output page (Just like that little survey you filled out)
  • 34. Create an Output Page  Connect to the Server  Do a query of the data  Programmatically write the data to a page  View the page in a browser  Let’s see how to do it
  • 35. Connect to the Server First, include our connection script: <? require(“dbconn.php”); ?>
  • 36. Do a Query of the Data This time we use SELECT $sql = “SELECT name, age FROM info”; Or if you have many fields and want to be LAZY! $sql = “SELECT * from info”;
  • 37. Programmatically Write the Data Here’s the only hard part: <table border=“1”> <? $result = mysql_query($sql, $conn); while($table = mysql_fetch_object($result)) { echo “<tr><td>”; echo $table->name; echo “</td><td>”; echo $table->age; echo “</td></tr>”; } ?> </table>
  • 38. Putting it All Together statuspage.php <? require(“dbconn.php”); $sql = “SELECT * FROM info”; $result = mysql_query($sql, $conn); ?> <html><body> <table border=“1”> <? while($table = mysql_fetch_object($result)) { echo “<tr><td>”; echo $table->name; echo “</td><td>”; echo $table->age; echo “</td></tr>”; } ?> <table> </body></html>
  • 39. I Hate Objects! If you don’t like using mysql_fetch_object:  mysql_fetch_array($result)  mysql_fetch_assoc($result)
  • 40. mysql_fetch_array() Access the columns by numbers: while($array = mysql_fetch_array($result)) { echo $array[0]; echo $array[1]; }
  • 41. mysql_fetch_assoc() Access the columns by column names: while($array = mysql_fetch_assoc($result)) { echo $array[‘name’]; echo $array[‘age’]; }
  • 42. One Helpful Function nl2br() – Line breaks in a form are not respected This function will turn a newline (nl) character into (2) an html <br> (br) tag.
  • 43. Data Validation  Very Important!  Without it, your site and all others can be hacked!  PHP makes it easier
  • 44. Data Validation  Cut down on XSS with htmlentities()  Cut down on SQL-injection with mysql_real_escape_string()  Check that you’re getting what you expect  Check that you’re getting the length you expect  Don’t trust JavaScript
  • 45. Data Validation  Cross site scripting vulnerability  Allows a user to input scripts  Allows a user to input links to malicious sites  Allows a user to steal a session/cookie/password The htmlentities() function turns entities into its harmless entity number. A ‘ is turned into &#39;
  • 46. Data Validation  SQL-injection vulnerability  Allows a user to directly access your database  Allows a user to get access to other accounts  Allows a user to read data you don’t want read Prevention can be as simple as escaping quotes with mysql_real_escape_string to all user input $clean_user = mysql_real_escape_string($_POST[‘username’]);
  • 47. Data Validation  Get what you expect to get  Don’t change it, give error message Example: (validinsert.php) Age, should be less than 110, and numeric. Reject anything else if(strlen($age)>3){ //error message } if(!is_int($age)){ //error message } if($age>110 || $age<18){ //error message }
  • 48. Data Validation Get the length you expect <input type=“text” name=“username” maxlength=“8”> Make sure the username is no longer than 8 if(strlen($username)>8)){ //error message }
  • 49. Data Validation  Don’t trust JavaScript  Do client side AND server side validation
  • 50. Slide #50 I think that’s enough [email protected] Next topic – to be announced for early May