Hi,
du willst PHP lernen und dynamische Webseiten und -Anwendungen programmieren? Dann Willkommen zu meiner großen Artikelserie, in der ich dir Schritt für Schritt beibringe, PHP zu programmieren. Du brauchst keine programmiertechnischen Vorkenntnisse.
Bevor wir anfangen sollten wir noch zwei Dinge klären: das was ich von dir erwarte und das was ich dir biete.
Was du brauchst
Du solltest ein gutes Grundverständnis für logische Zusammenhänge haben, um mit der Programmierung zu starten. Auf deinem Weg des Lernprozesses lernst du neben Code und technischem Verständnis auch neue Wege und Perspektiven kennen, um an Probleme heranzugehen und sie zu lösen. Du brauchst auf jeden Fall Durchhaltevermögen - wenn du schnell feststellst dass Programmierung dein Ding ist, wirst du damit keine Probleme haben. Du wirst viele Fehler machen, vor allem am Anfang - das sollte dich aber nicht stören, denn nur durch Fehler wird man besser, und nirgends trifft das mehr zu als auf Programmierung.
Was du von mir bekommst
Ich biete dir eine Einführung in die Programmierung (mit PHP) ohne jegliches Vorwissen. Wir beginnen mit einfachen aber sehr essentiellen Themen und arbeiten uns dann immer weiter vor. Ganz ohne Hektik, ein Schritt nach dem anderen. Innerhalb kürzester Zeit (hier ist von Stunden bis wenigen Tagen die Rede) wirst du in der Lage sein, einfache Zusammenhänge und Funktionsweisen zu verstehen und selbständig kleine Skripte zu schreiben. Wenn du am Ball bleibst, sorge ich dafür, dass du richtig gut wirst.
Der Lernprozess - bin ich hier gut aufgehoben?
Berechtigte Frage. Natürlich gibt es immer mehrere Wege etwas zu lernen, mit dieser Tutorial-Serie zeige ich dir einen (meinen) Weg zu dem Ziel, ein professioneller Programmierer zu werden. Vielleicht ist das auch genau der richtige Weg für dich - was super wäre. Keine Frage, natürlich weiß ich auch nicht alles, aber wer kann das schon von sich behaupten. Was ich aber mit Sicherheit weiß ist, dass ich in nichts auf der Welt besser bin als im Programmieren mit PHP - ich verdiene damit mein Geld, ganz verkehrt bin ich also schon mal nicht. Mir ist wichtig dass du dich mit meiner Art zu schreiben wohl fühlst und dass es dir Spaß macht. Wenn das gegeben ist, kann nicht mehr viel schief gehen.
<h3>Eins noch</h3>
Wenn du irgendwo Wörter oder Begriffe siehst, die du nicht kennst, ist das kein Grund in's Schwitzen zu kommen - es werden mit Sicherheit noch auf der selben Seite alle Fragen beantwortet werden. Und falls du doch noch Fragen hast, steht das Kommentarfeld zu deiner freien Verfügung.
Und lass dich bitte ermutigen: der heutige erste Teil der Tutorial-Reihe besteht stellenweise aus "trockener" Theorie - ich würde dich aber bitten, diese ganzen Infos auch noch mitzunehmen, da sie für spätere Vorhaben essentiell sind und du dein Gehirn vorab schon mit Antworten fütterst, zu denen im späteren Verlauf sowieso Fragen aufkommen. Mit Code geht es erst im nächsten Artikel los.
Jetzt fangen wir aber wirklich an, versprochen. Gerne kannst du dir jetzt noch schnell 'nen Kaffe holen und dir eine anzünden - und dann legen wir los. Also dann ...
<h2>Einführung</h2>
<h3>Was ist PHP?</h3>
PHP steht für "PHP: Hypertext Preprocessor" und ist eine Skriptsprache, deren Syntax an C und PERL angelehnt ist. Warte, nicht weglaufen - ich weiß dass du damit nichts anfangen kannst und keinen blassen Schimmer hast was das bedeutet, aber das macht auch nix, trotzdem sollte man wenigstens wissen, was die drei Buchstaben "PHP" bedeuten.
Wikipedia beschreibt PHP so:
<blockquote><b>PHP</b> (<a title="Rekursives Akronym" href="https://de.wikipedia.org/wiki/Rekursives_Akronym">rekursives Akronym</a> und <a title="Backronym" href="https://de.wikipedia.org/wiki/Backronym">Backronym</a> für â<b>P</b>HP: <a title="Hypertext" href="https://de.wikipedia.org/wiki/Hypertext"><b>H</b>ypertext</a> <a title="Präprozessor" href="https://de.wikipedia.org/wiki/Pr%C3%A4prozessor"><b>P</b>reprocessor</a>â, ursprünglich â<b>P</b>ersonal <a title="Homepage" href="https://de.wikipedia.org/wiki/Homepage"><b>H</b>ome <b>P</b>age</a> Toolsâ) ist eine <a title="Skriptsprache" href="https://de.wikipedia.org/wiki/Skriptsprache">Skriptsprache</a> mit einer an <a title="C (Programmiersprache)" href="https://de.wikipedia.org/wiki/C_%28Programmiersprache%29">C</a> und <a title="Perl (Programmiersprache)" href="https://de.wikipedia.org/wiki/Perl_%28Programmiersprache%29">Perl</a> angelehnten <a title="Syntax" href="https://de.wikipedia.org/wiki/Syntax">Syntax</a>, die hauptsächlich zur Erstellung <a class="mw-redirect" title="Dynamische Webseite" href="https://de.wikipedia.org/wiki/Dynamische_Webseite">dynamischer Webseiten</a> oder <a title="Webanwendung" href="https://de.wikipedia.org/wiki/Webanwendung">Webanwendungen</a> verwendet wird.<sup id="cite_ref-2" class="reference"><a href="https://de.wikipedia.org/wiki/PHP#cite_note-2">[2]</a></sup> PHP wird als <a title="Freie Software" href="https://de.wikipedia.org/wiki/Freie_Software">freie Software</a> unter der <a title="PHP-Lizenz" href="https://de.wikipedia.org/wiki/PHP-Lizenz">PHP-Lizenz</a> verbreitet. PHP zeichnet sich durch breite <a title="Datenbank" href="https://de.wikipedia.org/wiki/Datenbank">Datenbank</a>unterstützung<sup id="cite_ref-3" class="reference"><a href="https://de.wikipedia.org/wiki/PHP#cite_note-3">[3]</a></sup> und <a title="Netzwerkprotokoll" href="https://de.wikipedia.org/wiki/Netzwerkprotokoll">Internet-Protokoll</a>einbindung sowie die Verfügbarkeit zahlreicher <a class="mw-redirect" title="Funktionsbibliothek" href="https://de.wikipedia.org/wiki/Funktionsbibliothek">Funktionsbibliotheken</a><sup id="cite_ref-4" class="reference"><a href="https://de.wikipedia.org/wiki/PHP#cite_note-4">[4]</a></sup> aus.</blockquote>
Einer der Vorteile für dich ist, dass PHP wirklich einfach zu lernen ist. Innerhalb weniger Stunden wirst du in der Lage sein, schon einfache Skripte oder gar kleine Programme zu schreiben.
Vermutlich interessierst du dich also für PHP und möchtest lernen, was genau es ist und wie es funktioniert. Vielleicht hast du auch schon Ahnung von HTML und willst dein Wissen erweitern, um endlich Dynamik in deine Webanwendungen zu bringen. So oder so, lass mich dir zuallererst zeigen, wofür PHP da ist und was man damit machen kann.
<h3>Was kann PHP?</h3>
<ul> <li>Mit PHP bringst du Programmlogik in deine Webanwendung - es werden Aktionen ausgeführt aufgrund von Entscheidungen (WENN ... DANN ... ANSONSTEN ...), Aktionen können wiederholt ausgeführt werden (Schleifen)</li> <li>Du kannst HTML-Formulareingaben (<span class="lang:php decode:true crayon-inline "><form method="POST" action="ziel.php">...</form></span> ) empfangen und auswerten.</li> <li>Du kannst Zeichenkettenfunktionen (Suchen / Ersetzen) nutzen, Datumsformatierungen verwenden, Zufallszahlen generieren, Mails versenden, PDFs erstellen und von Unmengen an frei verfügbaren Programmbibliotheken und Erweiterungen profitieren - naja und vieles mehr. Eigentlich alles was du dir nur vorstellen kannst.</li> <li>PHP ist recht einfach zu lernen</li> <li>PHP ist sehr gut dokumentiert, jede Funktion lässt sich schnell und unkompliziert auf <a href="http://php.net" target="_blank" rel="noopener noreferrer">php.net</a> nachschlagen - das ist keine Randnotiz, diese Seite wird dein ständiger Begleiter auf dem Weg zum PHP-Profi sein</li> <li>PHP läuft auf allen Plattformen (Windows, Linux, Mac)</li> <li>PHP ist kostenlos - *yay*</li> <li>PHP ist die meistgenutzte Sprache zur Erstellung von Webseiten - das heiÃt es gibt einen riesen Haufen Leute, die PHP kennen und nutzen, demzufolge auch eine Menge an Portalen und Foren und was viel wichtiger ist: viele Ressourcen für dich, falls es irgendwelche Probleme gibt - irgendjemand hatte genau dein Problem mit Sicherheit auch schonmal.</li> <li>PHP wird serverseitig ausgeführt, das heiÃt auf einem entfernten Rechner (Stichwort Webserver, wie gesagt dazu später mehr) und im Regelfall dazu genutzt, um die Logik für eine Anwendung bereitzustellen, die im Browser genutzt wird.</li> <li>Du kannst PHP nutzen, um Anwendungen auf Kommandozeilenbasis zu schreiben - das nur als Info am Rande, aber es ist sicher nicht das was du damit vor hast</li> <li>Du kannst mit Datenbanken arbeiten, um Daten persistent zu speichern</li> <li>Du hast mit PHP Zugriff auf das Dateisystem, das heiÃt die kannst Dateien lesen und schreiben</li> </ul>
Kurze Erklärung der Funktionsweise anhand eines nachvollziehbaren Praxisbeispiels Sehr viele Online-Portale arbeiten mit PHP. Du, also der Benutzer, bedient im Endeffekt eine Oberfläche, die er im Browser aufruft. Das was du dort alles siehst ist das Ergebnis von HTML- und CSS-Code - dein Browser sorgt dafür dass das so aussieht wie es aussieht. Angenommen du bist also auf irgendeiner Webseite, auf der du dein Benutzerprofil aktualisieren möchtest, z.B. deine E-Mail-Adresse ändern. Tja, das ist etwas, das mit HTML nicht geht. Mit HTML wird zwar eine schöne Oberfläche für dich zur Verfügung gestellt (ein Text-Eingabefeld wo du deine E-Mail Adresse eingeben kannst), jedoch muss ja irgendwer oder irgendwas dafür sorgen, dass diese von dir eingegebenen Daten nach dem Absenden des Formulars in irgendeiner Form gespeichert werden können und permanent verfügbar sind. Und hier kommt PHP ins Spiel. Das HTML-Formular das du ausgefüllt hast, wird an den Server gesendet, dort wartet ein PHP-Skript (z.B. eine Datei daten_speichern.php), und der gute Mensch der das programmiert hat, hat natürlich dafür gesorgt, dass die übermittelten Daten verarbeitet und in eine Datenbank eingetragen werden. Und weil dieser Jemand nicht dumm ist, prüft er deine Daten vorsorglich, um dich ggf. mit einem Warnhinweis darüber zu informieren, dass die eingegebene E-Mail-Adresse kein gültiges Format hat - oder dass das Speichern deiner Änderungen erfolgreich war. Den Vorgang kennst du natürlich gut, hast es aber vermutlich nie aus technischer Sicht gesehen.
<h3><strong>Gibt es Nachteile von PHP?</strong></h3>
Ja auch die gibt es. Ich gehe nicht näher darauf ein, aber PHP ist eine typenschwache Sprache. Hä, was ist das? Das wirst du erfahren, wenn es soweit ist, und zwar im übernächsten Artikel wenn es um Variablen und Datentypen geht. Dieser Umstand mag sich bei Einsteigern durchaus wie ein Vorteil anfühlen. Der größte Nachteil aus meiner Sicht ist aber, dass PHP es Einsteigern als sehr attraktiv anbietet, unsauber zu programmieren. Ich versuche, dich hierbei zu unterstützen und dir zu zeigen, wie man solche Fallen vermeidet, um von Anfang an sauber zu programmieren. Aber davon abgesehen, jede Programmier- oder Skriptsprache hat ihre Vor- und Nachteile. Wie in fast allen technischen Bereichen ist es auch bei Programmiersprachen so, dass es nicht die ultimative Super-Lösung gibt. Wenn du aber scharf darauf bist, Webseiten oder besser gesagt Webanwendungen zu programmieren, ist PHP alternativlos und für dich die erste Wahl - du bist hier sehr gut aufgehoben.
<h3><strong>Ich höre ständig "Server" und "Webserver", was hat es damit auf sich?</strong></h3>
Zu wissen was ein Server ist, ist essentiell um mit PHP arbeiten zu können - und um nicht in Erklärungsnot zu geraten, falls man mal was gefragt wird. Ein Server ist im Grunde genau das, was es auf Deutsch übersetzt heißt. Nein, nicht Kellner, obwohl das natürlich von der Übersetzung her stimmt. Aber doch teilweise richtig, denn ein Kellner "serviert" ja. Und ein Server tut das auch. Also alle Magie beiseite, ein Server ist in erster Linie nur ein ganz normaler PC. So wie der vor dem du gerade sitzt. Ein PC wird automatisch zu einem Server, wenn er für andere etwas bereitstellt - nicht mehr, und nicht weniger, das ist die Definition eines Servers. Angenommen also du speicherst auf deinem PC oder Laptop (jap, natürlich kann auch ein Laptop ein Server sein) Filme -die du natürlich legal im Laden erworben hast- in digitaler Form, um sie für deine Freunde im lokalen Netzwerk, bei dir Zuhause über WLAN oder Netzwerkkabel, verfügbar zu machen. Dann ist dein Laptop zu dem Zeitpunkt schon ein Server. Vielleicht hast du schonmal was vom Client-Server-Prinzip gehört - vielleicht auch nicht. Nun, die Clients sind in dem Fall die PCs deiner Kumpels die eine Anfrage an den Server stellen - an deinen PC, denn von dem wollen sie ja etwas. Der Server ist also der, der anbietet, und der Client ist der, der anfragt.
Momentan ist dein PC der Client, der mittels Webbrowser eine bestimmte Webseite anfragt - nämlich meine, also die, deren Inhalte du gerade siehst. Und wenn du das hier lesen kannst, hat mein Webserver seine Aufgabe erfolgreich erledigt, das heißt er hat dir die angefrage Seite zurückgegeben und du kannst sie in deinem Browser betrachten. Der dafür zuständige, installierte Dienst der auf meinem Server läuft ist ein sog. Webserver-Dienst (konkret heißt dieser Dienst Apache). Es gibt viele Arten von Servern, und ein Webserver hat die Aufgabe, sich ausschließlich um HTTP-Anfragen zu kümmern. Der physikalische PC (also das tatsächliche, anfassbare PC-System) auf dem der Webserver-Dienst läuft, der gerade deine Anfrage zum Ausgeben meiner Webseite bearbeitet hat, steht übrigens irgendwo in einem Rechenzentrum (ich glaube Köln) , das betreut wird von netten Menschen die sich gut mit Computern auskennen und bei einer Firma namens "HostEurope" arbeiten. HostEurope ist (m)ein Hosting-Anbieter, der mir einen Webserver zur Verfügung stellt. Im Gegenzug überweise ich denen monatlich Geld. Faires Geschäft.
Es gibt noch andere Server, von denen ich kurz einige aufzählen möchte, einfach damit du diese ganze Server-Geschichte ein bisschen verstehst. Du musst das nicht lesen, aber wenn du an Hintergrundwissen interessiert bist und du sowieso genug Zeit mitgebracht hast, empfehle ich es dir. Ich habe die Erfahrung gemacht, dass es viel besser ist, Zusammenhänge und Begriffe verstehen zu lernen, um schnell richtig gut zu werden.
<ul> <li><strong>Webserver</strong> - bearbeitet HTTP-Anfragen, die üblicherweise über Port 80 angefragt werden. Dahinter arbeitet ein Dienst (der schonmal erwähnte Apache) der sich um diese Anfragen kümmert und weià was zu tun ist. Im Regelfall erfolgen HTTP-Anfragen über einen Browser, und auch wenn du davon nichts weiÃt oder mitbekommst, wird das über Port 80 erledigt. Du kannst dem Browser in der Adresszeile über alles was vor dem <span style="font-family: courier new,courier,monospace;">://</span> kommt mitteilen, welche Art von Inhalten angefragt werden. Sicher hast du schonmal gehört dass es sowas wie gesicherte Verbindungen oder SSL gibt (Online-Baking wie VR Bank oder PayPal) bei denen die Adressleiste grün ist. Das sind auch Webserver-Anfragen, die jedoch über <strong>https</strong>://irgendwas.de angefragt werden (Port 443).</li> <li><strong>SMTP-Server</strong> - bearbeitet SMTP-Anfragen. Auch genannt <em>Mailserver</em>. Falls du z.B. bei GMX oder Web.de bist - die haben einige SMTP-Server, die den Eingang und den Versand von E-Mails managen. Der Client ist hierbei das E-Mail Programm (Outlook, Thunderbird u.ä.).</li> <li><strong>Fileserver</strong> - da sind wir bei dem Beispiel von oben, bei dem du über dein Laptop Filme für andere bereitstellst. Dein Laptop übernimmt die Rolle eines Fileservers, weil er Dateien zur Verfügung stellt - das heiÃt du hast aus dem Ordner in dem die Filme liegen ein freigegebenes Verzeichnis gemacht, auf das andere PCs im Netzwerk Zugriff erhalten.</li> <li><strong>Printserver</strong> - ein Druckerserver verwaltet und steuert viele Drucker. Sowas findest man meist in groÃen Firmen die auch mehrere Standorte haben können.</li> </ul>
So, schwere Lektüre. Lass es sacken, du musst das Zeug nicht auswendig im Kopf behalten. Aber es ist ein gutes Gefühl, schonmal von etwas gehört zu haben. Du hast es jetzt im Hinterkopf, da ist es vorerst gut aufgehoben.
Zurück zum Webserver, um den es ja ausschließlich geht, wenn wir PHP zum Laufen kriegen wollen. Ich schätze aber, dass für dich vorerst noch eine Frage offen ist:
Brauche ich selber so einen Webserver überhaupt?
Ziemlich sicher ja (mit einer kleinen Ausnahme, aber lies weiter). Ich erkläre dir warum. Wir werden es nachher so einrichten, dass du bei dir auf deinem PC einen Webserver installierst. Den brauchst du, weil dein PC nicht von allein damit umgehen kann, wenn HTTP-Anfragen rein kommen (falls überhaupt, dafür muss schließlich dein Port 80 erstmal geöffnet sein). Der weiß nämlich gar nicht, was in dem Fall zu tun ist. Genau deswegen muss auf dem System ein Programm (ein Dienst) installiert sein, der im Hintergrund läuft und auf HTTP-Anfragen wartet und reagiert. Du brauchst dafür übrigens keinen zweiten PC, dein PC kann in dem Fall Client und Server zugleich sein. Klingt komplizierter als es ist.
Der Dienst von dem hier die Rede ist, heißt wie schon erwähnt Apache - ein Webserver-Dienst. Und nicht nur irgendeiner, sondern im Internet der meistgenutzte. Wenn du irgendeine Webseite aufrufst, hängt also vermutlich ein Apache-Dienst dahinter. Dieser Apache Dienst tut -wenn er dann installiert ist- auf deinem PC folgendes:
<ul> <li>Er "lauscht" auf eingehende HTTP-Anfragen (alles was über Port 80 rein kommt)</li> <li>Wenn eine Anfrage eintrifft, bearbeitet er diese und liefert, sofern vorhanden, das angefragte Dokument</li> </ul>
Vielleicht fragst du dich an der Stelle, wofür du dafür einen Webserver-Dienst benötigst. Theoretisch kannst du normale HTML-Dateien (dateiname.html) ja auch ohne Webserver in deinem Browser ausführen. Ja stimmt, kannst du. Aber wenn du Dateien auch im lokalen Netzwerk verfügbar machen willst (damit z.B. deine Familienmitglieder ebenfalls deine programmierte Webseite sehen können), kommst du um einen Webserver nicht rum. Und statische HTML-Seiten können nur ganz normal über das Dateisystem aufgerufen, nicht über eine lokale URL - ok das kann verwirrend sein, auch dazu findest du im folgenden Verlauf noch Erläuterungen.
Nunja, und der Webserver ist eben auch unbedingt notwendig, wenn man serverseitig programmieren möchte - das heißt mit PHP programmieren möchte. Und das betreffend haben wir ja allerhand vor. (PHP kann kann in verschiedenen Modi oder als CLI ohne Webserver laufen, aber ignoriere du diese Info bitte, ich schreibe es nur der Vollständigkeit halber dazu).
Apache selbst kümmert sich also um HTTP-Anfragen und kann Webseiten an den anfragenden Browser liefern. Um aber PHP-Code auszuführen, muss zusätzlich ein PHP-Interpreter laufen. Jetzt bist du vermutlich vollends verwirrt - aber beruhige dich, denn:
Damit du keinen riesigen Aufwand mit der Installation von Apache, PHP und ggf. noch MySQL (dazu kommen wir irgendwann später) hast, gibt es diese ganzen wichtigen Sachen im Bundle, zu finden unter dem Namen "XAMPP". Das ist im Endeffekt ein Software-Paket, dass dir alle nötigen Programme und Dienste bereitstellt, um einen Webserver zum Laufen zu kriegen - und das vollautomatisch. Und damit beginnen wir nun:
<h3>Installation eines Webservers</h3>
<ul> <li>Gehe auf <a href="https://www.apachefriends.org" target="_blank" rel="noopener noreferrer">https://www.apachefriends.org</a> und lade dir das für deinen PC (ich schreibe die Anleitung für Windows-Nutzer, viele Dinge sind aber identisch zur Nutzung anderer Betriebssysteme) passende Installationsprogramm herunter.</li> <li>Ãffne die heruntergeladene Datei und führe das Setup aus - folge dabei den Anweisungen am Bildschirm.</li> <li>Bei der Auswahl der Komponenten ("Select components" steht dort) kannst du gern alles aktiviert lassen. Lieber zuviel als zu wenig.</li> <li>Folge den weiteren Schritten und installiere am Ende XAMPP.</li> <li>AnschlieÃend sollte das "xampp control panel" starten - falls nicht, suche es über das Windows-Menü.</li> </ul>
Das XAMPP Control Panel ...
... ist die zentrale Steuerung für deine Webserver-relevanten Dienste. Das Starten des Dienstes "Apache" startet den PHP-Interpreter gleich mit - davon siehst du nichts, das ist normal. Klicke also bei "Apache" auf "Starten". Wenn das ohne Fehler klappt, ist dein Webserver-Dienst erfolgreich gestartet. Falls es dabei irgendwelche Fehler gibt, schau mal nach ob du Skype geöffnet hast und schließe es in dem Zuge gleich. Skype verwendet oft den gleichen Port wie Apache (80 oder 443).
Webserver testen
Prüfen wir gleich mal, ob wir Erfolg hatten. Öffne deinen Browser und gib folgende Adresse ein: http://localhost Wenn sich jetzt die "Willkommen bei XAMPP"-Seite öffnet, hat alles bestens geklappt :) Falls nicht - hinterlasse mir unten einen Kommentar.
Falls der Vorgang erfolgreich war, hier weiterlesen. Warum hat das funktioniert? Von localhost hast du vielleicht noch nie was gehört. Macht nix, unten beim FAQ und im folgenden Abschnitt gehe ich genau darauf ein, was es damit auf sich hat. Jetzt erstmal zum groben Verständnis: localhost ist immer der Hostname des eigenen Rechners. Wir müssen quasi unseren eigenen Rechner über seinen Hostnamen ansprechen, damit Apache erkennt, dass es sich um eine HTTP-Anfrage handelt.
<h4>Zum weiterführenden Verständnis (wen's interessiert)</h4>
Lies dir diesen Absatz hier einfach durch, wenn du an zusätzlichen, technisch tiefergehenden Infos interessiert bist. Mit localhost ist der eigene Rechner gemeint - analog hierzu hat jeder PC zusätzlich auch eine lokale IP-Adresse, und das ist immer die 127.0.0.1. Diese beiden Daten (lokalen Hostnamen und lokale IP) kannst du jederzeit verwenden, um den Rechner anzusteuern, an dem du gerade sitzt. Jetzt ist es in lokalen Netzwerken (das interne Netzwerk bei dir Zuhause) so, dass du zusätzlich auch immer noch eine IP hast, die dein Router dir zugewiesen hat (oder die du dir im Netzwerkadapter selbst eingetragen hast - Stichwort statische IP). Das ist die IP, über die andere Netzwerkteilnehmer zu deinem PC kommunizieren können - in welcher Form auch immer. Je nach geöffneten Ports oder freigegebenen Ordnern kannst du so Freigaben einrichten um Daten zu teilen oder deine Webseiten zugänglich machen. Darüber hinaus können sich die anderen Netzwerkteilnehmer auch über deinen Computernamen (Hostname) verbinden - Namen lassen sich bekanntlich leichter merken als Nummern. Im Allgemeinen ist die IP-Adresse aber immer ein sichererer Weg, denn um den Namen aufzulösen, muss auf dem Router ein sog. DNS-Dienst laufen, der Hostname zu IP auflösen kann. Das erzähle ich wie gesagt einfach mal am Rande. Falls du also vor hast, deine programmierten Webseiten mit anderen Leuten bei dir zu Hause zu teilen, schreib's mir in die Kommentare, dann kann ich in einem gesonderten Artikel detailliert auf dieses Thema eingehen.
Aber weiter mit den wichtigen Dingen: Wieso und woher kommt jetzt diese XAMPP Willkommens-Seite? Bei Windows wird nach der Installation von XAMPP direkt unter dem Systemlaufwerk (Lokaler Datenträger, meist "C:\") ein Verzeichnis "xampp" erstellt. Dort befindet sich ein Unterverzeichnis "htdocs". Und dort liegt eine Datei "index.php" oder "index.html" (Dateien mit diesem Namen werden -falls vorhanden- immer automatisch geöffnet, wenn über die Adresszeile keine bestimmte Datei angegeben wurde - das erkläre ich dir genauer im nächsten Artikel unten im FAQ). Du kannst jetzt also wie eben beschrieben über den Windows Explorer zu diesem htdocs-Verzeichnis navigieren, und mit Doppelklick (oder Rechtsklick -> "Öffnen mit" -> "Firefox/Chrome/WasAuchImmer") die Datei in deinen Browser laden. Würde genauso funktionieren, ganz ohne Webserver und ohne dass Apache gestartet sein muss. Allerdings funktioniert das nur bei HTML-Dateien, bei PHP-Dateien schon nicht mehr. Der Browser kann eine HTML-Datei öffnen, weil er mit HTML-Code umgehen kann. Der Browser sorgt dafür, dass HTML-Inhalt dargestellt wird. Aber PHP kann er nicht verarbeiten - und dafür haben wir den Webserver und speziell den PHP-Interpreter ja.
Damit wären mit dieser Anleitung erstmal durch. Jetzt folgt noch ein FAQ und unten ein Fazit.
<h2>FAQ</h2>
Ist mein PC sicher? Jetzt hat doch alle Welt Zugriff auf meinen PC! Nein, niemand kommt da drauf - wie kommst du auf sowas? Dein PC ist nach der Installation des Webserver-Dienstes vom Rest der Welt noch genauso abgeschottet wie zuvor. Lediglich deine Kollegen / Freunde die sich im selben lokalen Netzwerk befinden wie du, können auf deine Seite zugreifen (je nach Einstellung). Deine Firewall ist (zumindest in Windows) so eingestellt, dass Apache automatisch Port 80 für interne Netzwerkteilnehmer zugänglich ist. Auch das lässt dich bei Bedarf ausschalten, indem man in den Firewall Einstellungen einfach bei den zugelassenen Programmen den Apache Dienst raus nimmt. Aber zurück zur Frage ob öffentliche Benutzer von außen eine Chance haben, irgendwas zu sehen: dein Port 80 mag zwar an deinem PC geöffnet sein, aber wer von außen bis dorthin will, muss ja auch erst mal deine öffentliche WAN-IP kennen und dann durch deinen Router durchkommen. Und der Router muss dann auch erstmal so eingestellt sein, dass er die Anfrage überhaupt an dich weiterleitet - was standardmäßig nicht der Fall ist, so vermurkst kann deine Netzwerkkonfiguration gar nicht sein, dass das alles aus Versehen freigeschaltet ist ;) Das kannst du bei Bedarf aber auch alles absichtlich so konfigurieren, siehe nächster Punkt:
Kann ich meinen Webserver mit der ganzen Welt teilen? Ja das geht, da müsstest du dann Portweiterleitungen in deinem Router einrichten (Beispiel: Port 80 von außen soll auf Port 80 eines bestimmten, lokalen Hosts weitergereicht werden) sowie die Nutzung eines DynDNS-Dienstes in Anspruch nehmen um den Wechsel der öffentlichen IP-Adresse die dein Provider dir zugeteilt hat direkt an den DynDNS-Dienst mitzuteilen, um deinen Webserver ständig über den gleichen Hostnamen verfügbar zu halten. Machbar ist alles, empfehlen tue ich das aber keinem. Denn du haftest voll und ganz für alle Schäden - nicht nur für die eigenen (dein Server wird gehacked und geht kaputt) sondern auch für Schäden die ggf. sogar durch deinen Server aufgrund eines Hacks verursacht werden (Versand von Spam, Verbreiten von Trojanern etc..). Lass besser die Finger davon.
Was bedeutet "Syntax"? Das Wort hab ich oben schonmal verwendet. Mit Syntax ist der "Satzbau" des Programmcodes gemeint - außerhalb der Programmierung und per Definition ist "Syntax" die sog. Lehre vom Satzbau. Im echten Leben gibt es Wörter, aus denen Sätze gebildet werden. Die Syntax legt fest, in welcher Form, Reihenfolge und Anordnung diese Wörter verwendet werden müssen, um korrekte Sätze zu bilden. Genauso ist es mit Programmier- oder Skriptsprachen. Es gibt vielerlei spezieller Wörter -in der Programmierung spricht man eher von Befehlen oder Anweisungen- die richtig angeordnet werden müssen, damit unser Computer überhaupt versteht, was wir von ihm wollen. Das (und einiges andere) unterscheidet einen Computer vom Menschen. Während ein Mensch einen Satz, der kleine Fehler enthält, dennoch richtig deuten kann -viele Begriffe werden einfach durch den Kontext eindeutig-, fehlt es einem Computer einfach an der nötigen Phantasie, um auch nicht korrekte Anweisungen zu verarbeiten. Dem musst du ganz genau sagen, wie er was zu machen hat.
Die Sache mit dem "localhost" hab ich nicht verstanden! Nun, das ist der lokale Hostname eines jeden Rechners. Egal an welchem PC man sitzt, wenn man den Host "localhost" anspricht, kontaktiert man damit immer den eigenen PC. Aufgelöst wird dieser auf die Loopback-IP-Adresse 127.0.0.1 - auch damit spricht man immer den eigenen PC an. Nehmen wir an, dein Kumpel hockt mit seinem PC bei dir (und ist ebenfalls im gleichen Netzwerk wie du, z.B. über WLAN) und er möchte jetzt auf seinem PC und in seinem Browser deine Webseite sehen (die "Willkommen bei XAMPP"-Seite). Wenn er bei sich jetzt auch "http://localhost" eingibt, bricht die Verbindung nach einigen Sekunden ab. Warum? Weil er versucht, eine HTTP-Anfrage an seinen eigenen Rechner zu stellen. Da bei ihm kein XAMPP (kein Webserver-Dienst) installiert ist, wird er aber keine Antwort bekommen. Das heißt er muss selbstverständlich die Anfrage an deinen PC stellen. Dein Freund kann deine Webseite übrigens nur sehen, wenn bei dir der Webserver läuft (du hast im XAMPP Control Panel bei "Apache" auf "Starten" geklickt). Da ihr beide im selben Netzwerk seid, funktioniert sowas, und zwar über die IP-Adresse. Dein PC und auch der deines Kumpels haben von eurem Router eine IP-Adresse zugewiesen bekommen. Welche das ist, kannst du herausfinden, indem du unten in der Taskleiste (neben der Uhrzeit) auf das Netzwerk-Symbol einen Rechtsklick machst, dann "Netzwerk- und Freigabecenter" öffnest und links auf "Adaptereinstellungen ändern" klickst. Dort siehst du deine Netzwerkadapter - wenn du über Kabel im Netzwerk bist, wähle hier den Eintrag wo etwas steht wie "Ethernet", bei WLAN wähle "WLAN" oder "WiFi" oder "Drahtlosverbindung" o.ä. Mache jedenfalls beim entsprechenden Adapter einen Rechtsklick und wähle "Status", im daraufhin öffnenden Fenster klickst du auf "Details..." und dort siehst du dann einen Eintrag "IPv4-Adresse". Der Wert dieses Eintrags ist deine IP-Adresse. Die soll dein Freund jetzt bei sich im Browser eintragen, also http://192.168.123.123 (je nachdem was deine IP ist). Und schon sieht er deine Webseite.
Skriptsprachen, PHP-Interpreter, Parsen zur Laufzeit, Whaaaaat?
- Skriptsprachen (PHP ist so eine) werden von einem Interpreter zur Laufzeit geparsed. Heißt im Klartext: deine .php-Datei wird im Browser geöffnet und erst in diesem Moment (zur Laufzeit) wird der Code vom Interpreter 1) eingelesen, 2) analysiert und 3) ausgeführt.
- Programmiersprachen hingegen werden einmalig von einem Compiler kompiliert (in Code übersetzt, der von der Maschine gelesen und verstanden werden kann) und können dann als fertige, jederzeit ausführbare Anwendung abgelegt (zum Beispiel .exe-Dateien).
<h2>Fazit</h2>
Erstmal Hut ab dass du es bis hierhin geschafft hast. Das war sicher viel Stoff auf einmal für dich. Ist mir aber lieber dir raucht der Kopf als wenn du bis zum Ende gelesen und die Hälfte nicht verstanden hast.
Die technische Basis ist jetzt geschafften - und wir haben zugegebenermaßen wirklich ziemlich weit unten angefangen. Im nächsten Artikel klären wir noch, was Programmierung überhaupt ist, suchen uns einen Editor in den wir unseren Code tippen können und legen mit der Programmierung los.
Wenn dir der Artikel gefällt oder weitergeholfen hat, freue ich mich natürlich über einen Kommentar :)
Gruß Link
Kommentare
Kommentar schreiben