PHP Tutorials

Um die Scripts zu testen braucht ihr entweder einen PHP fähigen Webserver oder Ihr installiert euch Xampp auf euren PC. Xampp ist nichts anderes als ein Lokaler Webserver den ihr auf eurem Computer installiert.

POST/GET Security

Hier möchte ich euch Zeigen wie Ihr Formular Eingaben entgegen nehmen solltet. Früher hab man die Werte in PHP einfach mit einem $_GET['variable'] entgegengenommen. Dies ist aber extrem unsicher, da hier einfach alles übertragen wird, auch sogenante SQL Injection, was Hackern ermöglich eure komplette Datenbank auszulesen oder schlimmstenfalls zu löschen.

Daher solltet ihr alle Eingaben filtern. Mit der php Funktion filter_input ist dies möglich. Dabei kann auch bestimmt werden, was für ein Wert entgegen genommen werden darf. In dem Beispiel (FILTER_VALIDATE_INT) sind nur Zahlen erlaubt, alle anderen Werte liefern ein False zurück. So kann man auch E-Mail Adressen auf Gültigkeit prüfen, ihr müsste den Filter einfach nur von FILTER_VALIDATE_INT auf FILTER_VALIDATE_EMAIL ändern. Natürlich gibt es noch weitere Filter die Ihr auf .php.net nachlesen könnt.

//GET
$id = filter_input(INPUT_GET, "id", FILTER_VALIDATE_INT);

//POST
$id = filter_input(INPUT_POST, "id", FILTER_VALIDATE_INT);

$email = filter_input(INPUT_POST, "email", FILTER_VALIDATE_EMAIL);
        

Reguläre Ausdrücke

Die Reguläre Ausdrücke ist wohl die mächtigste funktion in allen Programiersprachen, leider auch die komplizierteste. Ich werde hier nur auf die Basics eingehen, nicht umsonst wurde zu diesem Thema ganze Bücher geschrieben. Mit Reguläre Ausdrücke wird ein string mit einem Suchmuster verglichen und ausgeschnitten. In dem Beispiel werden die Zeichen nach einem [column], bis zum ende [/column], in ein div gewrapt.
Wichtig: Da die eckigen Klammern zu einer Zeichenklasse gehören, müssen sie durch einen backslash ( \ )maskiert werden.
Die Begrenzer: ( : ) Sie geben den Anfang und Ende des ausdruckes an. Das einzige das hier zu beachten ist, das sie nicht im weiteren Script vorkommen dürfen.

Das Suchmuster: Gesucht wird dieses Zeichen ( \[column] ) gefolgt von irgendeinem Zeichen ( .*? ) bis zum ende (\[/column])

Zeichenklassen:
[...] - Irgendein Zeichen aus der Liste.
[^...] - Irgendein Zeichen das sich nicht in der Liste befindet.
\d - Entspricht [0-9]
\s - Whitespace-Zeichen
^ - Bezieht sich auf den Anfang des Strings
$ - Ende des Strings
(...) - Gruppierung von Suchmustern
. - Ein belibiges Zeichen
* - Keinmal oder mehrmals
+ - Einmal oder mehrmals
? - Einmal oder keinmal
*? - Keinmal oder mehrmals, aber so wenig wie möglich

Modifikatoren: Die Modifikatoren beeinflussen das Suchverhalten des Reguläre Ausdrückes, sie befinden sich normalerweise immer am Ende des Ausdrucks, können aber auch innerhalb des Suchmusters stehen.
i - Ignoriert Groß-/Kleinschreibung
<?php
$item->text = preg_replace_callback(":\[column](.*?)\[/column]:s",
function($matches){
    return '
$matches[0]
'; }, $item->text); ?>
    

Sortier funktion

Hierbei handelt es sich um einen Benutzerdefinierte Suchfunktion, die ein array nach einem definierten Wert vergleicht. Im Beispiel wird das array nach dem Datum absteigend sortiert (Neustes Datum oben). Um die sortierung umzukeheren, müssen die Vergleichsparameter einfach getauscht werden (also $a->date mit $b->date tauschen).

Für eine natürliche Sortierung als (1, 2, 3, 10, 20, 100) sollte die php funktion strnatcasecmp verwendet werden.

function sortFunction( $a, $b ) {
    return $a->date > $b->date ? -1 : 1;
}
usort($array, "sortFunction");

//Natsort
function sortNat( $a, $b ) {
    return strnatcasecmp($a->title, $b->title);
}
usort($array, "sortNat");
    

Datenbank Verbindung

So baut ihr eine Verbindung zu eurer Datenbank, mit mysqli, auf. Von der Syntax ist sie der normalen mysql verbindung ähnlich. Der Vorteil von mysqli ist die Sicherheit.

$DatabaseHost = "";
$DatabaseUser = "";
$DatabasePassword = "";
$Database = "";

//Verbindungsvariable samt Zugangsdaten festlegen
@$db = mysqli_connect($DatabaseHost, $DatabaseUser, $DatabasePassword, $Database);

// Verbindung überprüfen
if (mysqli_connect_errno()) {
  exit();
}

//Zeichensatz setzen
mysqli_set_charset($db,"utf8");

//Display php errors
error_reporting(1);
    

PHP Click Counter

Schreibt euch eruen eigenen Klick Counter um immer genau zu wissen wie oft etwas runtergeladen oder wie oft ein Partner besucht wurde.

Zum Tutorial

Arrays und Objekte

Ein Array kann mehrere Element einthalten, beispielsweise Objekte. Objekte sind Elemente denen man Werte zuweist, diese kann auch ein Array sein welches wiederum Objekte besitzt.

Am besten stellt ihr euch eine Tabelle vor, diese Tabelle ist unser Array, jede Zeile ist dabei ein Objekt und jede Spalte ein Wert dieses Objektes.

$tabelle = array(
    (object)[
        "id" => "1",
        "name" => "Maximilian",
        "alter" => "20",
    ],
    (object)[
        "id" => "2",
        "name" => "Max",
        "alter" => "24"
    ],
    (object)[
        "id" => "3",
        "name" => "Moritz",
        "alter" => "19"
    ]
);
    

foreach schleifen

Einer Foreach Schleife übergibt man normalerweise immer ein Array, das es durlaufen kann. Dabei muss nicht, wie bei for oder while, ein Zähler oder abbruchbedingung gesetzt werden. Die Schleife durchläuft automatisch alle Elemente und stopt sobald das Ende erreicht wird. Mit einem break; kann man diese aber auch vorzeitig beenden.

$elemente = array("element1", "element2", "element3", "element4")

foreach ($elemente as $aElement){

    if($aElement == "element3"){
        break;
    }

    echo $aElement;
}
    

while schleifen

Die while Schleife gehört zu den Fuß gesteuerten Schleifen. Hierbei müssen beide Variablen vorher bestimmt werden. Die Bedingung lautet ist $a kleiner als $b führe den Befehl aus, indem Fall echo "$a ist kleiner als $b"; und erhöhe $a um 1 ( $a++; ) Hat $a den Wert der Variable $b erreicht endet die Schleife.

$a = 0;
$b = 5;
while ($a < $b){
    echo "$a ist kleiner als $b";
    $a++;
}
    

for schleifen

Die for Schleife gehört zu den Kopf gesteuerten Schleifen. Als erstes wird eine Variable mit einem Wert bestimmt, anschließend erfolgt die Schleifen Bedingung (Ist $a kleiner als $b). Trifft dies zu wird die Variable um 1 ( $a++) erhöht, dies geschieht so lange bis $a gleich $b ist. Zu beachten hierbei ist nur das wenn die Variable $a den Wert von $b erreicht hat wird die schleife beendet ohne das sie einen Eintrag ausführt.

$b = 5;

for($a=0; $a < $b ;$a++){
    echo "$a kleiner als $b";
}
    

Die if Struktur

Als erstes müssen zwei Variablen bestimmt werden ($a und $b), diese werden dann in einer if abfrage verglichen. Die Bedingung lautet ist $a kleiner als $b ($a < $b), wenn das war ist (true) geht's in der ersten geschweiften Klammer weiter mit { echo "a ist kleiner als b"; } ist die Bedingung falsch (false) wird die erste geschweifte Klammer übersprungen und die zweite Anweisung wird ausgegeben { echo "a ist größer als b"; }

$a = 1;
$b = 5;
if ($a < $b){
    echo "a ist kleiner als b";
}else{
    echo "A ist größer als b";
}

PHP Grundgerüst

Um den Code testen zu können Braucht ihr einen PHP fähigen Server. Oder Ladet euch Xampp runterladen Da die Dateien Serverseitig verarbeitet werden könnt ihr den Code nicht so einsehen wie z.b. den HTML oder Javascript Quelltext. Nachdem der Code verarbeitet wurde seht ihr nur die echo Ausgabe indem Fall Hello World

<?php
    echo "Hello World";
?>