Mul$media*im*Netz* (Online*Mul$media)* · 3 27.10.2014 HTML5)&)JavaScript Introduc>on) 4 03.11.2014...
Transcript of Mul$media*im*Netz* (Online*Mul$media)* · 3 27.10.2014 HTML5)&)JavaScript Introduc>on) 4 03.11.2014...
![Page 1: Mul$media*im*Netz* (Online*Mul$media)* · 3 27.10.2014 HTML5)&)JavaScript Introduc>on) 4 03.11.2014 Web)Interac>vity:)Drag)&)Drop)with)HTML5) 5 10.11.2014 jQuery:)DOM Traversal)and)Manipulaon,)](https://reader033.fdocuments.in/reader033/viewer/2022050414/5f8b2b7313e2b132c7086b5a/html5/thumbnails/1.jpg)
Mul$media im Netz (Online Mul$media) Wintersemester 2014/15
Übung 02 (Haup8ach)
Mul>media im Netz WS 2014/15 -‐ Übung 2 -‐ Ludwig-‐Maximilians-‐Universität München 1
![Page 2: Mul$media*im*Netz* (Online*Mul$media)* · 3 27.10.2014 HTML5)&)JavaScript Introduc>on) 4 03.11.2014 Web)Interac>vity:)Drag)&)Drop)with)HTML5) 5 10.11.2014 jQuery:)DOM Traversal)and)Manipulaon,)](https://reader033.fdocuments.in/reader033/viewer/2022050414/5f8b2b7313e2b132c7086b5a/html5/thumbnails/2.jpg)
Organiza$on: Slides
• Slides for the tutorial (HF) in English from now on • consistent with lecture...
Ludwig-‐Maximilians-‐Universität München Mul>media im Netz WS 2014/15 -‐ Übung 2 -‐ 2
![Page 3: Mul$media*im*Netz* (Online*Mul$media)* · 3 27.10.2014 HTML5)&)JavaScript Introduc>on) 4 03.11.2014 Web)Interac>vity:)Drag)&)Drop)with)HTML5) 5 10.11.2014 jQuery:)DOM Traversal)and)Manipulaon,)](https://reader033.fdocuments.in/reader033/viewer/2022050414/5f8b2b7313e2b132c7086b5a/html5/thumbnails/3.jpg)
Organiza$on: Topics # Date Topic
2 20.10.2014 Database access, MySQL, PHP
3 27.10.2014 HTML5 & JavaScript Introduc>on
4 03.11.2014 Web Interac>vity: Drag & Drop with HTML5
5 10.11.2014 jQuery: DOM Traversal and Manipula>on, jQuery UI
6 17.11.2014 jQuery: AJAX with PHP backend
7 24.11.2014 NodeJS: Introduc>on, sta>c web content
8 01.12.2014 NodeJS: Express, RESTful Web-‐Apps
9 08.12.2014 Excursus: Google Charts, Google Maps, Design Pagerns
10 15.12.2014 Mashups with a mul>tude of technologies
-‐-‐ 22.12.2014 Christmas break / programming consulta>ons
11 12.01.2014 Web apps with offline storage
12 19.01.2014 Ques>ons
13 26.01.2014 Buffer Ludwig-‐Maximilians-‐Universität München Mul>media im Netz WS 2014/15 -‐ Übung 2 -‐ 3
![Page 4: Mul$media*im*Netz* (Online*Mul$media)* · 3 27.10.2014 HTML5)&)JavaScript Introduc>on) 4 03.11.2014 Web)Interac>vity:)Drag)&)Drop)with)HTML5) 5 10.11.2014 jQuery:)DOM Traversal)and)Manipulaon,)](https://reader033.fdocuments.in/reader033/viewer/2022050414/5f8b2b7313e2b132c7086b5a/html5/thumbnails/4.jpg)
PHP & MySQL
• Mul>ple func>ons and APIs available for PHP to work with databases: – mysql („Deprecated“ since PHP 5.5.0) – mysqli (i is for „improved“) – PDO (PHP Data Objects)
• „mysql“ is s>ll supported for older PHP versions • It is highly recommendable to use mysqli or PDO
Ludwig-‐Maximilians-‐Universität München Mul>media im Netz WS 2014/15 -‐ Übung 2 -‐ 4
![Page 5: Mul$media*im*Netz* (Online*Mul$media)* · 3 27.10.2014 HTML5)&)JavaScript Introduc>on) 4 03.11.2014 Web)Interac>vity:)Drag)&)Drop)with)HTML5) 5 10.11.2014 jQuery:)DOM Traversal)and)Manipulaon,)](https://reader033.fdocuments.in/reader033/viewer/2022050414/5f8b2b7313e2b132c7086b5a/html5/thumbnails/5.jpg)
MySQL at the CIP-‐Pool
• Access “Datenbank Management” here:hgps://tools.rz.ifi.lmu.de/
• Create a new account (required) • Create a new database (required) • Connect to db2.cip.ifi.lmu.de
Ludwig-‐Maximilians-‐Universität München Mul>media im Netz WS 2014/15 -‐ Übung 2 -‐ 5
![Page 6: Mul$media*im*Netz* (Online*Mul$media)* · 3 27.10.2014 HTML5)&)JavaScript Introduc>on) 4 03.11.2014 Web)Interac>vity:)Drag)&)Drop)with)HTML5) 5 10.11.2014 jQuery:)DOM Traversal)and)Manipulaon,)](https://reader033.fdocuments.in/reader033/viewer/2022050414/5f8b2b7313e2b132c7086b5a/html5/thumbnails/6.jpg)
Test Connec$on
<?php $c = mysql_connect("localhost", "user", "password");
if($c){ echo "Connection to database has been established."; } else { echo "Could not connect to database"; }
?>
Ludwig-‐Maximilians-‐Universität München Mul>media im Netz WS 2014/15 -‐ Übung 2 -‐ 6
![Page 7: Mul$media*im*Netz* (Online*Mul$media)* · 3 27.10.2014 HTML5)&)JavaScript Introduc>on) 4 03.11.2014 Web)Interac>vity:)Drag)&)Drop)with)HTML5) 5 10.11.2014 jQuery:)DOM Traversal)and)Manipulaon,)](https://reader033.fdocuments.in/reader033/viewer/2022050414/5f8b2b7313e2b132c7086b5a/html5/thumbnails/7.jpg)
Mysql (I)
• Establish connec>on $c = mysql_connect("localhost", "user", "password");
• Create database $query = "CREATE DATABASE mydb"; mysql_query($query, $c);
• Select database for further calls mysql_select_db("mydb“);
• Create table $query = "CREATE TABLE Personen(Name CHAR(30))"; mysql_query($query, $c);
• Close connec>on mysql_close($c)
Ludwig-‐Maximilians-‐Universität München Mul>media im Netz WS 2014/15 -‐ Übung 2 -‐ 7
![Page 8: Mul$media*im*Netz* (Online*Mul$media)* · 3 27.10.2014 HTML5)&)JavaScript Introduc>on) 4 03.11.2014 Web)Interac>vity:)Drag)&)Drop)with)HTML5) 5 10.11.2014 jQuery:)DOM Traversal)and)Manipulaon,)](https://reader033.fdocuments.in/reader033/viewer/2022050414/5f8b2b7313e2b132c7086b5a/html5/thumbnails/8.jpg)
Mysql (II)
• Exemplary queries: $query = “SELECT name FROM mydb”; $query = “INSERT INTO mydb VALUES ('$name')”; $query = “UPDATE mydb SET name='$name' WHERE pId=2”;
• Further informa>on: hgp://dev.mysql.com/doc/
• PHP-‐statement for a MySQL Query $results = mysql_query($query);
• Process the results
mysql_fetch_array($result); mysql_fetch_array($result, MYSQL_ASSOC); mysql_fetch_array($result, MYSQL_NUM);
Ludwig-‐Maximilians-‐Universität München Mul>media im Netz WS 2014/15 -‐ Übung 2 -‐ 8
![Page 9: Mul$media*im*Netz* (Online*Mul$media)* · 3 27.10.2014 HTML5)&)JavaScript Introduc>on) 4 03.11.2014 Web)Interac>vity:)Drag)&)Drop)with)HTML5) 5 10.11.2014 jQuery:)DOM Traversal)and)Manipulaon,)](https://reader033.fdocuments.in/reader033/viewer/2022050414/5f8b2b7313e2b132c7086b5a/html5/thumbnails/9.jpg)
Mysqli
• Offers two interfaces – procedural – object-‐oriented
• Supports „prepared“ statements (recommendable) • Supports mul>ple statements within one query • Supports transac>ons • Improved debugging tools
Ludwig-‐Maximilians-‐Universität München Mul>media im Netz WS 2014/15 -‐ Übung 2 -‐ 9
![Page 10: Mul$media*im*Netz* (Online*Mul$media)* · 3 27.10.2014 HTML5)&)JavaScript Introduc>on) 4 03.11.2014 Web)Interac>vity:)Drag)&)Drop)with)HTML5) 5 10.11.2014 jQuery:)DOM Traversal)and)Manipulaon,)](https://reader033.fdocuments.in/reader033/viewer/2022050414/5f8b2b7313e2b132c7086b5a/html5/thumbnails/10.jpg)
Mysqli (procedural)
• Establish connec>on $c = mysqli_connect("localhost", "user", "password", "mydb");
• Select database mysqli_select_db("mydb“);
• Close connec>on mysqli_close($c)
• PHP statement for MySQL query $results = mysqli_query($c, $query);
• Process the results:
mysqli_fetch_array($result); mysqli_fetch_array($result, MYSQLI_NUM); mysqli_fetch_array($result, MYSQLI_ASSOC);
Ludwig-‐Maximilians-‐Universität München Mul>media im Netz WS 2014/15 -‐ Übung 2 -‐ 10
![Page 11: Mul$media*im*Netz* (Online*Mul$media)* · 3 27.10.2014 HTML5)&)JavaScript Introduc>on) 4 03.11.2014 Web)Interac>vity:)Drag)&)Drop)with)HTML5) 5 10.11.2014 jQuery:)DOM Traversal)and)Manipulaon,)](https://reader033.fdocuments.in/reader033/viewer/2022050414/5f8b2b7313e2b132c7086b5a/html5/thumbnails/11.jpg)
Object Oriented Programming in PHP (I)
• OOP paradigms / concept – classes – objects
• PHP class signature: <?php class classMMN{
//put members and methods here
} ?>
Ludwig-‐Maximilians-‐Universität München Mul>media im Netz WS 2014/15 -‐ Übung 2 -‐
classMMN.php
11
![Page 12: Mul$media*im*Netz* (Online*Mul$media)* · 3 27.10.2014 HTML5)&)JavaScript Introduc>on) 4 03.11.2014 Web)Interac>vity:)Drag)&)Drop)with)HTML5) 5 10.11.2014 jQuery:)DOM Traversal)and)Manipulaon,)](https://reader033.fdocuments.in/reader033/viewer/2022050414/5f8b2b7313e2b132c7086b5a/html5/thumbnails/12.jpg)
Object Oriented Programming in PHP (II)
Define member variables of a class:
<?php class classMMN{ var $name = "Multimedia im Netz"; var $semester = "Wintersemester 2014/15"; var $professor = "Prof. Dr. Heinrich Hussmann"; var $termin = "Donnerstag: 10-‐13 Uhr"; } ?>
Ludwig-‐Maximilians-‐Universität München Mul>media im Netz WS 2014/15 -‐ Übung 2 -‐
classMMN.php
12
![Page 13: Mul$media*im*Netz* (Online*Mul$media)* · 3 27.10.2014 HTML5)&)JavaScript Introduc>on) 4 03.11.2014 Web)Interac>vity:)Drag)&)Drop)with)HTML5) 5 10.11.2014 jQuery:)DOM Traversal)and)Manipulaon,)](https://reader033.fdocuments.in/reader033/viewer/2022050414/5f8b2b7313e2b132c7086b5a/html5/thumbnails/13.jpg)
Object Oriented Programming in PHP (III)
• Impor>ng and instan>a>ng a class <?php require_once("classMMN.php"); $mmn = new classMMN(); ?>
• Object access echo "Veranstaltung: " . $mmn-‐>name . "</br>"; echo "Semester: " . $mmn-‐>semester . "</br>"; echo "Professor: " . $mmn-‐>professor . "</br>";
Ludwig-‐Maximilians-‐Universität München Mul>media im Netz WS 2014/15 -‐ Übung 2 -‐
mmn.php
mmn.php (Fortsetzung)
13
![Page 14: Mul$media*im*Netz* (Online*Mul$media)* · 3 27.10.2014 HTML5)&)JavaScript Introduc>on) 4 03.11.2014 Web)Interac>vity:)Drag)&)Drop)with)HTML5) 5 10.11.2014 jQuery:)DOM Traversal)and)Manipulaon,)](https://reader033.fdocuments.in/reader033/viewer/2022050414/5f8b2b7313e2b132c7086b5a/html5/thumbnails/14.jpg)
Object Oriented Programming in PHP (III)
• Add methods: <?php class classMMN{ var $name = "Multimedia im Netz"; var $semester = "Wintersemester 2014/15"; var $professor = "Prof. Dr. Heinrich Hussmann"; var $termin = "Donnerstag: 10-‐13 Uhr";
function setTermin(var $termin){ $this-‐>termin = $termin; }
function getTermin(){ return $this-‐>termin; } } ?>
Ludwig-‐Maximilians-‐Universität München Mul>media im Netz WS 2014/15 -‐ Übung 2 -‐
classMMN.php
14
![Page 15: Mul$media*im*Netz* (Online*Mul$media)* · 3 27.10.2014 HTML5)&)JavaScript Introduc>on) 4 03.11.2014 Web)Interac>vity:)Drag)&)Drop)with)HTML5) 5 10.11.2014 jQuery:)DOM Traversal)and)Manipulaon,)](https://reader033.fdocuments.in/reader033/viewer/2022050414/5f8b2b7313e2b132c7086b5a/html5/thumbnails/15.jpg)
Object Oriented Programming in PHP (IV)
• Call methods <?php $mmn-‐>setTermin("Mittwoch: 10-‐13 Uhr"); echo $mmn-‐>getTermin(); ?>
Ludwig-‐Maximilians-‐Universität München Mul>media im Netz WS 2014/15 -‐ Übung 2 -‐
mmn.php
15
![Page 16: Mul$media*im*Netz* (Online*Mul$media)* · 3 27.10.2014 HTML5)&)JavaScript Introduc>on) 4 03.11.2014 Web)Interac>vity:)Drag)&)Drop)with)HTML5) 5 10.11.2014 jQuery:)DOM Traversal)and)Manipulaon,)](https://reader033.fdocuments.in/reader033/viewer/2022050414/5f8b2b7313e2b132c7086b5a/html5/thumbnails/16.jpg)
Object Oriented Programming in PHP (V)
• Constructor: PHP‘s constructors are methods with a special name: __construct(); function __construct($name, $sem, $prof, $termin){ $this-‐>name = $name; $this-‐>semester = $semester; $this-‐>professor = $professor; $this-‐>termin = $termin; }
• Use constructor:
$mmn = new classMMN("MMI2", "WS 2014/15", "Prof. Dr. Butz", "Freitag: 14-‐16 Uhr");
Ludwig-‐Maximilians-‐Universität München Mul>media im Netz WS 2014/15 -‐ Übung 2 -‐ 16
![Page 17: Mul$media*im*Netz* (Online*Mul$media)* · 3 27.10.2014 HTML5)&)JavaScript Introduc>on) 4 03.11.2014 Web)Interac>vity:)Drag)&)Drop)with)HTML5) 5 10.11.2014 jQuery:)DOM Traversal)and)Manipulaon,)](https://reader033.fdocuments.in/reader033/viewer/2022050414/5f8b2b7313e2b132c7086b5a/html5/thumbnails/17.jpg)
Mysqli (object oriented)
• Establish connec>on $c = new mysqli("localhost", "root", "", "mydb");
• PHP statement for MySQL query $results = $c->query($query);
• Process the results $results->fetch_assoc(); $results->fetch_row(); $results->fetch_all(MYSQLI_BOTH); $results->fetch_all(MYSQLI_ASSOC); $results->fetch_all(MYSQLI_NUM);
• Close the connec>on $c->close();
Ludwig-‐Maximilians-‐Universität München Mul>media im Netz WS 2014/15 -‐ Übung 2 -‐ 17
![Page 18: Mul$media*im*Netz* (Online*Mul$media)* · 3 27.10.2014 HTML5)&)JavaScript Introduc>on) 4 03.11.2014 Web)Interac>vity:)Drag)&)Drop)with)HTML5) 5 10.11.2014 jQuery:)DOM Traversal)and)Manipulaon,)](https://reader033.fdocuments.in/reader033/viewer/2022050414/5f8b2b7313e2b132c7086b5a/html5/thumbnails/18.jpg)
Mysqli: Prepared Statements (I)
• Separate structure and data through the use of wildcards. In the query we use „?“ as wildcards
• Advantages:
– You can reuse the query with different parameters – More secure (cf. SQL Injec>ons)
• How to do it: – „Prepare“: Prepare the query. The template is checked for errors an. – „Bind“: Bind the parameters to the wildcards – „Execute“: The query is executed with the passes parameters
Ludwig-‐Maximilians-‐Universität München Mul>media im Netz WS 2014/15 -‐ Übung 2 -‐ 18
![Page 19: Mul$media*im*Netz* (Online*Mul$media)* · 3 27.10.2014 HTML5)&)JavaScript Introduc>on) 4 03.11.2014 Web)Interac>vity:)Drag)&)Drop)with)HTML5) 5 10.11.2014 jQuery:)DOM Traversal)and)Manipulaon,)](https://reader033.fdocuments.in/reader033/viewer/2022050414/5f8b2b7313e2b132c7086b5a/html5/thumbnails/19.jpg)
Mysqli: Prepared Statements (II)
• Query with wildcards $q = "SELECT Nachname FROM myDB WHERE Vorname=?";
• Prepare the query $query = $c-‐>prepare($q);
• Bind the parameters $name = "Isabell"; $query-‐>bind_param("s", $name);
• Execute the query $query-‐>execute();
Ludwig-‐Maximilians-‐Universität München Mul>media im Netz WS 2014/15 -‐ Übung 2 -‐ 19
![Page 20: Mul$media*im*Netz* (Online*Mul$media)* · 3 27.10.2014 HTML5)&)JavaScript Introduc>on) 4 03.11.2014 Web)Interac>vity:)Drag)&)Drop)with)HTML5) 5 10.11.2014 jQuery:)DOM Traversal)and)Manipulaon,)](https://reader033.fdocuments.in/reader033/viewer/2022050414/5f8b2b7313e2b132c7086b5a/html5/thumbnails/20.jpg)
Mysqli: Prepared Statements (III)
• Bind result columns to variables $query-‐>bind_result($nachname);
• Fetch results $query-‐>fetch()
Ludwig-‐Maximilians-‐Universität München Mul>media im Netz WS 2014/15 -‐ Übung 2 -‐ 20
![Page 21: Mul$media*im*Netz* (Online*Mul$media)* · 3 27.10.2014 HTML5)&)JavaScript Introduc>on) 4 03.11.2014 Web)Interac>vity:)Drag)&)Drop)with)HTML5) 5 10.11.2014 jQuery:)DOM Traversal)and)Manipulaon,)](https://reader033.fdocuments.in/reader033/viewer/2022050414/5f8b2b7313e2b132c7086b5a/html5/thumbnails/21.jpg)
Example: Prepared Statements
<?php include_once 'db_info.php';
$c = new mysqli($host, $user, $password, $db); $query = $c-‐>prepare("SELECT Nachname FROM Uebung02 WHERE Vorname=?");
$name = "Isabell"; $query-‐>bind_param("s", $name); $query-‐>execute(); $query-‐>bind_result($nachname);
while($query-‐>fetch()){ echo $nachname; echo "<br/>"; }
?>
Ludwig-‐Maximilians-‐Universität München Mul>media im Netz WS 2014/15 -‐ Übung 2 -‐ 21
![Page 22: Mul$media*im*Netz* (Online*Mul$media)* · 3 27.10.2014 HTML5)&)JavaScript Introduc>on) 4 03.11.2014 Web)Interac>vity:)Drag)&)Drop)with)HTML5) 5 10.11.2014 jQuery:)DOM Traversal)and)Manipulaon,)](https://reader033.fdocuments.in/reader033/viewer/2022050414/5f8b2b7313e2b132c7086b5a/html5/thumbnails/22.jpg)
Cryptographic Hashes
• md5() – Message Digest Algorithm5 – generates a 128bit hash value – fast, but vulnerable
• sha1() – generates a 160bit hash value – used in most (older) SSL cer>ficates (they need to be replaced soon) – fast, but vulnerable
Ludwig-‐Maximilians-‐Universität München Mul>media im Netz WS 2014/15 -‐ Übung 2 -‐ 22
![Page 23: Mul$media*im*Netz* (Online*Mul$media)* · 3 27.10.2014 HTML5)&)JavaScript Introduc>on) 4 03.11.2014 Web)Interac>vity:)Drag)&)Drop)with)HTML5) 5 10.11.2014 jQuery:)DOM Traversal)and)Manipulaon,)](https://reader033.fdocuments.in/reader033/viewer/2022050414/5f8b2b7313e2b132c7086b5a/html5/thumbnails/23.jpg)
Password Hashing in PHP (I)
• PHP has built-‐in password hashing func>ons – password_hash() – password_verify() – ...
• Don‘t store plain text passwords in databases.... Ever ;) • Advantages:
– More secure – easy to use
• Disadvantages: – only available with PHP >= 5.5.0
Ludwig-‐Maximilians-‐Universität München Mul>media im Netz WS 2014/15 -‐ Übung 2 -‐ 23
![Page 24: Mul$media*im*Netz* (Online*Mul$media)* · 3 27.10.2014 HTML5)&)JavaScript Introduc>on) 4 03.11.2014 Web)Interac>vity:)Drag)&)Drop)with)HTML5) 5 10.11.2014 jQuery:)DOM Traversal)and)Manipulaon,)](https://reader033.fdocuments.in/reader033/viewer/2022050414/5f8b2b7313e2b132c7086b5a/html5/thumbnails/24.jpg)
Password Hashing in PHP (II)
• Hashing a password: $pwHash = password_hash("password1234",PASSWORD_DEFAULT);
• Verifying a hash: if(password_verify("password1234",$pwHash)){ echo “Your password is correct"; }
Ludwig-‐Maximilians-‐Universität München Mul>media im Netz WS 2014/15 -‐ Übung 2 -‐ 24
![Page 25: Mul$media*im*Netz* (Online*Mul$media)* · 3 27.10.2014 HTML5)&)JavaScript Introduc>on) 4 03.11.2014 Web)Interac>vity:)Drag)&)Drop)with)HTML5) 5 10.11.2014 jQuery:)DOM Traversal)and)Manipulaon,)](https://reader033.fdocuments.in/reader033/viewer/2022050414/5f8b2b7313e2b132c7086b5a/html5/thumbnails/25.jpg)
Assignment 2
• Thema: Picture Gallery, Authen$ca$on • Due in: 1 Week • Due date: 27.10.2014 12:00
Mul>media im Netz WS 2014/15 -‐ Übung 2 -‐ Ludwig-‐Maximilians-‐Universität München 25
![Page 26: Mul$media*im*Netz* (Online*Mul$media)* · 3 27.10.2014 HTML5)&)JavaScript Introduc>on) 4 03.11.2014 Web)Interac>vity:)Drag)&)Drop)with)HTML5) 5 10.11.2014 jQuery:)DOM Traversal)and)Manipulaon,)](https://reader033.fdocuments.in/reader033/viewer/2022050414/5f8b2b7313e2b132c7086b5a/html5/thumbnails/26.jpg)
Thanks! What are your ques$ons or comments?
Ludwig-‐Maximilians-‐Universität München Mul>media im Netz WS 2014/15 -‐ Übung 2 -‐ 26