5. Server-seitiges Scripting mit PHP

Ähnliche Dokumente
php Hier soll ein Überblick über das Erstellen von php Programmen gegeben werden. Inhaltsverzeichnis 1.Überblick Parameterübergabe...

PHP 4. E i n e K u r z e i n f ü h r u n g. Vortragender: Kevin Bransdor Datum: Folie 1

Programmieren von Webinformationssystemen

PHP Schulung Beginner. Newthinking Store GmbH Manuel Blechschmidt

Internetanbindung von Datenbanken

Einführung in die Scriptsprache PHP

Programmieren von Webinformationssystemen

IT-Zertifikat: Allgemeine Informationstechnologien II PHP

2. Interaktive Web Seiten. action in Formularen. Formular. Superglobale Variablen $ POST, $ GET und $ REQUEST. GET und POST

Multimedia im Netz Wintersemester 2011/12

Web-Programmierung (WPR)

Wolfgang Dehnhardt: JavaScript, VBScript, ASP, Perl, PHP, XML: Scriptsprachen für dynamische Webauftritte, Carl Hanser 2001

EWA PHP Einführung, CMS Prinzipien

Mul$media im Netz (Online Mul$media) Wintersemester 2014/15. Übung 02 (Nebenfach)

FileMaker und PHP Workshop

ASP: Active Server Pages

entweder: zeilenweise fgets() oder: zeichenweise fgetc()

PHP JavaScript Kapitel 9. Java-Script-Objekte und das Event-Modell

Name:... (1 Punkt für jede richtige Antwort, jeweils nur eine Antwort richtig)

Objektorientierung: Klassen und Objekte

Datenbanksysteme SS 2007

Fakultät für Informatik & Wirtschaftsinformatik DB & IS II SS 2015 PHP MVC. Dr. Christian Senger. PHP MVC 1 von 21

1 Einleitung PHP. Hauptgebiete in den PHP genutzt wird. Eigenschaften PHP. Dokumentationen. PHP im Umfeld. Browser

Arrays. PHP JavaScript Kapitel 9

Programmieren 2 (Prof. Hasbargen) Klausur

Java Server Pages (JSP)

Am Anfang war die "normale" Webseite

Inhalt. Vorbemerkungen... 1

Kommunikationsnetze. 7. Das World Wide Web 7.4 Client- vs. Server-basierte Techniken für dynamische Webseiten

PHP und MySQL. Formulare - Datenübertragung mit PHP. Zellescher Weg 12 Willers-Bau A109 Tel

Programmieren der Untersuchung

Der Inhalt dieses Foliensatzes ist nicht klausurrelevent!!! - aber trotzdem interessant ;-)

Dynamische Webseiten

Dynamische Webanwendungen

Skriptsprachen. im Rahmen des Seminars WebEngineering Lehrstuhl Informatik IX - RWTH Aachen - SS 2005 betreut von Eva Giani bei Prof.

PHP-Kurs 1: Einführung und PHP- Grundlagen

Java zur Realisierung von Internetanwendungen

Java - Webapplikationen

PHP Code Konventionen Um einen einheitlichen Code zu generieren, der von jedem gelesen werden kann, müssen folgende Konventionen eingehalten werden.

Webtechnologien Teil 9: Einführung in PHP

Sessions mit PHP. Annabell Langs Sessions in PHP - Annabell Langs 1

Funktionen in PHP 1/7

Einführung in die Skriptsprache PHP

Kapitel 5 Serverseitige Technologien

7. Datenbank-Zugriff. Vorlesung und Übung Dr. Peter Pfahler Institut für Informatik Universität Paderborn. Zum Beispiel aus PHP-Skripten: Client 7-2

Web Visu Tutorial. Hipecs Web Visu. Übersicht

Lösungen der Aufgaben zur Klausurvorbereitung. Aufgabe 1: a) was sagen die folgenden Eigenschaften eines XML-Dokumentes aus? wohlgeformt gültig

DataTables LDAP Service usage Guide

Übung 1 mit C# 6.0 MATTHIAS RONCORONI

PHP Formulare. Stefan Maihack Dipl. Ing. (FH) Datum:

PHP Einsteiger Tutorial Kapitel 4: Ein Kontaktformular in PHP Version 1.0 letzte Änderung:

Python CGI-Skripte erstellen

Multimediale Web-Anwendungen. JavaScript. Einführung. MWA JavaScript-Einführung Dr. E. Schön Sommersemester 2015 Folie 1.

PHP Programmierung. Seminarunterlage. Version 1.02 vom

Kurze Einführung in PHP

Webbasierte Informationssysteme

Dynamik bis zur DB-Interaktion. Marc Schanne. CGI Möglichkeiten

FensterHai. - Integration von eigenen Modulen -

PHP mit Dreamweaver MX bearbeiten 00

Perl-Praxis CGI-Skripte 0-0/22

PHP. Prof. Dr.-Ing. Wolfgang Lehner. Diese Zeile ersetzt man über: Einfügen > Kopf- und

E-Commerce: IT-Werkzeuge. Web-Programmierung. Kapitel 4: Einführung in JavaScript Stand: Übung WS 2014/2015. Benedikt Schumm M.Sc.

<body> <h1>testseite für HTML-Parameter-Übergabe<br>50 Parameter werden übergeben</h1>

Klausurteilnehmer. Wichtige Hinweise. Note: Klausur Informatik Programmierung, Seite 1 von 8 HS OWL, FB 7, Malte Wattenberg.

PHP-Programme werden direkt in den HTML-Code eingebettet und müssen durch spezielle Tags eingeleitet werden:

Swetlana Stickhof. Universität Heidelberg

Clemens H. Cap Bedarf an Zeit, Speicher, Netz und anderen Ressourcen

E-Commerce: IT-Werkzeuge. Web-Programmierung. Kapitel 5: Einführung in PHP Stand: Übung WS 2014/2015. Benedikt Schumm M.Sc.

Variablen - %Hashes Was ist ein Hash? 'Assoziative Arrays'

PHP. Dynamische Webseiten mit PHP - Ein Einstieg in die vermutlich populärste Skriptsprache für das WWW Jörg Kinzebach <joerg@duck.franken.

Internationalisierung von Webseiten

JSP JSTL. JEE Vorlesung Teil 6. Ralf Gitzel

Einleitung JavaServer Pages Erweiterungsmechanismen Beispiel Fazit. JavaServer Pages. Seminar Webprogrammierung WS04/05. Timothy Burk. 6.

Objektorientierte Programmierung

Smarty Templates. von Sebastian Hardt

Sachwortverzeichnis

RIPS. Automatisierte Schwachstellenerkennung in PHP-Software mittels statischer Quellcode-Analyse. BSI Deutscher IT-Sicherheitskongress

Web 2.0 Software-Architekturen

C++-Zusammenfassung. H. Schaudt. August 18, 2005

JavaScript Dynamik auf der Client-Seite

VWA Rhein-Neckar Dipl.-Ing. Thomas Kloepfer. Kommunikation I (Internet) Übung 5. Formulare und mehr

Datenbanken 1. Einführung und Zugänge für die eingesetzten Resourcen. ISWeb - Information Systems & Semantic Web University of Koblenz Landau, Germany

Ein Jahr mit dem. Play! Framework FLAVIA IT. Dmitrij Funkner & Jonas Kilian. Quelle:

Tutorial: HTML Vorlage

Tutorial Job Implementierung

Grundlagen der Informatik 2

PHP-Security. Aleksander Paravac. Aleksander Paravac (GNU/Linux User Group Bamberg/Forchheim) 1 / 27

ASP: Active Server Pages

PHP-Schwachstellen und deren Ausnutzung

Application Note. Anbindung von Kunden-Software an SpiderControl Web Visualisierung

jetzt lerne ich PHP 5 & MySQL 4.1 Der schnelle Einstieg in die objektorientierte

TYPO3 und TypoScript

Applets Belebung von Webseiten. Dipl.-Ing. Wolfgang Beer

Sommersemester 2003 Martin Ellermann Heiko Holtkamp. Interaktive Webseiten mit PHP und MySQL

Web-Programmierung (WPR)

Crashkurs http - CGI/Servlets(JSF) - Viewer

Grundlagen & Hinweise zur Erstellung von serverseitigen Scripts

Existierende Systeme I Bibliotheken & Frameworks

Hochschule Darmstadt Fachbereich Informatik

Algorithmen und Programmierung V WS 10/11 Nachklausur am , Uhr Maximal erreichbare Punktzahl: 80 Erforderliche Punktzahl: 40

Transkript:

5 Vorlesung und Übung Dr. Peter Pfahler Institut für Informatik Universität Paderborn 5 5. Server-seitiges Scripting mit PHP Geschichtlicher Überblick entwickelt 1995 von Rasmus Lerdorf. PHP stand für Personal Home Page Tools, und war ein System, das die Zugriffe auf die Web-Seite Autors protokollierte. Heute bedeutet PHP PHP Hypertext Preprocessor. Rasmus Lerdorf Die aktuelle Version ist PHP 5.2 seit November 2006. 2009 erscheint PHP 5.3 mit name spaces, late static binding und zusätzlichen funktionalen Sprach-Eigenschaften. Stärken sehr große Menge von Funktionen gute Datenbankanbindung Hohe Verfügbarkeit auf Web-Servern 5-2

5.1. Einbettung in HTML SGML-Stil: XML-Stil: ASP-Stil: JavaScript-Stil: <? code?> <?php code?> (empfohlen) <% code %> <script language="php"> code </script> Eingebetteter PHP-Code <html><head> <title> Suchergebnis für "<?php print $anfrage;?>" </title> </head><body> Vergleich zur Perl-Lösung print "<html><head>\n"; print "<title>\n"; print "Suchergebnis für \"$anfrage\"\n"; print "</title>\n"; print "</head><body>\n"; 5-3 Einbinden von Dateien <?php $title = "All about PHP on the Web"; include "header.inc";?> ermöglicht Strukturierung von Web-Anwendungen und Wiederverwendung. Die eingebundene Datei wird im HTML-Modus interpretiert. Die Variablen der einbindenden Datei sind in der eingebundenen Datei verfügbar. header.inc könnte also so aussehen: <html> <head> <title><?php echo $title;?></title> </head> 5-4

5.2. Sprachelemente von PHP PHP hat eine Java- bzw. C-artige Syntax <?php for ($loop = 5; $loop < 5; $loop++) { if ($loop < 0) { echo " "; elseif ($loop > 0) { echo "+"; while( $loop) { switch($loop % 2) { case 0: echo "Even<br>\n"; break; case 1: echo "Odd<br>\n"; break;?> 5-5 Variablen Die Namen von PHP-Variablen beginnen mit einem $: $counter $first_name Sie werden nicht explizit definiert und sind dynamisch typisiert. Dynamische Variablen in PHP bekommen ihren Namen aus String-wertigen Variablen: $var_name = "counter"; $$var_name = 1000; echo $$var_name; echo $counter; Beispiel: Hash-Keys in initialisierte Variablen wandeln: foreach ($myarray as $name => $value) { $$name = $value; 5-6

Gültigkeit von Variablen Globale Variablen: gültig auch in inkludierten Dateien: $title = "Skriptsprachen 2006"; include "header.inc"; Lokale Variablen: Innerhalb von Funktionen. Zugriff auf globale Variablen mit global: function print_title() { global $title; $tag = "<title>". $title. "</title>"; echo $tag; Statische Variablen: lokal definierte Variablen mit globaler Lebensdauer: function next_id() { static $id = 1; return ++$id; 5-7 Grundtypen Zahlen Literale: 1234, 0377, 0xff, 5.3, 10e2 Zeichenketten Literale: "abc", 'abc' Wahrheitswerte Literale: true, false Automatische Typkonvertierung echo 5 + "1.5" + "10e2"; // ergibt 1006.5 echo 5. "1.5". "10e2"; // ergibt "51.510e2" Explizite Typkonvertierung durch cast-operatoren $var = (int) "123"; Andere cast-operatoren: (real), (string), (array), (object) 5-8

Arrays Indiziert oder assoziativ. Auch beliebig gemischt. Indiziert $a[0] = 1; $a[1] = "foo"; $a[] = 1.57; Assoziativ $catch_it['cat'] = "mouse"; $catch_it['dog'] = "cat"; foreach ($catch_it as $key => $value) { echo "catch_it[$key] = $value<br>\n"; // Oder: while (list($key, $value) = each($catch_it)) //... 5-9 Funktionen für Arrays Array-Erzeugung $a = array("jan", "Feb", "Mar"); $a enthält die angegebenen Elemente $a = range(1, 100); $a enthält die Zahlen von 1 bis 100 Array-Durchlauf count($a) oder sizeof($a) liefert die Anzahl der Elemente in $a each($a) liefert das nächste Schlüssel/Wert-Paar von $a array_walkeach($a, funcname) wendet Funktion auf alle Array-Elemente an 5-10

Arrays Sortieren von Arrays sort($a) sortiert $a usort($a, cmp_funcname) sortiert $a mit Vergleichsfunktion ksort($a) sortiert $a nach Schlüsseln shuffle($a) mischt $a zufällig durch 5-11 Funktionen für Strings substr $s = substr($str, 4, 2); $s enthält das fünfte und sechste Zeichen von $str explode $a = explode(" ", $str); trennt $str an den " "-Zeichen auf. split $a = split( regexpr, $str); trennt $str an durch regexpr beschriebenen Stellen. htmlspecialchars $s = htmlspecialchars("mäßiger <Erfolg>"); erzeugt "Mäßiger <Erfolg>" htmlentities $s = htmlentities("mäßig < völlig"); erzeugt "Mäßig < völlig" strcmp strcmp($s1, $s2) String-Vergleich: liefert Zahl <, =, > 0 für $s1 <, =, > $s2 5-12

Reguläre Ausdrücke POSIX-Stil oder Perl-Stil für die regulären Ausdrücke. Im Perl-Stil: echo preg_replace('/will be ([\w\s]+).*/', 'has been \1!', 'This string will be modified.'); liefert This string has been modified! Weitere Funktionen des Perl-Stils preg_match( pattern, subject) preg_match_all( pattern, subject, resultarray) preg_split( pattern, subject) 5-13 Benutzer-definierte Funktionen Definition function soundcheck($one, $two, $three) { return "Test, $one, $two, $three"; Referenz-Parameter function inc_counter(&$count) { $count++; Aufruf soundcheck("eins", "Zwei", "Tschschsch"); inc_counter($i); Default-Werte für Parameter function subject($title="no Subject") { return "<h1>$title</h1>"; 5-14

Objektorientierung class Cart { var $items; function add_item($artnr, $num) { $this >items[$artnr] += $num; Vererbung class NamedCart extends Cart { var $owner; function NamedCart($name) { $this >owner = $name; Anwendung $c = new NamedCart("MeinEinkauf"); $c >add_item(1223, 2); 5-15 Ein- und Ausgabe <html> <head> <title>www wbs Processor Information</title> </head> <body> <h1>www wbs Processor Information</h1> <pre> <?php readfile("/proc/cpuinfo");?> </pre> </body> </html> 5-16

Ein- und Ausgabe Lesen einer Datei $file = fopen("sample.txt", "r"); while (!feof($file)) { echo fgets($file, 1024), "<br>"; fclose($file); Lesen einer Webseite $file = fopen("http://www.upb.de/index.html", "r"); fclose($file); Schreiben einer Datei $file = fopen("agent.log", "a"); fputs($file, $HTTP_USER_AGENT. "\n"); fclose($file); 5-17 CGI-Variablen PHP speichert die Daten einer HTTP-Anfrage in globalen assoziativen Arrays: GET-Variablen in $_GET POST-Variablen in $_POST Cookie-Variablen in $_COOKIE <form method="post" action="test.php"> <input type=text name="user"> <input type=submit value="ok"> </form> belegt das Array-Element $_POST['user']mit dem eingegebenen Formulartext. Diese speziellen Arrays sind überall automatisch als globale Variablen verfügbar. Sie müssen nicht als global deklariert werden ( superglobals ). Array $_REQUEST umfasst alle diese CGI-Variablen, ist aber unsicher, da z.b. einfach über den Query-String zu manipulieren. 5-18

Automatisches Maskieren von Sonderzeichen Standardmäßig maskiert PHP in Anfragedaten die Zeichen ", ' und \ mit einem Backslash \. Damit können diese Daten z.b. in Datenbankabfragen direkt eingesetzt werden. Diese Maskierung muss evtl. rückgängig gemacht werden: <form method="post" action="test.php"> <input type=text name="user" value="it's tricky\smart"> <input type=submit value="ok"> </form> PHP-Skript test.php: <?php $text = $_POST['user']; echo $text; // Ausgabe: It\'s tricky\\smart if (get_magic_quotes_gpc()) // autom. Maskieren an? $text = stripslashes($text); echo $text; // Ausgabe: It's tricky\smart?> Im Bedarfsfall kann die Umkehrfunktion addslashes zum expliziten Maskieren von Daten verwendet werden. 5-19 Projekt: Gästebuch 5-20

Projekt: Gästebuch <html> <head> <title>my Guestbook</title></head> <body> <h1>welcome to my Guestbook</h1> <h2>please write me a little note below</h2> <form action="<?php echo $_SERVER['PHP_SELF']?>" method="post"> <textarea cols=40 rows=5 name="note" wrap=virtual> </textarea> <input type=submit value="send it"> </form> 5-21 Projekt: Gästebuch <?php $fname = "notes.txt"; &, <, > if (isset($_post['note'])) { werden zu $entry = $_POST['note']; & < und > if (get_magic_quotes_gpc()) $entry = stripslashes($entry); $entry = htmlspecialchars($entry); $fp = fopen($fname, "a"); fputs($fp, '<p>'. nl2br($entry). '</p>'); fclose($fp);?> ein <br> vor <h2>the entries so far:</h2> jedes Newline Zeichen <?php readfile($fname);?> </body> </html> 5-22