PHP Tutorial | Lesbare URL in PHP OHNE Framework

preview_player
Показать описание
Im heutigen Video zeige ich vereinfacht, wie ein Router in PHP funktioniert. Ich erstelle eine Router funktion mit Regulären Ausdrücken, die man ohne einen Framework wie Laravel, Symfony, Slim, Zend und andere einbinden kann.

Support in Kommentaren;) Welches Thema interessiert dich als nächstes? Schreib es in Kommentar

#PHP #NOFramework #Routing
Рекомендации по теме
Комментарии
Автор

Habt ihr auch ein Router mit ReEx? Oder eher switch case auf $_GET['site']?

VitalijMik
Автор

Der Code wird viel zu lange angezeigt, ich kann ihn immer noch lesen. :-P

badmax
Автор

Ziemlich hektisch wirkendes Tutorial, aber sehr interessant und informativ :)

heinrichschiller
Автор

Einfach perfekt, dankeschön. Ich mag es nicht für eigene Projekte riesige Frameworks einzubinden und Dein Router rennt hier einwandfrei. Dank der Beispiele war die Umsetzung auch schnell möglich.

JanAllanZischke
Автор

Dieses Video muss ich mir später nochmals ansehen. Es war mir zu schnell. Das Problem Apache und htaccess vs NGINX habe ich gerade. In NGINX läuft vieles viel schneller. Früher habe ich einfach alle Anfragen mittels htaccess an eine index übergeben. Also ist das mit den Routen in NGINX möglich? Soweit so klar. Mit dem Coden komme ich leider noch nicht zurecht.

MeinDeutschkurs
Автор

Danke für das Tutorial. Was ich aber nicht verstehe:
Woher weiß der Server, dass er auf exakt diese index.php zugreifen und dessen Code ausführen muss? Denn wenn man bspw. localhost/user/42 eingibt, versucht der Browser doch auf den Ordner /user/42 zutugreifen, allerdings existiert der Ordner /user/42 ja nicht und die Datei index.php, die in diesem nicht existierenden Ordner ebenfalls nicht existiert (geile Formulierung, ich weiß), wird doch niemals ausgeführt. 🤔 eigentlich müsste der Server dann doch jedes Mal eine 404-Meldung ausgeben.

Es funktioniert ja aus irgendeinem mir nicht ersichtlichen Grund, also was übersehe ich? Danke schon einmal.

johnmuller
Автор

Hallo,

danke erstmal für das Tutorial. Mir sind beim Nachbauen jedoch 2 Dinge aufgefallen

1. Options +FollowSymlinks in der .htaccess führt bei mir zu einem Internal Server Error 500. Ich musste das ersetzen durch "Options +SymLinksIfOwnerMatch"
2. Der Redirekt funktioniert nicht, wenn man eine Datei hat, die (bis auf die Dateiendung) so heißt. Z.B. lag bei mir eine login.php im Verzeichnis, was dazu führte, dass weder /login noch /login/ funktionierte. Eine Erklärung dafür habe ich nicht gefunden.

stefanberg
Автор

Gibt es eine Möglichkeit wie ich die Werte die mir der Router zurück gibt an ein includetes php script übergeben kann?


Entschuldigung wenn die Frage kompliziert formuliert wurde. Wusste nicht wie ich es anders formulieren kann. 😐

yannickw_
Автор

Отличная реализация, хорошо всё объяснил.

Почтитащеры
Автор

Ich hätte nochmal eine kleine Anmerkung zum Router. Man kann ja theoretisch pro URL eine POST-Request verarbeiten. Angenommen es gibt eine Seite mit mehreren Formen, die jeweils andere Daten über POST abschicken (z.B Form1: Usernamen ändern, Form2: Passwort ändern). Der Router könnte physisch aber nur eine Form verarbeiten. Hier würde es dann zu Problemen kommen. Aber das ist auch echt nicht einfach, wenn man alles dynamisch generieren will. :)

alivesurvive
Автор

Puh, auch hier gut erklärt, doch werde ich das hier Stück für Stück raffen müssen um das nachzubauen. Hier hätte ich mir lieber etwas mehr Praxis gewünscht um besser folgen zu können. Bin aber auch ehr ein Noob, daher scheint mir das alles auch noch ziemlich kompliziert. Besten Dank. Werde auch das versuchen Umzusetzen. BG

pushme
Автор

Fast perfekt, fehlt nur noch ein dynamisches handling, z. B. wenn man ids in der URL übergeben wollen.

weblio
Автор

Tip für die Zuschauer: Falls ihr das Script nicht im DocumentRoot habt, wird es nicht funktionieren, wenn man von Anfang an mittippt. Dann ist der Pfad zur index.php in der REQUEST_URI und so greifen die RegEx für die Routes nicht.
Das kann man selbst zurechtfrickeln, oder man schaut sich zuerst die letzten 2 Minuten des Videos an. Dort wird die .htaccess Datei für apache erwähnt und auch das Kürzen der URI.
Man muss auch aufpassen, weil die Zuordnung der Routes zu Actions dadurch passiert, dass der Anfang der REQUEST_URI mit den Routes verglichen wird. Wenn man dann zB die Route "/users" für eine Liste und "/user" für den einzelnen User, dann triggert die URI "/user" auch die Route "/users", wenn die zuerst im Array steht.
Die URI "/index.php" und "/" behandelt der Web-Server gleich, weil die index.html bzw. index.php die Default-Seiten sind.
Ich hab die index.php und die / beim Rumprobieren aus der URI also einfach mal entfernt und erhielt "/" bzw "" als URI. Das triggert dann jede Route, die als erstes im Array steht.
Das Video gibt einen prima Start, um ein Routing eben nicht mit OOP zu bauen, so wie man das in den divesen MVC Videos sieht. Man kriegt auch Gelegenheit, sich am Kopf zu kratzen und zu überlegen, wieso es nicht tut was es soll, wenn man es etwas anpasst. :-}
Der Kerngedanke hier ist, dass man die Routes nicht mit switch oder diversen if findet, sondern eine array durchsucht, der die Routes enthält. Mit explode() und isset() müsste man die Routes auch in einem Array finden können.
Die RegEx mit den numerischen bzw Stringparametern hat aber auch was. --> Like

itzmi
Автор

Nichts gegen dich Vitalij. Jedoch finde ich es schade, dass du hauptsächlich zu sehen bist, anstatt den code zu länge und in rühe zu zeigen :- ( Sonst danke für deine Arbeit

afathieh