PHP – Digging Deeper Martin Kruliš by Martin Kruliš (v1.2) 28.11.2016.

Slides:



Advertisements
Similar presentations
Hypertext Transfer PROTOCOL ----HTTP Sen Wang CSE5232 Network Programming.
Advertisements

UFCE8V-20-3 Information Systems Development 3 (SHAPE HK)
1.  Understanding about How to Working with Server Side Scripting using PHP Framework (CodeIgniter) 2.
PHP and the Web: Session : 4. Predefined variables PHP provides a large number of predefined global variables to any script which it runs also called.
Uploading Files. Why? By giving a user the option to upload a file you are creating an interactive page You can enable users have a greater web experience.
Christopher M. Pascucci Basic Structural Concepts of.NET Browser – Server Interaction.
Sys Prog & Scripting - HW Univ1 Systems Programming & Scripting Lecture 15: PHP Introduction.
Martin Kruliš by Martin Kruliš (v1.0)1.
8 Chapter Eight Server-side Scripts. 8 Chapter Objectives Create dynamic Web pages that retrieve and display database data using Active Server Pages Process.
Introduction to PHP and Server Side Technology. Slide 2 PHP History Created in 1995 PHP 5.0 is the current version It’s been around since 2004.
FALL 2005CSI 4118 – UNIVERSITY OF OTTAWA1 Part 4 Web technologies: HTTP, CGI, PHP,Java applets)
Lecture 7 – Form processing (Part 2) SFDV3011 – Advanced Web Development 1.
Open Source Server Side Scripting ECA 236 Open Source Server Side Scripting Cookies & Sessions.
CHAPTER 12 COOKIES AND SESSIONS. INTRO HTTP is a stateless technology Each page rendered by a browser is unrelated to other pages – even if they are from.
Lecture 7 Interaction. Topics Implementing data flows An internet solution Transactions in MySQL 4-tier systems – business rule/presentation separation.
1 PHP and MySQL. 2 Topics  Querying Data with PHP  User-Driven Querying  Writing Data with PHP and MySQL PHP and MySQL.
CSE 154 LECTURE 12: COOKIES. Including files: include include("filename"); PHP include("header.html"); include("shared-code.php"); PHP inserts the entire.
Chapter 8 Cookies And Security JavaScript, Third Edition.
What is MySQLi? Since the mid-90s, Mysql extension has served as the major bridge between PHP and MySQL. Although it has performed its duty quite well,
School of Computing and Information Systems CS 371 Web Application Programming PHP – Forms, Cookies, Sessions and Database.
PHP Part 2.
1 Chapter 9 – Cookies, Sessions, FTP, and More spring into PHP 5 by Steven Holzner Slides were developed by Jack Davis College of Information Science.
Accessing Your MySQL Database from the Web with PHP (Ch 11) 1.
CSC 2720 Building Web Applications Server-side Scripting with PHP.
ITM © Port, Kazman1 ITM 352 More on Forms Processing.
Operating Systems Lesson 12. HTTP vs HTML HTML: hypertext markup language ◦ Definitions of tags that are added to Web documents to control their appearance.
Martin Kruliš by Martin Kruliš (v1.1)1.
8 Chapter Eight Server-side Scripts. 8 Chapter Objectives Create dynamic Web pages that retrieve and display database data using Active Server Pages Process.
1 State and Session Management HTTP is a stateless protocol – it has no memory of prior connections and cannot distinguish one request from another. The.
ASP-2-1 SERVER AND CLIENT SIDE SCRITPING Colorado Technical University IT420 Tim Peterson.
CSC 2720 Building Web Applications Accessing MySQL from PHP.
1 PHP HTTP After this lecture, you should be able to know: How to create and process web forms with HTML and PHP. How to create and process web forms with.
Unit-6 Handling Sessions and Cookies. Concept of Session Session values are store in server side not in user’s machine. A session is available as long.
Session 11: Cookies, Sessions ans Security iNET Academy Open Source Web Development.
Simple PHP Web Applications Server Environment
National College of Science & Information Technology.
Web Systems & Technologies
PHP (Session 2) INFO 257 Supplement.
CHAPTER 5 SERVER SIDE SCRIPTING
Tiny http client and server
Introduction to Dynamic Web Programming
Creating Databases Local storage. join & split
World Wide Web policy.
Web Technologies IT230 Dr Mohamed Habib.
z/Ware 2.0 Technical Overview
CIIT-Human Computer Interaction-CSC456-Fall-2015-Mr
PHP –MySQL Interview Question And Answer.
DBW - PHP DBW2017.
19.10 Using Cookies A cookie is a piece of information that’s stored by a server in a text file on a client’s computer to maintain information about.
Introduction to CodeIgniter (CI)
Chapter 19 PHP Part III Credits: Parts of the slides are based on slides created by textbook authors, P.J. Deitel and H. M. Deitel by Prentice Hall ©
ITM 352 Cookies.
Multitier Architecture, MySQL & PHP
PHP / MySQL Introduction
PHP FORM HANDLING Post Method
PHP Overview PHP: Hypertext Preprocessor Server-Side Scripting
IS333D: MULTI-TIER APPLICATION DEVELOPMENT
Cookies BIS1523 – Lecture 23.
Simple PHP application
WEB API.
Web Applications in PHP
Web Programming Language
Lecture 5: Functions and Parameters
Kevin Harville Source: Webmaster in a Nutshell, O'Rielly Books
The HTTP Protocol COSC 2206 Internet Tools The HTTP Protocol
PHP Forms and Databases.
PHP-II.
Mr. Justin “JET” Turner CSCI 3000 – Fall 2016 Section DA MW 4:05-5:20
PHP By Prof. B.A.Khivsara Note: The material to prepare this presentation has been taken from internet and are generated only for students reference and.
SQL Injection Attack.
Presentation transcript:

PHP – Digging Deeper Martin Kruliš by Martin Kruliš (v1.2) 28.11.2016

HTTP Wrapper - Revision HTTP Request Wrapper Data are automatically prepared in superglobal arrays $_GET – parameters from request URL $_POST – parameters posted in HTTP body (form data) $_FILES – records about uploaded files $_SERVER – server settings and request headers $_ENV – environment variables HTTP Response Script output is the response (echo …) Headers can be modified by functions – e.g., header('header-line'); by Martin Kruliš (v1.2) 28.11.2016

HTTP Wrapper - Revision Example <form action="?op=update&id=42" method="POST"> <input name="name" type="text"> <input name="surname" type="text"> <input name="age" type="number"> <input type="submit" value="Save"> </form> 'op' => 'update' 'id' => '42' 'name' => 'Martin' 'surname' => 'Kruliš' 'age' => '19' $_GET $_POST Note the & entity used in URL, since it is being included in HTML attribute. Furthermore, note that all values are strings (despite the fact that some of them contain numbers). Example 1 by Martin Kruliš (v1.2) 28.11.2016

HTTP Wrapper Request Information Decoded to the $_SERVER array REQUEST_METHOD – used method (“GET”or “POST”) SERVER_PROTOCOL – protocol version (“HTTP/1.1”) REQUEST_URI – request part of URL (“/index.php”) REMOTE_ADDR – clients IP address HTTP_ACCEPT – MIME types that the client accepts HTTP_ACCEPT_LANGUAGE – desired translation HTTP_ACCEPT_ENCODING – desired encodings HTTP_ACCEPT_CHARSET – desired charsets + more info about the server and the client’s browser phpinfo() by Martin Kruliš (v1.2) 28.11.2016

HTTP Wrapper File Uploads In form as <input type="file" name=... /> Provide safe way to browse disk files HTTP wrapper handles the file Stores it in temporary location Provide related info in $_FILES[name] 'tmp_name' – path to the file in temp directory 'error' – error code (e.g., UPLOAD_ERR_OK) 'name', 'type', 'size', … File exists only as long as the script runs is_uploaded_file() – verification move_uploaded_file() – a safe way to move files Let us emphasize that the form must use “multipart/form-data” encoding to successfully handle file uploads. Example 2 by Martin Kruliš (v1.2) 28.11.2016

POST Request (a submitted form) HTTP Issues Problem with POST POST Request (a submitted form) script add/change something Web Server Refresh Again!!! Client (Browser) Response (a HTML page) by Martin Kruliš (v1.2) 28.11.2016

HTTP Issues Redirect Mechanism in HTTP Creating Redirect in PHP 3xx response code 301 Moved Permanently 302 Found (originally named Moved Temporarily) 303 See Other Additional header 'Location' has the new URL Browser must try to load the new URL Loops in redirections are detected Creating Redirect in PHP header("Location: my-new-url"); Automatically changes the response code (to 302) by Martin Kruliš (v1.2) 28.11.2016

HTTP Issues Redirect (303 See Other) after POST POST Request (action.php) action.php add/change something Redirect (to index.php) Web Server Redirects to a new URL (without updating history) Client (Browser) index.php generate HTML (only reads DB) Note that setting Location header in PHP always sets the 302 (Found) response code. This is no big deal; however, it is not entirely correct HTTP semantics. GET (index.php) Refresh HTML Page Example 3 by Martin Kruliš (v1.2) 28.11.2016

Redirect and AJAX Redirecting Asynchronous HTTP Requests Works transparently – i.e., in the same way as all HTTP requests handled by the browser Typically unnecessary after POST requests A script should not be re-executed after reload, thus it can receive the updated HTML immediately Uncertain semantics Is the redirect meant for the AJAX result or should the whole page load a new URL? Efficiency AJAX typically optimizes network utilization – additional redirect may be suboptimal by Martin Kruliš (v1.2) 28.11.2016

Redirect and AJAX Example – Replacing Redirect with AJAX Let us have a data table, where each item has a delete button that triggers AJAX POST request Trivial solution After successful request, JS triggers reload of the page Optionally the req. may send an URL (for location.href) Slightly more optimized solution After successful request, JS triggers reload of affected components (table) via separate AJAX GET request Optimized solution The POST response sends a HTML fragment or (better yet) a difference update for the data table by Martin Kruliš (v1.2) 28.11.2016

HTTP Issues Cookies A way to deal with stateless nature of the HTTP Key-value pairs (of strings) stored in the web browser Set by special HTTP response header Automatically re-sent in headers with every request Each page (domain) has it own set of cookies Cookies in PHP Cookies sent by browser are loaded to $_COOKIE[] Cookies are set/modified/removed by setcookie() The function modifies HTTP response headers Cookies are usually used along with a mechanism that allows keeping session specific data at the server side. PHP supports sessions directly (see documentation). Example 4 by Martin Kruliš (v1.2) 28.11.2016

Databases MySQL Original mysql API is deprecated (as of PHP 5.5) MySQL Improved (mysqli) API Dual object/procedural interface Procedural interface is similar to original (deprecated) API Advanced connectivity features Persistent connections, compression, encryption Directly supports transactions MySQL Native Driver (mysqlnd) extension More direct access to MySQL server Additional features (e.g., asynchronous queries) by Martin Kruliš (v1.2) 28.11.2016

Databases MySQLi Procedural API Establishing connection with MySQL server $mysqli = mysqli_connect("server", "login", "password", "db_name"); Performing queries $res = mysqli_query($mysqli, "SQL …"); Terminating connection mysqli_close($mysqli); Safe way to include strings in SQL query mysqli_real_escape_string($mysqli, $str); by Martin Kruliš (v1.2) 28.11.2016

Databases MySQL Results mysqli_query() result depends on the query type On failure always returns false Modification queries return true on success Data queries (SELECT, …) return mysqli_result obj mysqli_fetch_assoc($res) mysqli_fetch_obj($res) mysqli_fetch_all($res, $format) mysqli_fetch_fields($res) mysqli_num_rows($res) mysqli_free_result($res) by Martin Kruliš (v1.2) 28.11.2016

Placeholders ? can be used for bound variables Databases Placeholders ? can be used for bound variables MySQLi Prepared Statements Prepare new MySQL statement $stmt = mysqli_stmt_init($mysqli); mysqli_stmt_prepare($stmt, "SELECT ..."); Binding parameters (by positional placeholders) mysqli_stmt_bind_param($stmt, $types, $var1, …) Types string – one char ~ one parameter Execute and get result object mysqli_stmt_execute($stmt); $res = mysqli_stmt_get_result($stmt); Example 5 by Martin Kruliš (v1.2) 28.11.2016

Frameworks PHP Frameworks Symfony – one of the most popular Laravel – one of the most popular Slim - microframework Zend – one of the oldest Nette – Czech developer and comunity CodeIgniter Yii 2 Phalcon CakePHP … by Martin Kruliš (v1.2) 28.11.2016

Discussion by Martin Kruliš (v1.2) 28.11.2016