|
Webanwendungen Alle Fragen zu Installation und Problemlösung (Torrent-Flux, Hostsoftware, Serversoftware) |
|
Themen-Optionen | Ansicht |
26.02.2009, 19:42 | #1 | |||||||||||
Profi
Registriert seit: 12.03.2008
Beitr?ge: 986
Abgegebene Danke: 21
Erhielt 1.079 Danke für 154 Beiträge
Downloads: 32
Uploads: 2 Nachrichten: 123 Renommee-Modifikator:
2349 |
Coden mit PHP Allgemein
PHP ist eine Scriptsprache zur Erstellung dynamischer Websites. Die erste Version entwickelte 1994 Rasmus Lerdorf, der eigentlich nur eine Möglichkeit zur Programmierung seines eigenen Webservers suchte. Er nannte seine kleine Skriptmaschine "Personal Homepage Tools". Die Applikation stellte er ins Internet und ließ die freie Verbreitung zu. So entstand PHP, als Abkürzung zu "Personal Home Page". Später entwickelten die Open Source-Jünger, bekannt für kryptische Abkürzungen, die rekursive Version "PHP HyperText Preprocessor".
Den Weg zum professionellen Programm ging PHP erst 1995. Unter dem Namen PHP / FI (Form Interface) wurde die erste wirklich nutzbare Version veröffentlicht. PHP / FI wird als Version 2 angesehen. Seit dieser Zeit entwickelte sich PHP rasant weiter. Zum einen trug dazu die freie Verfügbarkeit bei. Die ist aber bei ASP (Active Server Pages) und Perl auch gegeben. PHP ist im Gegensatz dazu aber eine Sprache, darren einziger Zweck das Web ist. ASP kommt mit VBScript daher, einem BASIC Derivat, das nur schwer an die Bedürfnisse eines Webservers abgepaßt werden kann. Der größte Nachteil von ASP ist aber die Einschränkung auf Microsoft-Plattformen. Perl hingegen ist zwar plattformübergreifend, wurde aber schon 1986 entwickelt. Zu dieser Zeit war das Internet noch nicht bekannt. Aus der Betrachtung der Nachteile entstand daher eine Skriptsprache, die alle Vorteile der Konkurrenz in sich vereint - PHP. PHP besticht außerdem durch einen fast schon grandiosen Funktionsumfang. Hier kann keine andere Sprache mithalten. Besonders deutlich wird dies bei den Datenbankfunktionen. PHP unterstützt mehr Datenbanken direkt, als die meisten Programmierer überhaupt vom Namen her kennen. Den Erfolg macht nicht zuletzt die gute Unterstützung für die Datenbank MySQL aus, die wie PHP auch als Open Source verfügbar ist. — Grundlagen — Sehr praktisch an PHP ist, dass es in HTML-Dateien eingebettet werden kann. Die Datei läuft dann durch den PHP-Interpreter und wird dann zum Betrachter gschickt. Hier die Möglichkeiten PHP in eine Datei zu schreiben: Code:
<script language=php> .. code .. </script> PHP-Code:
PHP-Code:
.php .php3 .php4 .phtml Aber auch einfache .html Dateien können, falls der Server richtig konfiguriert ist, vom Interpreter verarbeitet werden. Hier eine Beispieldatei (Beispiel 1): HTML-Code:
<html> <body> <? echo "Hallo Welt!"; ?> </body> </html> Und wenn man sich jetzt den Quelltext im Browser anschaut sieht man nur die HTML- und Bodytags, sowie den Satz Hallo Welt! Der Eigentliche PHP Code wird im Quelltext nicht angezeit. Befehle werden in PHP generell mit einem Semikolon ";" abgeschlossen, nur wenn der Befehl alleine zwischen <? und ?> steht, ist dies optional. Bestimmte Befehle sollen nur ausgefürt werden, wenn bestimmte Bedingungen zutreffen. Ein Beispiel wäre, dass beim Eintragen eines neuen Eintrags in einen Newsletter erst überprüft werden soll, ob überhaupt alle Felder ausgefüllt wurden. PHP-Code:
Dabei ist es möglich eine auszuführende Aktion wie oben direkt dahinter zu schreiben, oder aber wenn es mehrere Aktionen sind, sie in Klammern zu schreiben, wie bei Schleifen: PHP-Code:
Die Funktion strlen() liefert die Anzahl der Zeichen innerhalb einer Variable. So liefert strlen("hallo"); die Zahl 5. Die IF Schleife ist also erfüllt, wenn der Inhalt der Variable $Name aus weniger als einem Zeichen besteht. Mit echo wird Text an den Browser übergeben. Der Browser führt diesen Text direkt aus. PHP-Code:
Der PHP Befehl \n hingegen erzeugt lediglich im HTML-Quelltext einen Zeilenumbruch, der vom Browser nicht umgesetzt wird. Er diehnt lediglich dazu, den Quelltext besser lesbar zu machen. PHP-Code:
PHP-Code:
Hier einige Vergleichsmöglichkeiten zweier Variablen PHP-Code:
PHP-Code:
PHP-Code:
PHP-Code:
PHP-Code:
PHP-Code:
Eine möglicher Vergleich wäre dann: PHP-Code:
Eine weitere interessante Funktion von PHP ist das einschließen von Dateien. Nehmen wir einmal an, wir hätten ein größeres Script, in dem ein bestimmter Teil immer wieder vorkommt. So könnt man diesen Teil in eine seperate Datei schreiben und dann einfach an der gewünschten Stelle nur noch darauf verweisen: HTML-Code:
<html> <body> <? include("../hallo.php4");?> </body> </html> PHP-Code:
Es macht übrigens keinen Unterschied, wie man die einzelnen Befehle anordnet. HTML-Code:
<HTML><HEAD><TITLE><? echo $title ?></TITLE>... HTML-Code:
<HTML><HEAD><TITLE><? echo $title /* hier wird eine Variable verwendet */ ?></TITLE>... Kommentare werden mit /* eingeleitet und mit */ beendet. Sie können sich auch über mehrere Zeilen erstrecken. Um lediglich einen Kommentar am Ende einer Zeile einzugeben genügt es, den Kommentar mit // zu beginnen HTML-Code:
<HTML><HEAD><TITLE><? echo $title // hier wird eine Variable verwendet?></TITLE>... Folgende Rechenoperationen stehen in PHP zur Verfügung: Code:
"+" Addition $N+$M "-" Subtraktion $N-$M "*" Multiplikation $N*$M "/" Division $N/$M "%" Reste-Bildung $N%$M23%17 ergibt 6weil 23/17 ergibt 1 Rest 6 "." Verknüpfung $N = "langer";$M = "kurzer";echo $N.$Mergibt "langerkurzer" Dazu kommen noch ein paar Abkürzungen, um dem Programmierer das Leben zu erleichtern: $N++ erhöht $N um 1 ++$N erhöht $N ebenfalls um 1 $N-- erniedrigt $N um 1 --$N erniedrigt $N ebenfalls um 1 PHP-Code:
PHP-Code:
Um komplexe logische Ausdrücke zu erstellen benötigt man auch Vergleichsoperatoren. Die folgende Tabelle gibt einen Überblick: Code:
== Gleichheit === Identität != Ungleichheit > Größer als < Kleiner als >= Größer als oder gleich <= Kleiner als oder gleich Außerdem sollte man nie den Unterschied zwischen = und == verwechseln. PHP-Code:
Gleichheit wird immer mit == geprüft. Man kann die einzelnen Vergleich auch kombinieren: ($i==10) && ($j>=) --> $i gleich 10 und $j größer als 0($i==10) || ($j==0) --> $i gleich 10 oder $j gleich 0 Zufallszahlen werden häufig benötigt, um Vorgänge zu steuern oder Kennwörter zu erzeugen. Mit dem Befehl mt_rand([$min],[$max]) werden Zufallszahlen erzeugt. $var = mt_rand(5,10); Gibt eine Zufallszahl zwischen 5 und 10 aus. Natürlich gibt es in PHP auch logische Operatoren. Code:
$x and $y UND Verknüpfung $x or $y ODER Verknüpfung $x xor $y NOR Verknüpfung (Wahr, wenn beide gleich) $x && $y ebenfalls UND Verknüpfung $x || $y ebenfalls ODER Verknüpfung !$x Negierung (aus FALSE wird TRUE) In jedem Programm kommt man früher oder später in die Verlegenheit, Werte (Daten) speichern zu müssen. Für die Speicherung während der Ausführung eines Scripts stehen Variablen zur Verfügung. Variablen beginnen immer mit $ Zum testen des Scripts hier klicken PHP-Code:
Variablen sind in PHP allerdings nur in dem Kontext gültig, in dem sie definiert wurden. Wenn man eine Variable Auserhalb eines Blocks definiert, ist sie innerhalb eines Blocks nicht verfügbar. PHP-Code:
Der Block wird durch die beiden geschweiften Klammern {} begrenzt. Der Zugriff auf globale Variablen ist dennoch mit dem Schlüsselwort global möglich. PHP-Code:
Da PHP speziell zur Erzeugung von dynamischen Webseiten geschaffen wurde, ist es ein Kinderspiel, Eingaben, die aus HTML-Formularen stammen, zu bearbeiten. Zum testen des Scripts hier klicken HTML-Code:
<HTML><HEAD><Title>Ein einfaches Formular</Title></HEAD><BODY><FORM ACTION="Bsp_variablen3.php4" METHOD=POST><INPUT NAME="beliebigerName"><INPUT TYPE="submit"></FORM></BODY></HTML> PHP-Code:
— Schleifen — Schleifen werden benötigt, um Programmteile mehrfach zu durchlaufen. Neben der Einsparung an Tipparbeit ist vor allem die variable Festlegung der Schleifendurchläufe interessant. Schleifen ohne feste Laufvariable werden durch Bedingungen gesteuert. Der Zustand des logischen Ausdrucks bestimmt, ob die Schleife weiter durchlaufen wird oder nicht. Die häufigste Schleifenart ist die WHILE-Schleife, die in fast jeder Programmiersprache zu finden ist. Die Bedingung wird mit jedem Eintritt in die Schleife getestet. Solange der Ausdruck TRUE zurückgibt, wird die Schleife durchlaufen. Wenn der ausdruck also schon beim Eintritt in die Schleife FALS ergibt, wird die Schleife überhaupt nicht durchlaufen. Zum testen des Scripts hier klicken PHP-Code:
Der Test der Bedingung am Anfang der WHILE-Schleife hat einen wesentlichen Nachteil. Es ist Möglich, dass die Bedingung so wirkt, dass der Inhalt nie durchlaufen wird. Die ist vor allem schecht, wenn der Inhalt zur weiteren verarbeitung benötigt wird. Die Lösung dieses Problems ist die DO...WHILE-Schleife. PHP-Code:
Schleifen lassen sich auch vor dem Ende abbrechen. Zum testen des Scripts hier klicken PHP-Code:
Die vorangegangenen Beispiele dienten vor allem der Erläuterung der Befehle, die feste Vorgabe von unteren und oberen Grenzen ist eigentlich keine typische anwendung von WHILE-Schleifen. In solchen Fällen werden besser FOR-Schleifen eingesetzt. Die Abbruchbedingung ist allerdings auch hier ein normaler logischer Ausdruck. Zusätzlich wird eine numerische Variable mitgeführt - die Zählvariable. Die FOR-Schleife ist komplexer als die bisher vorgestellten Schleifen: FOR(START, BEDINGUNG, ITERATION); Mit START wird die Schleife initialisiert, d.h. normalerweise wird die Variable, die die Schleifendurchläufe zählt, auf den Anfangswert gesetzt. BEDINGUNG gibt die Abbruchbedngung an. In ITERATION wird die Variable, die die Schleifendurchläufe zählt, erhöht bzw. erniedrigt. Zum testen des Scripts hier klicken PHP-Code:
Die Variable in den drei Elementen der FOR-Schleife muss nicht durchgehend verwendet werden. Dies ist zwar im Hinblick auf die lesbarkeit der Skripte zu empfehlen, notwendig ist es jedoch nicht, wie das folgende Beispiel zeigt: Zum testen des Scripts hier klicken PHP-Code:
Alle drei Parameter der FOR-Schleife sind optional. Ohne Iterationsvariable wird die Schleife endlos durchlaufen. In diesem Fall kann die Schleife wieder wie oben schon gesehen mit BREAK verlassen werden. In PHP 4 steht eine neue Form der FOR-Schleife zur Verfügung: FOREACH. Damit wird ein Array durchlaufen. FOREACH(array as emement) {...} Dabei wird das Array array von Anfang bis Ende durchlaufen und bei jedem Schleifendurchlauf wird das aktuelle Element der Variablen array element zugewiesen. Auf Arrays wird in einem späteren Kapitel näher eingegangen. — Fallunterscheidung — Die Syntax des Befehls IF lehnt sich an die Programmiersprache C an. Entsprechend knapp fällt die Schreibweise aus: PHP-Code:
Zum testen des Scripts hier klicken PHP-Code:
Zum testen des Scripts hier klicken PHP-Code:
Zum testen des Scripts hier klicken PHP-Code:
— Datum- und Zeitfunktionen — Für die Arbeit mit Daten ist oft das aktuelle Datum von großer Bedeutung. Man sollte aber beachten, dass der Server sich immer auf sein eigenes Systemdatum bezieht. Wenn man seine Seiten z.B. in den USA hosten lässt, wird natürlich gendsätzlich zuerst einmal die USA Zeit ausgegeben. Der Befehl DATE formatiert ein Dateum für die Ausgabe. Zum testen des Scripts hier klicken PHP-Code:
Code:
a "am" oder "pm" A "AM" oder "PM" d Tag des Monats mit 2 Stellen und führender Null: "01" bis "31" D Tag der Woche als Abkürzung mit drei Buchstaben: "Fri" F Monat, ausgeschrieben: "January" h Stunde im 12-Stunden-Format: "01" bis "12" H Stunde im 24-Stunden-Format: "00" bis "23" g Stunde im 12-Stunden-Format ohne führende Null: "1" bis "12" G Stunde im 24-Stunden-Format ohne führende Null: "0" bis "23" i Minuten: "00" bis "59" j Tag des Monats ohne führende Null: "1" bis "31" l (kleine "L") Wochentag, voll ausgeschrieben: "Friday" L Boolescher Wert, der bestimmt, ob das Datum in einem Schaltjahr liegt: "0" oder "1" m Monat mit führender Null: "01" bis "12" n Monat ohne führende Null: "1" bis "12" M Monat als Abkürzung: "Jan" s Sekunden mit führender Null: "00" bis "59" S Das Suffix der englischen Ordungszahlen: "th", "nd" usw. t Anzahl der Tage in einem Monat: "28" bis "31" U Sekunden seit Beginn der UNIX-Expoche (01.01.1970) w Numerische Darstellung des Wochentags: "0" (Sonntag) bis "6" (Samstag) Y Vierstellige Ausgabe des Jahres: "1999" oder "2000" y Zeistellige Ausgabe des Jahres: "99" oder "00" z Tag im Jahr: "00" bis "365" Z Differenz zur Zeitzone in Sekunden "-43200" bis "43200" Entspricht -12 bis +12 Std. Zum testen des Scripts hier klicken PHP-Code:
Um einen Zeitstempel für ein bestimmtes Datum zu erhalten verwendet man folgenden Befehl: PHP-Code:
Noch interessanter dürfte der Befehl STRFTIME sein. Der große Vorteil hier ist die Tatsache, dass man die Ausgabe mit SETLOCALE an die sprachlichen Besonderheiten eines Landes anpassen kann. Zum testen des Scripts hier klicken PHP-Code:
Code:
%a Abkürzung des Wochentags: "Mon" %A Voller Name des Wochentags: "Monday" %d Abkürzung des Monats: "Jan" %B Monat, ausgeschrieben: "January" %c Vollständige Datums- und Zeitangabe %d Tag des Monats mit 2 Stellen und führender Null: "01" bis "31" %H Stunde im 24-Stunden-Format: "00" bis "23" %I Stunde im 12-Stunden-Format: "01" bis "12" %j Tag im Jahr: "001" bis "366" %m Monat ohne führende Null: "1" bis "12" %M Minuten als Ziffer: "0" bis "59" %p "am" oder "pm" %S Sekunden als Ziffer: "0" bis "59" %U Wochennummer im Jahr, startet die Zählung am ersten Sonntag %W Wochennummer im Jahr, startet die Zählung am ersten Montag %w Numerische Darstellung des Wochentags: "0" (Sonntag) bis "6" (Samstag) %x Vollständige Datumsangabe %X Vollständige Zeitangabe %y Zeistellige Ausgabe des Jahres: "99" oder "00" %Y Vierstellige Ausgabe des Jahres: "1999" oder "2000" %Z Differenz zur Zeitzone in Sekunden "-43200" bis "43200" Entspricht -12 bis +12 Std. SETLOCALE(category, localID) Der Parameter category wird durch folgende Werte bestimmt: Code:
"LC_ALL" Wirkt sich auf alle weiteren Angaben aus. "LC_COLLATE" Wirkt auf Zeichenkettenvergleiche (ab PHP 4) "LC_CTYPE" Wirkt auf die Zeichensetzung "LCMONETARY" Wirkt auf Währungsfunktionen "LC_NUMERIC" Bestimmt das Dezimaltrennzeichen (ab PHP 4) "_LC_TIME" Wirkt auf Datums- und Zeitfunktionen — Dateien lesen und schreiben — Dateien lesen und schreiben gehört zu den elementaren Vorgängen bei der PHP Programierung. Zum lesen und schreiben werden folgende Befehle verwendet: READFILE Die Funktion READFILE liest eine Datei und sendet den gesamten Inhalt ohne weitere Bearbeitung an die Standardausgabe - dies ist im normalfall der Browser. Ohne weitere Bearbeitung heiß auch, dass die einzelnen Zeilen einfach hintereinander angehängt werden. readfile("Dateiname"); Zum testen des Scripts hier klicken PHP-Code:
Analog funktioniert auch FILE, die gelesene Datei wird aber in einem Array abgelegt. $filearray = file("Dateiname"); FOPEN Hiermit wird eine Datei geöffnet. PHP-Code:
Code:
r nur lesen, begonnen wird am Dateianfang r+ lesen und schreiben, begonnen wird am Dateianfang w nur schreiben, Existiert die Datei, wird ihr Inhalt gelöscht. Existiert sie nicht, wird versucht sie zu erzeugen w+ lesen undschreiben, ansonnsten wie "w" a nur schreiben, begonnen wird am Ende der Datei. Existiert sie nicht, wird sie erstellt a+ lesen und schreiben, ansonsten wie "a" FCLOSE Geöffnete Dateien müssen wieder geschlossen werden, um Systemresourcen zu schonen und anderen Prozessen den Zugriff zu ermöglichen. fclose($datei); FGETS Die Funktion FGETS liest aus einer Datei; die Funktion FPUTS schreibt in die Datei. FGETS liest von der Position des Dateizeigert, bis eines der drei folgenden Ereignisse eintritt: · Die Anzahl der Bytes (Länge), die angegeben wurde, ist erreicht · Ein Zeilenende wurde erreicht · Das Dateiende wurde erreicht PHP-Code:
Zum testen des Scripts hier klicken PHP-Code:
· feof($datei) ist wahr, sobald das Ende der Datei erreicht wird. eof (End Of File) wird negiert (mit dem "!") Schleife läuft, solange EOF nicht erreicht ist. PHP-Code:
· Schließlich muss die Datei mit fclose geschlossen werden Mit FWRITE wird in eine Datei geschrieben PHP-Code:
Zum testen des Scripts hier klicken PHP-Code:
Etwas problematisch ist das gezielte Löschen eine einzelnen Zeile einer Datei. Nur mit der Kombination mehrerer Befehle ist dies möglich. Das folgende Beispiel zeigt die prinzipielle Vorgehensweise: PHP-Code:
Eines der Haupteinsatzgebiete von PHP isd der Online-Zugriff auf Datenbanken. Eine Datenbank enthält Datensätze, die mit einer speziellen Sprache bearbeitet werden können. Zum Beispiel können bestimmte Datensätze ausgelesen werden, neue Datensätze hinzugefügt werden, Datensätze können aktuallisiert oder gelöscht werden. All diese Vorgänge nennt man Abfragen. Weit verbreitet sind sogenannte SQL-Datenbanken, d.h. Datenbanken, die mit der Sprache SQL (Structured Query Language) bearbeitet werden können. PHP kann mit Datenbanken verschiedener Hersteller umgehen, besonders beliebt ist die Datenbank MySQL, da sie relativ schnell und zudem kostenlos ist. Um eine SQL-Abfrage mit PHP auszuführen, muß zuerst die Datenbank geöffnet werden (vergleichbar mit dem Zugriff auf eine Datei aus dem vorherigen Kapitel), dann wird die SQL-Befehlszeile an die Datenbank geschickt, die Antwort der Datenbank wird aufgenommen und schließlich wird die Datenbank wieder geschlossen. SQL-Grundlagen SQL-Datenbanken bestehen aus einer oder mehreren sogenannten Tabellen. Jeder Datensatz der Datenbank ist in genau einer Zeile der Tabelle gespeichert. Tabelle: Kneipen Code:
ID Name Art Note Kommentar 1 Herzogkeller Biergarten 1 Schöner Baumbestand 2 Glenk Biergarten 3 Gute Bratwürste 3 ... ... ... ... Code:
· Auslesen: SELECT · Einfügen: INSERT · Überschreiben: UPDATE · Löschen: DELETE Mit SELECT Name,Art FROM Kneipen; wird der Name und die Art ausgelesen Mit SELCET * FROM Kneipen; wird schließlich die ganze Zeile ausgelesen Die auszulesenden Datensätze können noch weiter spezifiziert werden. SELECT * FROM Kneipen WHERE Note=1; gibt nur die Datensätze aus, die in der Spalte "Note" eine "1" enthalten. Sortieren kann man die Datensätze natürlich auch. PHP-Code:
Neue Datensätze werden folgendermaßen hinzugefügt: PHP-Code:
PHP-Code:
Die obigen SQL-Befehle sollen nun mit PHP verwendet werden. Als Beispiel sollen alle Datensätze der Tabelle "Kneipen" aus der Datenbank "Datenbank1" ausgegeben werden. Zuerst muss eine Verbindung von PHP zum Datenbank-Server hergestellt werden: PHP-Code:
Man kann überprüfen, ob die Verbindung funktioniert: PHP-Code:
PHP-Code:
PHP-Code:
Damit wäre die Datenbank-Abfrage eigentlich beendet. Nun müssen aber die von der Datenbank gelieferten Datensätze noch ausgelesen werden. Der obige Befehl hat die beiden Spalten Name und Art angefordert. Dies werden nun Zeilenweise aus der Variablen $erg ausgelesen: PHP-Code:
PHP-Code:
PHP-Code:
Am Ende empfielt es sich, die Verbindung zur Datenbank zu schließen: PHP-Code:
PHP-Code:
Dies war natürlch nur eine sehr kleiner Teil der Möglichkeiten mit SQL-Datenbanken, der allerdings die grundlegenden Funktionen erklären dürfte. — Funktionen — Ein wichtiger Bestandteil eines jeden Programmiersprache ist die Fähigkeit, mehrere Befehle zu einem einzigen Befehl zusammenzufassen, d.h. neue Funktionen zu definieren. PHP hat diese Fähigkeit selbstverständlich auch. Folgendes Beispiel berechnet aus wievielen Sekunden eine Anzahl von Tagen besteht: Zum testen des Scripts hier klicken PHP-Code:
Oben im Beispiel wird mit function die Funktion definiert. Sie kann nun beliebig oft im Script mit einem beliebigen Wert (z.B. tag(7) ) aufgerufen werden. — .htaccess — Oftmals tut sich für einen Webmaster die Frage auf: Wie kann ich einzelne Dateien oder Ordner vor unerwünschtem Zugriff schützen? Nun, es gibt mehrere Möglichkeiten, wie z.B. CGI-Scripte. Aber eine einfachere und sicherere Methode ist das Verwenden von .htaccess-Dateien. Um mit .htaccess Web-Seiten zu schützen muss auf dem Webserver "Apache" laufen (viel verbreiteter Webserver). Um ein Verzeichnis zu schützen benötigt man 2 Dateien. Zunächst benötigt man eine Datei namens .htaccess, die man in das Verzeichnis kopiert, dass vor fremdem Zugriff geschützt werden soll. Außerdem benötigt man eine Datei, in der sich die Benutzernamen und Passwörter (in verschlüsseltem Zustand) der User befinden. In unserem Beispiel .htpasswd. Beide Dateien müssen einen speziellen Inhalt haben. Die .htaccess-Datei hat folgenden: AuthUserFile /kunden/homepages/22/d23295760/.htpasswdAuthName "Passwortgeschuetzter Bereich: ihredomain.de"AuthType Basicrequire valid-user Die .htpasswd-Datei hat einen ziemlich simplen Aufbau: user:aXmiNQVPt4PhEuser2:aXmiNQVPt4PhE 1. .htaccess: AuthUserFile ../.htpasswd bezeichnet die Position der Passwortdatei (in unserem Fall .htpasswd). Wohl gemerkt ist, dass nicht die URL der Datei angegeben wird, sondern der Absolute Pfad. Die Datei muss nicht .htpasswd heißen. Sie kann z.B. auch pass oder pass.txt heißen AuthName "..." gibt an wie der zu schützende Bereich heißen soll. Der angegebene Wert wird in dem Abfragedialog angegeben. AuthType gibt die Autorinfizierungsmethode an. Die meisten Web-Server unterstützen nur Basic. require gibt an wer sich anmelden darf und wer nicht. D.h. wenn require user, dann kann sich nur der Benutzer mit dem Benutzername user anmelden. In unserem Fall steht valid-user. Mit valid-user kann sich jeder Benutzer, der in der Passwortdatei steht anmelden. 2. .htpasswd Der Aufbau der .htpasswd-Datei ist wahrscheinlich schon klar: Benutzername:verschlüsseltes Passwort Zu beachten ist, dass Benutzername und Passwort durch einen Doppelpunkt voneinander getrennt sind. Wichtig ist, das keine Leerzeilen vor oder hinter dem Doppelpunkt sind ! Die Frage ist nun, wie werden die Passwörter verschlüsselt. An dieser Stelle kommt nun PHP ins Spiel. Hier gibt es den Befehl CRYPT, der unter Verwendung der Standard-DES-Verschlüsselungsmethode von UNIX verschlüsselt. Zum testen des Scripts hier klicken HTML-Code:
<HTML> <HEAD><title>Der CRYPT Befehl</title></HEAD><BODY><p align="center"><u>Beispiel zum verschlüsseln eines Passworts</u></p><br><!-- HIER BEGINNT DER PHP TEIL --><?//Generrieren des Formularsecho "<br><br>Bitte das gewünschte Kennwort eingeben:<br><br>";echo "<form action=\"$PHP_SELF\" method=post>";echo "<INPUT type=text name=pass> ";echo "<INPUT type=submit name=submit value=submit>";echo "</form>";if($pass){ //Kontrollieren, ob ein Wert angegeben wurdedo_crypt($pass); //wenn ja, führe Funktion aus (weiter unten)}function do_crypt($pass){$passC=crypt($pass,yl); //Erzeugen des Cryptsecho "<br><b>Das Kennwort lautet:</b> $passC"; //Ausgabe des Crypts} ?><!-- HIER ENDET DER PHP TEIL --><br><br>Der CRYPT Befehl verschlüsselt unter Verwendung der Standard-DES-Verschlüsselungsmethode von UNIX.</BODY></HTML> Dateiupload per Browser— Der Dateiupload ist eine interessante Funktion. Das Skript zeigt, wie dies besonders komfortabel erfolgen kann. Voraussetzung für dieses Skript ist das Vorhandensein eines Unterverzeichnisses mit dem Namen _upload. Ansonnsten sind keine Änderungen am Skript notwendig. HTML-Code:
<html><head><title>Datei Upload</title><meta name="title" content="Datei-Upload"></head><body> <?if($action):?> <h1>Datei-Upload</h1><h3>Ergebnis des Uploads</h3><div class=text><?// Zeitbegrenzung: beachten Sie hier die Dateigroesse!set_time_limit(120); $path1 = dirname($PATH_TRANSLATED)."/_upload/"; // Pfadangabe fuer das Ziel// maximal 4 Dateien gleichzeitigfor($i = 0; $i < 4; $i++){// Bildung der Variablennamenswitch($i){ case 0:$source = $file1;$source_name = $file1_name;break;case 1:$source = $file2;$source_name = $file2_name;break;case 2:$source = $file3;$source_name = $file3_name;break;case 3:$source = $file4;$source_name = $file4_name;break;}if ($source <> "none") {if ($error1 <> 1) {$dest = $path1.$source_name;if (copy($source, $dest)) {echo "<b>$source_name</b> wurde hochgeladen<br>\n";} else {echo "Schreibrechte im Zielverzeichnis fehlen<br>\n"; $error1 = 1; }} @unlink($source); }}?><br><a href="<?php echo $PHP_SELF ?>">Zurück</a></div><?else:?><h1>Datei-Upload</h1><h3>Upload starten</h3><div class=text>Wählen Sie eine oder mehrere Dateien aus.<br>Limit: 1000 KByte.<br><form method="post" enctype="multipart/form-data" action="<?php echo $PHP_SELF ?>"><input type="hidden" name="MAX_FILE_SIZE" value="1000000">Datei 1: <input type="file" name="file1" size="30"><br>Datei 2: <input type="file" name="file2" size="30"><br>Datei 3: <input type="file" name="file3" size="30"><br>Darei 4: <input type="file" name="file4" size="30"><br><br><input type="submit" name="action" value="Upload starten"></form><?endif;?></div></body></html> HTML-Code:
<form method="post" enctype="multipart/form-data" action="<?php echo $PHP_SELF ?>">
Interessant ist die Ermittlung des Zielpfades. Dies setzt voraus, das ein Unterverzeichnis UPLOAD exisitert: PHP-Code:
PHP-Code:
PHP-Code:
Der Kopiervorgang selbst steht in einer IF-Anweisung. So lassen sich Fehler sofort auswerten und entsprechende Meldungen anzeigen: PHP-Code:
Ge?ndert von Cerberus (26.02.2009 um 20:30 Uhr) |
|||||||||||
26.02.2009, 20:09 | #2 |
Gesperrt
Registriert seit: 05.02.2009
Beitr?ge: 148
Abgegebene Danke: 13
Erhielt 56 Danke für 7 Beiträge
Downloads: 0
Uploads: 0 Nachrichten: 45 Renommee-Modifikator:
0 |
kannst du den Text vllt noch ein wenig... (wort vergessen)
Naja mit [php][/php] und so halt. edit: "formatieren" |
26.02.2009, 20:32 | #3 |
Administrator
Registriert seit: 07.03.2008
Ort: 3. Bit Links hinter dem Kernel
Alter: 49
Beitr?ge: 9.638
Abgegebene Danke: 1.121
Erhielt 4.499 Danke für 458 Beiträge
Downloads: 18
Uploads: 9 Nachrichten: 2258 Renommee-Modifikator:
10 |
ich hab ma ein bissel was gemacht ...
aber TP sollte da nochmal "nachbessern" ....
__________________
Fragen gehören ins Forum - und NICHT in mein Postfach ! Ich erteile KEINEN Privatunterricht über e-mail und PN ! Hackliste Br. NV nach Threadstarter u. Aktualität <--+--> Liste Hacks Bereich NV Alphabethisch |
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, G?ste: 1) | |
|
|