Post on 06-Apr-2015
transcript
28.04.2005 1
Webseiten mit PHP, SQL, XML und Webservices
Anhand praktischer Beispiele
28.04.2005 2
Beispiel LoginformularAblauf:
PC Server
Benutzer
1. Wählt Seite2. HTTP-Request
3. Holt HTML-Datei
4. HTTP-Response5. Stellt Seite dar
6. Gibt Daten ein
?
28.04.2005 3
HTTP-Requests
• GET– Daten werden mit URL gesendet z.B.:
http://server.com?x=a&y=b
• POST– Daten werden im Datenteil des Requests
gesendet
• PUT, HEAD, OPTIONS, TRACE, DELETE
28.04.2005 4
Verarbeitung der Daten
Server
HTTPServer
Server
CGI: Common Gateway Interface
DatenDaten
OutputOutput
Moderner: direkte Einbettung der Skripte in die zu erstellende HTML-Datei (SSI, JSP, ASP, PHP)
28.04.2005 5
Login Formular (login.html)
<html> <head><title>Login</title></head> <body> <form action="login.php"> Benutzer: <input type="text" name="user"><br> Passwort: <input type="text" name="pwd"><br> <input type="submit" value="OK"> </form> </body></html>
28.04.2005 6
28.04.2005 7
28.04.2005 8
Login Formular (login.html)
<html> <head><title>Login</title></head> <body> <form action="login.php" method="post"> Benutzer: <input type="text" name="user"><br> Passwort: <input type="text" name="pwd"><br> <input type="submit" value="OK"> </form> </body></html>
28.04.2005 9
28.04.2005 10
login.php
<?phpinfo()?>
28.04.2005 11
MySQL Datenbank
tbl_usr
name pwd
abc cde
create table tbl_usr (name char(80), pwd char(80), primary key(name));insert into tbl_usr values("abc","cde");grant all privileges on *.* to 'testuser'@'localhost' identified by 'testpass' with grant option;
28.04.2005 12
login.php<? $handle=mysql_pconnect("localhost","testuser","testpass") or die ("Connect to DB failed"); $result=mysql_db_query("test","select * from tbl_usr where name='".$_POST["user"]."'") or die ("Select failed"); if ($thisrow=mysql_fetch_row($result)) {?>Willkommen <?echo $_POST["user"]?>! Hier die Benutzerliste<br><? do { echo $thisrow[0], " ", $thisrow[1], "<br>"; } while ($thisrow=mysql_fetch_row($result)); } else echo "Alaaaarm"; mysql_free_result($result);?>
28.04.2005 13
28.04.2005 14
28.04.2005 15
28.04.2005 16
Security
• Abgesehen davon, dass im Beispiel das Passwort nicht berücksichtigt wurde, ist immer zu berücksichtigen:
• Alle Informationen fließen im 'Klartext' über das Netz -> Verschlüsselung für sicherheitskritische Anwendungen
• Variable vor Gebrauch immer validieren
28.04.2005 17
Session
• HTTP ist stateless• Um eine kontinuierliche Benutzerführung
zu erreichen werden daher 'Sessions' verwendet.
• Realisierung meist über Cookies bzw. versteckte Formularfelder
• Entsprechende Funktionalität in PHP vorhanden
28.04.2005 18
Arbeiten mit XML
• Wie normale Textdatei bearbeiten -> mühsam
• Document Object Model
• Mittels XSLT
28.04.2005 19
DOM
<person id="123">
<vorname>hugo</vorname>
<zuname>hallo</zuname>
</person>
Person
id
Vorname
Zuname
123
hugo
halloTraversieren
mitchild()
parent()etc.
28.04.2005 20
XSLT
XMLDokument
XSLTDokument
XSLFODokument
XSLTProzessor('Parser')
ErgebnisXML, HTML,...
28.04.2005 21
WebService mittels nusoap
<?
require('inc/nusoap.php');
$s=new soapclient('http://www.xmethods.net/sd/2001/TemperatureService.wsdl','wsdl');
$zipW2E='94203:89702:84102:80203:68501:50301:62701:46201';
$arrZip=split(":",$zipW2E);
...
?>
28.04.2005 22
WebService mittels nusoap
for ($i=0; $i<count($arrZip);$i++)
{
$v=$arrZip[$i];
$parameters=array($v);
$res=$s->call('getTemp',$parameters);
echo "<br>".$v." -> ".$res;
}