DVA Praktikum Versuch 1 Gruppe 20 von Yannic Chermette, Tobias Kloastermair und Philipp Kaufman

Ähnliche Dokumente
Entwicklung einer Webseite zur Verwaltung von Prüfungsterminen

Web-basierte Anwendungssysteme PHP Teil 2

1)Login Funktion ohne Datenbank

Übung zur Vorlesung Multimedia im Netz

Abbildung 6-8: Abfolge beim doppelten Abschicken von Formularen

JSP Usereingabe. Inhalt. 1 Zielsetzung. SEW(3.Jg) Unterlagen zu Java Server-Pages Teil 2

Multimedia im Netz Wintersemester 2012/13. Übung 02

APEX Datenverwaltung Wo sind die Daten gerade?

Vorlesung: Web Engineering. Kurs: TINF17A / TINF17B. Datum:

Grundlagen. Wie sind PHP-Dateien aufgebaut?

Funktionen. - sind kleine, meist ausgelagerte Programme bzw. Programmfragmente. - können Werte zurückgeben, z.b. Berechnungen

Entwicklung einer Webseite zur Verwaltung von Prüfungsterminen

Datenbanksysteme SS 2007

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

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

Funktionen in JavaScript

PHP MySQL - myphpadmin Formulardaten in eine Datenbank speichern

Multimedia im Netz Wintersemester 2013/14. Übung 01 (Hauptfach)

Web-Anwendungen Teil 2 PHP kl. Studienprojekt (Praktikum) Winter 2014/ Daniel Fett

Web Visu Tutorial. Hipecs Web Visu. Übersicht

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

Algorithmus. Der genaue Lösungsplan. manchmal trivial. manchmal nicht trivial :-) die auszuführenden Aktionen

Funktionen nur wenn dann

Funktionen in JavaScript

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

Internet-Technologien

Formulare mit HTML. Beispiele. Beispiele & Nutzen. Web. Fach: Klasse: BW2. Datum: (Freitag) Agenda zu HTML und PHP

Python CGI-Skripte erstellen

Klausur am 28. Januar 2005

Projektarbeit Reitvereinmanagementsystem (RVMS) Dokumentation der Anmeldefunktionen

Projekt Online-Shop:

Multimedia im Netz. Übung zur Vorlesung. Ludwig-Maximilians-Universität Wintersemester 2010/2011

<form name= test action= test.php method= get autocomplete= on > </form> <form name= test action= test.php method= post autocomplete= on > </form>

PHP-Skripte in Anwendung mit einer MySQL-Datenbank am Beispiel der Datenbank Personalwesen

Praktikum im Grundstudium

Multimedia im Netz Wintersemester 2011/12

JavaScript clientseitige Programmiersprache zur Dynamisierung von Internetseiten

Java zur Realisierung von Internetanwendungen

VERARBEITUNG VON FORMULARDATEN

Wie schreibe ich ein Blog in eine Datenbank (Sqlite)

aibrowser Ausgabe

Dynamische Webseiten mit PHP. Oder: LAMP - The open way

Powermail Formularbaukasten

Programmsteuerung mit PHP - if/else, elseif,switch

Multimedia im Netz Wintersemester 2013/14. Übung 10 (Nebenfach)

W7 Projekt im Zusammenhang Gästebuch

Funktionen nur wenn dann

"Die HTML-PHP-Schnittstelle -- Ein- und Ausgabe der Daten"

W7 Projekt im Zusammenhang Gästebuch

Praktikum im Grundstudium

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

PHP, Ajax und JavaScript

Programmieren 2 (Prof. Hasbargen) Klausur

Embedded Webserver in Forth

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

PHP Schulung Beginner. Newthinking Store GmbH Manuel Blechschmidt

Einführung in die Scriptsprache PHP

Die Datenbank und der Strukturentwurf wurden vorher mit phpmyadmin erzeugt.

Dynamische Stichwortlisten

Mul$media im Netz Wintersemester 2014/15. Übung 01 (Haup8ach)

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

Ablauf Unit2. Walkthrough

EWS, WS 2016/17, Pfahler O-1

Perl-Praxis. CGI-Skripte. Madis Rumming, Jan Krüger.

Ereignisse Auf Benutzereingaben reagieren

Stand und Ausblick

Ablauf. Wichtige Termine. Vertiefendes Übungsprojekt - SQL II

HTML Scripting. Informatik 1 für Nebenfachstudierende Grundmodul. Kai-Steffen Hielscher Folienversion: 06. Dezember 2017

Funktionen in PHP 1/7

Multimedia im Netz Wintersemester 2013/14. Übung 01 (Nebenfach)

Abbildung : Aufruf des Wikis (Server: Interner Web-Server HTTPD auf Port 8080)

Einrichtung Secure-FTP

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

SSO-Schnittstelle. Inhalt: Beschreibung der Single Sign-On (SSO) Schnittstelle. NetSlave GmbH Simon-Dach-Straße 12 D Berlin

for ($i=1 ;$i<=25 ;$i++) { echo "$i "; }?> <br> <a href=" zur Index-Seite</a> </body> </html>

Schiller-Gymnasium Hof

Beitragseinzüge mit SPG-Verein - Anleitung -

1)Einfache Ausgabe und Abfragen in PHP durchführen

Kurze Einführung in PHP

Studienarbeit Bildergalerie


Partner-ID in eigenen Seiten verwenden

MySQL, Java und einiges mehr

Formular mit Radio-Buttons

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

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

HTML Formulare. Benutzerschnittstelle für interaktive Webseiten

IT-Zertifikat: Allgemeine Informationstechnologien II PHP

Es wird eine MySQL Datenbank benötigt, es wird die Tabelle SB_Musikmanager erstellt.

Ablauf Web-Blaster Eine exemplarische Darstellung des Ablaufs des Web-Blasters

JavaScript und PHP-Merkhilfe

Klausur im Modul: Softwaretechnik (SWT) - WEB

Index/Schlüssel. 0 Montag. 1 Dienstag. 2 Mittwoch. 3 Donnerstag. 4 Freitag. 5 Samstag. 6 Sonntag

Formulare. Definition. Definition & Beispiele P-IT. Fach: Klasse: TD1. Datum: (Freitag) Agenda zu HTML und PHP

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

Entwicklung einer Suchmaschine mit dem Internet Information Server

Dateneingabe über ein HTML-Formular in eine Datenbank:

Erste Java-Programme (Scopes und Rekursion)

Anleitung zur Konfiguration des CL-Webservers

Transkript:

DVA Praktikum Versuch 1 Gruppe 20 von Yannic Chermette, Tobias Kloastermair und Philipp Kaufman Aufgabenstellung: Realisieren Sie mit PHP : einen Taschenrechner einen Bankautomat einen Linkcrawler Herangehensweise(Taschenrechner): Als erster Schritt wurde eine neue Datei(taschenrechner.php) mit Gedit erstellt. Im zweiten Schritt wurde mit Hilfe von Html die Oberfläche erstellt, sie besteht aus einer Form,die einen Select(zur Auswahl des Rechenzeichens), 2 Inputfeldern(Zahleingabe)und einen Button für die Berechnung(eigentlich absenden der Eingaben an POST) besitzt.

Im dritten schritt wurde die logik des Taschenrechners mit PHP realisiert. Wenn der Button gedrückt wird, werden die Inhalte der Inputfelder(+Rechenzeichen) in die POST Variable übertragen und können somit ausgelesen und verarbeitet werden werden. Zunächst wird überprüft ob Zahlen eingegeben wurden, danach wird mit einem Switch die richtige Rechenart anhand des Rechenzeichens bestimmt und die Berechnung in $ergebnis gespeichert. Zum Schluss wird die gesamte Rechenaufgabe mit Ergebnis angezeigt (über echo + String).

Bankautomat: Der Bankautomat besteht aus einer HTML-Form, welche die Benutzereingaben verarbeitet. Mögliche Eingaben sind die Kontonummer, ein Betrag sowie eine Operation (Ein- bzw. Auszahlung) welche auszuführen ist. Form zur Eingabe der Kontonummer sowie eines Betrages Source-Code der Form Nach Eingabe der Kontodaten sowie eines Betrages und Auswahl einer Operation wird der Nutzer nach Absenden des Formulares auf eine weitere Seite geleitet, welche verschiedenen Erfolgs- bzw. Fehlermeldungen bereithält. Wurde kein Konto mit dieser Kontonummer gefunden oder reicht das Guthaben eines Kontos nicht aus, so wird eine entsprechende Meldung angezeigt; ansonsten erscheint eine Erfolgsmeldung.

Die verschiedenen Konten werden mit ihrer Kontonummer sowie dem aktuellen Guthaben in einer MySQL-Tabelle gespeichert. Diese ist simpel aufgebaut: ID, Kontonummer sowie Guthaben. Aufbau der Tabelle Source Code der Antwort-Seite nach Absenden des Formulares Hier wird zuerst abgefragt, ob das Formular bereits abgeschickt wurde, ist dies nicht der Fall erfolgt keinerlei Ausgabe. Nun wird unterschieden zwischen einer Auszahlung und einer Einzahlung. Im Falle einer Einzahlung wird der angegebene Betrag dem angegebenen Konto gutgeschrieben und anschliessend der neue Kontostand ausgegeben. Bei einer Auszahlung wird zuerst überprüft, ob das Konto über ausreichend Deckung verfügt um den gewünschten Betrag auszuzahlen. Ist dies nicht der Fall, wird eine entsprechende Fehlermeldung ausgegeben. Reicht das Guthaben aus, wird abgebucht und der neue Kontostand wird angezeigt.

Einfacher Webcrawler Was ist ein Webcrawler? Ein Webcrawler ist ein kleines Tool mit dem man Webseiten aufrufen und nach bestimmten Eigenschaften filtern kann. Außerdem filtern die meisten Webcrawler noch die Links von einer Webseite und führt die Analyse auch bei diesen Unterseiten bzw. verlinkten Seiten aus. Bekanntes Beispiel Der bekannteste Webcrawler ist der berühmte Google Crawler. Dieser holt sich den Content von Webseiten und wertet diesen Inhalt für die Suchmaschinenpositionen für bestimmte Keywörter aus. Wie funktioniert und was kann unser einfacher Webcrawler? Bei unserem Tool kann eine Startseite angegeben werden quasi eine Url und es kann eine Tiefe mit angegeben werden. Anhand der Tiefe wird entschieden wie weit die Webseiten analysiert werden. Eine Tiefe 1 gibt an das nur die angegebene Startseite analysiert wird. Eine Tiefe 2 besagt, das auch die Seiten hinter den Links von der Startseite analysiert wird. Sobald man den Startbutton betätigt werden alle Title-Tags von den jeweiligen Webseiten herausgezogen. Der Code index.php Die index.php wird aufgerufen sobald man per Browser den Ordner in dem das Tool abgelegt ist - auf dem Webserver aufruft. In einem einfachen html-formular wird die Informationen von Start-Url und der Tiefe entgegengenommen. Mit einem Klick auf den Startbutton werden die Informationen per Post an die result.php übergeben. <html> <head> <title>versuch 1 - Ein einfacher Webcrawler</title> </head> <body> <h1>ein einfacher Webcrawler</h1> <form action="result.php" method="post"> <p> Start-Url<br> <input name="start_url" type="text" size="30"> </p>

</form> </body> </html> result.php <p> Tiefe<br> <select name="deep" size="1"> <?php for($i=1;$i<=100;$i++){ echo "<option>".$i."</option>";?> </select> </p> <input type="submit" value="start"> Hier werden die Daten von Post ausgelesen und die benötigten Funktionen werden aus der funktions.php inkludiert. Anschließend wird der eigentliche Crawler-Algorithmus gestartet. Der Rückgabewert ist ein Array und wird mit dem Standart-PHP-Befehl print_r ausgegeben. <?php //include functions include "functions.php"; //get input from form $start_url = $_POST["start_url"]; $deep = $_POST["deep"]; //get content from url echo "<pre>"; print_r(startprocess($start_url, $deep));?>

functions.php In dieser Datei sind die eigentlichen Crawler-Algorithmus-Funktionen. Diese werden im Nachfolgenden im Code beschrieben. getcontentfromurl($url) Hier wird die entgegengenommene URL übergeben und der Content dieser Url wird per Curl geholt und auch zurückgegeben. gettitlebyhtmlcontent($html_content) Der von getcontentfromurl zurückgegebene Content wird hier übergeben und es wird erst überprüft ob es ein Title-Tag gibt. Wenn ja, dann wird eben der Titel zurückgegeben. Falls nein, dann wird no title zurückgegeben. getlinksbyhtmlcontent($html_content) Hier wird wieder der von getcontentfromurl zurückgegebene Inhalt übergeben und die Links werden mit preg_match_all ausgelesen. Für diese Funktion wird ein Regular-Expression-Pattern benötigt. Mit dem Pattern <a.*?href= (.*?) kann man HTML-typische Links ermitteln. Diese werden alle heraus gefiltert und per Array zurückgegeben. convertlink($link, $start_url) Hier wird jeder ausgelesene Link übergeben und konvertiert. Falls nämlich interne Links ausgelesen werden Bsp. /unterseite.html dann wird die Haupturl noch davorgehängt. Das wird gemacht weil Curl ordentliche Links benötigt. startprocess($url, $deep, $title_array = array()) In dieser Funktion der Hauptfunktion werden zunächst die 3 Methoden von oben aufgerufen und die selbe Funktion rekursiv je nach angegebener Tiefe wiederholt nochmal. Zurückgegeben wird das Title-Array von allen aufgerufenen Seiten. <?php function getcontentfromurl($url){ $cl = curl_init(); curl_setopt($cl, CURLOPT_URL, $url); curl_setopt($cl, CURLOPT_RETURNTRANSFER, 1); $content_from_url = curl_exec($cl); curl_close($cl); return $content_from_url; function gettitlebyhtmlcontent($html_content){ if(preg_match("~<title>~", $html_content)){ $first_split_array = preg_split("~<title>~", $html_content); $second_split_array = preg_split("~</title>~", $first_split_array[1]); return $second_split_array[0]; return "no title"; function getlinksbyhtmlcontent($html_content){ $regex=' <a.*?href="(.*?)" ';

preg_match_all($regex,$html_content,$parts); return $parts[1]; function convertlink($link, $start_url){ if(!preg_match('~http://~', $link)){ return $start_url."/".$link; return $link; function startprocess($url, $deep, $title_array = array()){ $content_from_start_url = getcontentfromurl($url); $title_array[] = gettitlebyhtmlcontent($content_from_start_url); $link_array = getlinksbyhtmlcontent($content_from_start_url); if($deep == 1){ return $title_array; else { foreach($link_array as $link){ $title_array = startprocess(convertlink($link, $url), $deep-1, $title_array); return $title_array;?>