PHP

Aus m-wiki
Version vom 4. September 2016, 23:42 Uhr von Snoopy78 (Diskussion | Beiträge) (Die Seite wurde neu angelegt: „== Buch: PHP Ein praktischer Einstieg == === Kapitel HTML: === <nowiki> <ul> und <ol> für unsortierte oder sortierte Liste. Die einzelnen Einträge sind dan…“)
(Unterschied) ← Nächstältere Version | Aktuelle Version (Unterschied) | Nächstjüngere Version → (Unterschied)
Zur Navigation springen Zur Suche springen

Buch: PHP Ein praktischer Einstieg

Kapitel HTML:

<ul> und <ol> für unsortierte oder sortierte Liste. Die einzelnen Einträge sind dann jeweils <li> <textarea rows = "x" cols = "y" name = "z"> <select name = "x"><option value = "x" /></select> //Auswahlliste -> Rückgabewert unter name mit value. <input type = "radio" name = "x" value = "y" />y <input type = "radio" name = "x" value = "z" />z -> Unter x gibt es den value <input type = "checkbox" name = "x" checked = "checked" />y -> name ist vorhanden (Wert "on"), wenn angeklickt, sonst nicht vorhanden in POST-Array form -> Bei Dateianhang -> enctype = "multipart/form-data" -> Als Parameter angeben PHP-Funktionen: $datum = getdate() -> Array -> $jahr = $datum["year"]; -> usw. $x = preg_match("x", $test) -> true, wenn das Suchmuster x in $test gefunden wird - Am Anfang und am Schluss steht ein beliebiges (identisches) Begrenzerzeichen. Meist / oder # - ^ am Anfang -> Das Suchmuster muss von Beginn weg übereinstimmen und darf nicht erst später auftauchen (Hallo wird gesucht -> haHallo ist dann falsch) - \ -> Das nächste Zeichen verliert seine Sonderbedeutung und wird als normales Zeichen behandelt - \d -> beliebige Ziffer, - * -> Das vorherige Zeichen darf beliebig oft hintereinander auftauchen (auch 0 Mal) (x* wird gesucht -> () ist korrekt und (xxxxxx) auch)  ? -> Es darf 0 oder 1 Mal auftauchen, + -> 1 oder mehrmals - [] Das Zeichen muss aus dem Vorrat aus der Klammer stammen. Mengen wie [a-zA-Z] für alle Buchstaben usw. sind möglich. - () Die nachfolgende Anweisung gilt für den gesamten Klammerausdruck - {x} Das vorherige Zeichen muss x Mal nacheinander vorkommen - $ am Schluss -> Das letzte Zeichen muss auch das letzte Zeichen im String sein (Hallo wird gesucht -> Hallo1 ist falsch) - Bsp.: /^\d*[05]$/ -> Am Anfang beliebig viele Zahlen (\d), dann eine 0 oder 5, welche am Stringende sein müssen. (1110, 5, 0 -> ok und 111, 7, 0051 -> nak) /^(\d{4}[\s\-]?){4}$/ -> Zuerst 4 Ziffern, dann max. ein Trennzeichen (Leerschlag oder -) (z.B. 1234-) und da dieser Suchausdruck in Klammern ist gefolgt von {4} muss dies 4 Mal hintereinander vorkommen. Z.B.: Kreditkarte (1234-1234-1234-1234) -> Achtung -> 1234-1234-1234-1234- wäre hier auch möglich. /^(\d{2})0[2-9]$/ -> Zuerst 2 beliebige Ziffern, dann eine 0 und zuletzt eine Zahl von 2-9. /^\d+$/ -> Enthält nur Ziffern /^[^\W\d_]([^\W\d_]|[\-\'\s\.])*$/ -> Beginnt mit Buchstaben und hat anschliessend nur Buchstaben oder Bindestriche, Leerzeichen und Apostrophe - Unterausdrücke auswerten: mit einem zusätzlichen Parameter kann man noch einen Rückgabewert abfragen. Jede Klammer gibt nämlich deb Wert in ihr in diesen zusätzlichen Parameter, so dass man später noch weiter einschränken kann. Etwa beim Bp. mit den 2 Ziffern, kann man dann mit $match[1] abfragen, ob die 2 Ziffern im gewünschten Bereich sind. $x = uniqueid("") -> Eindeutige ID aus der Systemzeit und Ziffern. Kann etwa für Dateinamen auf dem Server verwendet werden oder als Salt. magic_quotes_gpc -> Alle Ausgaben mit Backslash versehen aus Sicherheitgründen -> wenn on, für Ausgaben vom Benutzer stripshlashes() verwenden. $x = stripshlashes($x) -> $x hat jetzt keine Backslashes mehr drin. Befehle: switch ($x) { // Die Werte dürfen auch Wertbereiche sein (case 4-7). Default ist nicht obligatorisch. O-hne break gehts zum nächsten bis zum default. case "y": // Nach dem case darf auch direkt das break ohne Befehl kommen, wenn gewünscht. ... break; case "z": ... break; default: ... } ecit(); Beendet die Ausführung des Scripts Allgemein: Codebeispiele: Datei prüfen und hochladen: Seite 78 Dateien per include einbinden und nur per Script ausführen -> Siehe Anhang A für Apache -> Wenn POST leer, dann html einbinden mit Formular und exit();, sonst Code zur Auswertung. So kann man das Ganze etwas verschlanken. -> if (basename($_SERVER["SCRIPT_FILENAME"]) == "gewünschtes script.php") {exit(); } // oder auch mehrere. Wenn diese Zeile am Anfang steht, bricht das File ab, wenn es nicht von diesem Script aufgerufen wird. Objektorientierung: Objektdaten = Eigenschaften, Werte oder Properties (Objekteigenschaft) Objektmethoden = Funktionen - Klassen werden vor der Verwendung erstellt und mit include eingebunden. - Da in den Funktionen der Klasse nur lokale oder per Parameter übergebene Variablen bekannt sind, müssen auch klasseninterne Variablen mit $this->variable angesprochen werden. Klasse -> Objekt: class Rechteck { var Länge; var Breite; function Fläche () { return $this->Länge * $this->Breite; } // end function Fläche } // end class Rechteck $testRechteck = new Rechteck; $testRechteck->Länge = 5; $testRechteck->Breite = 4; echo $testRechteck->Fläche(); // ergibt 20 Vererbung: class Quader extends Rechteck { var Höhe; function Volumen () { return $this->Höhe*Fläche(); } // end function Volumen } // end class Quader Alle Funktionen und Werte werden vererbt und stehen zur Verfügung $testQuader = new Quader; $testQuader->Länge = 7; $testQuader->Breite = 3; $testQuader->Höhe = 5; echo $testQuader->Volumen(); // ergibt 105 Konstruktor: Funktion, welche beim Erstellen aufgerufen wird. Kann aber auch ganz normal aufgerufen werden. Name entspricht Klasse. Wird nach der Variablendefinition definiert, damit man diese Variablen auch gleich initialisieren kann. Will man in einer vererbten Klasse auch noch den Konstruktor der Oberklasse aufrufen, so geht dies mit $this->Oberkonstruktor(). Wird nicht aut. gemacht, da meist nicht nötig. class test { var $miau; function test() { $this->miau = true; } // end function test } // end class test Will man gleich Werte von ausserhalb übernehmen und testen im Konstruktor... var $x_ok; var $y_ok; function test ($x = "", $y = "") { $this->testVar($x); $this->testVar($y); } // end function test function testVar($testvariable) { if ($testvariable == "muh") { $this->x_ok = $testvariable } } // end function testVar Falls die Methode mehrere unterschiedliche Variablen prüft, muss man halt mit einem Rückgabewert arbeiten und nicht direkt setzen. $x_ok = $this->testVar($x); function testVar($testvariable) { if ($testvariable == "muh") { return $testvariable } else { return ""; } } // end function testVar Mit Werten wird das Objekt folgendermassen erzeugt: $objekt = new Objekt("muh", "miau"); $objekt2 = new Objekt("muh"); // Da die Parameter mit = "" drin sind, wird der zusätzliche Wert standardmässig gesetzt. Objekte kopieren / referenzieren: Beim zuweisen an ein neues Objekt $new = $old werden sämtliche Werte kopiert. Will man eine Referenz, so wird mit & zugewiesen: $new = &$old -> beide verweisen auf das gleiche Objekt. Links: webhostlist.de Liste von Providern mit php phpmag.de Zeitschrift für php php-ev.de php-verein mit Nachrichten und Tipps dclp-faq.de die deutsche php faq. phpclasses.org frei verfügbare php Klassen php-center.de Professionell, doch gute Tutorials php-homepage.de viele vorgefertigte Scripts und Artikel zu php phpwelt.de Scripts und Tutorials selfphp.info Gute Doku php-archiv.de Scripts mit Infos