Portal > Foren > PHP > PHP-Programmierung > Ansatz: Redirect bei falscher Groß-/Kleinschreibung
Antwort
 
Themen-Optionen Thema durchsuchen
Alt 09.07.2007, 14:43 Nach oben    #1
Jonas
 
Benutzerbild von Artemis
 
Registriert seit: 03.06.2006
Beiträge: 244
Standard Ansatz: Redirect bei falscher Groß-/Kleinschreibung

Moin,

mir fehlt ein Ansatz, wie ich folgendes (ressourcenschonend und performant) realisieren kann:

Ich schreibe grad ein eigenes kleines Framework. Damit ihr mein Problem versteht, hier der relevante Aufbau:

index.php - Eine Bootstrap-Datei, welche alle Zugriffe erhält. Mittels PATH_INFO werden der Controller und die Methode rausgefiltert. Wenn jetzt index.php/Blog/Post aufgerufen wird, wird die Methode Post, des Blog-Controllers aufgerufen.

Datei-Aufbau ist so:
Code:
Controller/
  Blog.php
  Home.php
  ...
Bisher ist das so, dass Zugriffe auf index.php/blog oder index.php/BLOG mit einem 404er benantwortet werden, ist ja auch richtig, da das nicht existiert.

Wie kann ich aber jetzt bei falscher Groß-Kleinschreibung, mit einem 302er-Redirect auf die richtige Seite umleiten?

Meine erste Idee, war so etwas:
PHP-Code:
$Config['controllerRedirects'] = array(
    
'home' => 'Home',
    
'blog' => 'Blog'
); 
Dann wird halt für jeden Controller geguckt, ob er in dem Array steht, wenn ja, dann wird geguckt, ob die Groß-Klein-Schreibung korrekt ist. Wenn nicht, wird das halt umgeleitet, ansonsten wird halt wieder normal weitergemacht.
Das würde aber übermäßige händische Arbeit bedeuten, da ich für jeden Controller, einen Arrayeintrag machen muss. Außerdem wäre das für jede Methode eines Controllers noch einmal zu machen, wenn ich das auch bei den Methoden haben möchte.

Gerade ist mir die Idee gekommen, dass ganze über das Dateisystem zu machen, aber das wird wahrscheinlich nicht wirklich performant sein.

Ich hoffe auf Ideen,
Artemis
__________________
Applikations-Programmierung:
BlitzMax, BlitzPlus

Webentwicklung:
PHP, (X)HTML, CSS, JavaScript, MySQL


Artemis ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 09.07.2007, 14:52 Nach oben    #2
Martin Eisengardt
 
Registriert seit: 30.03.2006
Ort: Pfinztal
Beiträge: 355
Standard

Was spricht dagegen, im Dateisystem grundsätzlich alles in Kleinbuchstaben zu haben und den Request immer mit strtolower anzupassen? Dann brauchst du eigentlich auch keine Redirects...
__________________
Open Sourcing the Online Gaming Universe
PHP/SQL/Java/C++/Assembler.
Seit Jahren Mitglied und Entwickler in einem der wohl größten Java-Projekte der Welt: http://weblogs.java.net/blog/hansmul...e_desktop.html
mepeisen ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 09.07.2007, 15:01 Nach oben    #3
Bastian Fenske
 
Registriert seit: 04.01.2006
Ort: Kassel
Beiträge: 848
Standard

Hi.

Ich würde mir hier über Performance nicht viel Gedanken machen. Das ganze ist ja ein Fallback-System und der Code dazu wird nur ausgeführt, wenn was schief gegangen ist und das wird ja a) nicht so oft vorkommen und b) kann man jemandem, der eine Adresse falsch abtippt ja auch mal ein paar Millisekunden mehr warten lassen, oder?

Dann würde ich vielleicht eine Konvention definieren, z.B. $sController === ucfirst(strtolower($sController)). Damit findest du ja sehr schnell das gemeinte.

BTW: Passender wäre hier der Ststus-Code 303.

Basti
Basti ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 09.07.2007, 15:07 Nach oben    #4
Jonas
 
Benutzerbild von Artemis
 
Registriert seit: 03.06.2006
Beiträge: 244
Standard

Das sieht dann aber nicht so schön aus.

Ne Scherz beiseite: Danke für den Anstoß, manchmal sitzt man eben auf dem Schlauch.

Da ich aber Groß-/Kleinschreibung in der Url haben möchte, könnte ich ja so etwas machen:
PHP-Code:
<?php

$sControllerName 
'TollerController';

class 
Controller_TollerController extends Controller
{
...
Das würde dann alle Urls ('TOLLERcontroller', 'tollercontroller', ...), außer eben 'TollerController' nach 'TollerController' umleiten.

EDIT:
Hatte Bastis Post noch nicht gesehen.
Das stimmt natürlich, werde ich drüber nachdenken.
__________________
Applikations-Programmierung:
BlitzMax, BlitzPlus

Webentwicklung:
PHP, (X)HTML, CSS, JavaScript, MySQL



Geändert von Artemis (09.07.2007 um 15:09 Uhr)
Artemis ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Antwort

Lesezeichen


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks sind an
PingBacks sind an
RefBacks sind aus


Alle Zeitangaben in WEZ +1. Es ist jetzt 22:29 Uhr.


Powered by vBulletin® Version 3.7.4 (Deutsch)
Copyright ©2000 - 2008, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45