Mul$media*im*Netz* (Online*Mul$media)* · 3 27.10.2014 HTML5)&)JavaScript Introduc>on) 4 03.11.2014...

26
Mul$media im Netz (Online Mul$media) Wintersemester 2014/15 Übung 02 (Haup8ach) Mul>media im Netz WS 2014/15 Übung 2 LudwigMaximiliansUniversität München 1

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,)

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,)

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,)

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,)

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,)

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,)

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,)

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,)

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,)

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,)

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,)

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,)

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,)

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,)

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,)

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,)

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,)

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,)

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,)

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,)

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,)

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,)

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,)

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,)

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,)

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,)

Thanks!  What  are  your  ques$ons  or  comments?  

Ludwig-­‐Maximilians-­‐Universität  München   Mul>media  im  Netz  WS  2014/15  -­‐  Übung  2  -­‐  26