Profil | Mitglieder | Registrieren | Start | Suche


PHP-Support.de » Programmierung » Sonstige Sprachen » Htaccess get Parameter generisch rewriten    » Hallo Gast [Login | Registrieren]

Neues Thema | Antworten   

Autor Beitrag
Ma27
Mitglied
Anfänger


Dabei seit: 01.03.2013
Herkunft: München
Posts: 49
     Htaccess get Parameter generisch rewriten Zitat | Bearbeiten

Hi leute,

ich bin gerade dabei, eine Klasse zu entwickeln, die mit GET Parametern Templates und zugehörige Controller beliebig tief verschachtelt. Nun bin ich aber an dem Punkt angelangt, wo ich sag, dass ich get Parameter nicht mehr sehen kann. Ich könnte jetzt alle benötigten Parameter manuell erweitert. Ich hab aber vor, die Klasse zum Download bereit zu stellen, allerdings würden die User des Spaßes wohl andere Parameter verwenden als ich und müssten die htaccess Datei ändern, was ich nicht sehr gerne hab. Nun würde mich mal interresieren, ob man Parameter generisch rewriten kann, sodass aus "URL.com/?y=xxx&d=wasweisich&usw" "URL.com/xxx/wasserdicht/ wird und das mit allen Get Parametern geht.

Lg ma27


LG Ma27

01.10.2013, 07:46 Profil | PM | E-Mail  
k3ks
Mitglied
Aktiver User


Dabei seit: 25.05.2008
Herkunft: Hamburg
Posts: 150
      Zitat | Bearbeiten

Hallo Ma27,

du konntest einfach alles nach URL.com an php senden und da muss man dann seine routen konfigurieren.

 Code 
1:
2:
3:
4:
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php [QSA,L]


 PHP 
1:
2:
3:

<?php
var_dump
($_SERVER['REQUEST_URI']);


Ich weiß nicht ob dir das weiter Hilft dafür müsste ich deine Klasse sehen.




01.10.2013, 10:49 Profil | PM | E-Mail  
Ma27
Mitglied
Anfänger


Dabei seit: 01.03.2013
Herkunft: München
Posts: 49
      Zitat | Bearbeiten

Hallo k3ks,

danke für deine Antwort!

Ich weiß nicht, ob wir uns recht verstanden haben. Die Lösung, die du mir Vorschlägst, kann man nicht über $_GET aufrufen, wie es gedacht war.

Die Funktion zur generischen Einbindung war so gedacht, dass man einen Pfad angibt, wo die Templates gespeichert werden, den Namen des Get Parameters angibt und ein Template, dass gerendert wird, wenn der GET Parameter nicht existiert.

Jetzt wollte ich, dass alle GET Parameter rewrited werden.

Also:
 PHP 
1:
2:

index.php?param1=value1&param2=value2 usw.


wird zu

 PHP 
1:
2:

/value/value2/

rewrited.

Ich hoffe, dass du mir helfen kannst,

LG Ma27


LG Ma27

01.10.2013, 14:47 Profil | PM | E-Mail  
k3ks
Mitglied
Aktiver User


Dabei seit: 25.05.2008
Herkunft: Hamburg
Posts: 150
      Zitat | Bearbeiten

und was ist wen du "example.org/key1/value1/key2/value2" machst?


01.10.2013, 17:11 Profil | PM | E-Mail  
Ma27
Mitglied
Anfänger


Dabei seit: 01.03.2013
Herkunft: München
Posts: 49
      Zitat | Bearbeiten

Wohl eher nicht. Wenn es der Problemlösung hilft, dann auf jeden fall


LG Ma27

01.10.2013, 17:47 Profil | PM | E-Mail  
Ma27
Mitglied
Anfänger


Dabei seit: 01.03.2013
Herkunft: München
Posts: 49
      Zitat | Bearbeiten

Kann mir denn keiner helfen??


LG Ma27

03.10.2013, 11:02 Profil | PM | E-Mail  
FalkenaugeMihawk
Mitglied
Perfekter User


Dabei seit: 05.06.2010
Herkunft: Schweiz
Posts: 2613
      Zitat | Bearbeiten

Nun, es gibt keine ultimative Rekursive Lösung für die .htaccess. Warum fasst du nicht alle zusammen und splittest die Werte dann mit PHP auf?

Also so:
 PHP 
1:
RewriteRule ^(.*)$ index.php?income=$1


Und in der index.php dann:
 PHP 
1:
2:
3:
<?php
$values 
explode("/"$_GET['income']);
?>



03.10.2013, 16:44 Profil | PM | E-Mail  
k3ks
Mitglied
Aktiver User


Dabei seit: 25.05.2008
Herkunft: Hamburg
Posts: 150
      Zitat | Bearbeiten

Zitat:
Orginal von FalkenaugeMihawk
Nun, es gibt keine ultimative Rekursive Lösung für die .htaccess. Warum fasst du nicht alle zusammen und splittest die Werte dann mit PHP auf?

Also so:
 PHP 
1:
RewriteRule ^(.*)$ index.php?income=$1


Und in der index.php dann:
 PHP 
1:
2:
3:
<?php
$values 
explode("/"$_GET['income']);
?>




Ähm das habe ich doch oben schon vorgeschlagen Oo



04.10.2013, 21:48 Profil | PM | E-Mail  
FalkenaugeMihawk
Mitglied
Perfekter User


Dabei seit: 05.06.2010
Herkunft: Schweiz
Posts: 2613
      Zitat | Bearbeiten

Zitat:
Orginal von k3ks
Zitat:
Orginal von FalkenaugeMihawk
Nun, es gibt keine ultimative Rekursive Lösung für die .htaccess. Warum fasst du nicht alle zusammen und splittest die Werte dann mit PHP auf?

Also so:
 PHP 
1:
RewriteRule ^(.*)$ index.php?income=$1


Und in der index.php dann:
 PHP 
1:
2:
3:
<?php
$values 
explode("/"$_GET['income']);
?>




Ähm das habe ich doch oben schon vorgeschlagen Oo


Nein, denn bei PHP kommt ja so nichts an. Du schreibst einfach alles auf die index.php um. Aber damit auch etwaige Angaben über die URL ankommen, müssen bei deiner Variante tatsächlich GET-Parameter definiert werden. Das will er ja nicht.


04.10.2013, 22:10 Profil | PM | E-Mail  
Ma27
Mitglied
Anfänger


Dabei seit: 01.03.2013
Herkunft: München
Posts: 49
      Zitat | Bearbeiten

Nun ja, mein Ziel war es, die Funktion über GET parameter zu ermöglichen und gleichzeitig die URL zu rewriten. Aber wahrscheinlich funktioniert das so nicht .
Nun ja, dann leite ich eben doch alles auf die index.php um.

Danke für eure Hilfe, Ma27


LG Ma27

05.10.2013, 12:41 Profil | PM | E-Mail  
FalkenaugeMihawk
Mitglied
Perfekter User


Dabei seit: 05.06.2010
Herkunft: Schweiz
Posts: 2613
      Zitat | Bearbeiten

Zitat:
Orginal von Ma27
Nun ja, mein Ziel war es, die Funktion über GET parameter zu ermöglichen und gleichzeitig die URL zu rewriten. Aber wahrscheinlich funktioniert das so nicht .
Nun ja, dann leite ich eben doch alles auf die index.php um.

Danke für eure Hilfe, Ma27

Also ich weiss jetzt nicht mehr, was du genau wolltest. Ich habe das aus deinem Beispiel abgeleitet. Wenn du uns nicht genau erklärst, was du genau willst, dann können wir nicht helfen.


05.10.2013, 14:20 Profil | PM | E-Mail  
Ma27
Mitglied
Anfänger


Dabei seit: 01.03.2013
Herkunft: München
Posts: 49
      Zitat | Bearbeiten

@FalkenaugeMihawk,

dann versuche ich nochmal das Problem darzustellen: ich hab eine Klasse geschrieben, die in der Lage ist, mehrere Templates ineinander zu verschachteln (ähnlich wie beim HMVC Pattern). Jetzt wollte ich die Klasse um eine Funktion erweitern, die auf generischem Weg die Templates lädt. Daher sollte diese einen GET Parameter übergeben bekommen, dessen Wert der Name des Templates ist, welches gerendert werden soll. Jetzt ist es so, dass der Benutzer auf jeder Stufe das so machen kann und man immer beliebige GET Parameter hernehmen kann.
Dann sähe die URL etwa so aus: url.com/?rootTemplate=xxx&subTemplate1=yyy&subTemplate2=zzz usw. Jetzt will ich die URL rewritet haben, dass daraus url.com/xxx/yyy/zzz wird aber man trotzdem über die betreffenden GET Parameter diese Elemente aufrufen kann.

Ich hoffe, ich hab mich verständlich ausgedrückt,


LG Ma27

06.10.2013, 17:03 Profil | PM | E-Mail  
FalkenaugeMihawk
Mitglied
Perfekter User


Dabei seit: 05.06.2010
Herkunft: Schweiz
Posts: 2613
      Zitat | Bearbeiten

Zitat:
Orginal von Ma27
@FalkenaugeMihawk,

dann versuche ich nochmal das Problem darzustellen: ich hab eine Klasse geschrieben, die in der Lage ist, mehrere Templates ineinander zu verschachteln (ähnlich wie beim HMVC Pattern). Jetzt wollte ich die Klasse um eine Funktion erweitern, die auf generischem Weg die Templates lädt. Daher sollte diese einen GET Parameter übergeben bekommen, dessen Wert der Name des Templates ist, welches gerendert werden soll. Jetzt ist es so, dass der Benutzer auf jeder Stufe das so machen kann und man immer beliebige GET Parameter hernehmen kann.
Dann sähe die URL etwa so aus: url.com/?rootTemplate=xxx&subTemplate1=yyy&subTemplate2=zzz usw. Jetzt will ich die URL rewritet haben, dass daraus url.com/xxx/yyy/zzz wird aber man trotzdem über die betreffenden GET Parameter diese Elemente aufrufen kann.

Ich hoffe, ich hab mich verständlich ausgedrückt,

Warum sollte der Benutzer bestimmen können, welche Templates geladen werden sollen? Wo ist der Sinn davon?


06.10.2013, 17:17 Profil | PM | E-Mail  
Ma27
Mitglied
Anfänger


Dabei seit: 01.03.2013
Herkunft: München
Posts: 49
      Zitat | Bearbeiten

@FalkenaugeMihawk,

ich geb zu - es war mein Fehler.
Ich hab mich wohl etwas zu undeutlich ausgedrückt. Ich meine mit Benutzer den Entwickler, der die Klasse verwendet. Der soll entscheiden, welche GET Parameter verwendet werden. Und alle diese GET Parameter (also jeder mögliche) sollten rewritet werden.


LG Ma27

07.10.2013, 13:34 Profil | PM | E-Mail  
FalkenaugeMihawk
Mitglied
Perfekter User


Dabei seit: 05.06.2010
Herkunft: Schweiz
Posts: 2613
      Zitat | Bearbeiten

Nun, mit meiner Methode kann man unendlich viele Templates laden. Ansonsten kannst du nur fest definieren, wie viele und wo das ganze sein muss.
 PHP 
1:
RewriteRule $(.*?)/(.*?)/(.*?)^ index.php?temp1=$1&temp2=$2&temp3=$3

Ich sehe nur diese zwei Möglichkeiten.


07.10.2013, 17:52 Profil | PM | E-Mail  
Ma27
Mitglied
Anfänger


Dabei seit: 01.03.2013
Herkunft: München
Posts: 49
      Zitat | Bearbeiten

Hallo FalkenaugeMihawk,

danke für deine Antwort. Ich habe nach so etwas gesucht. Bloß noch eine Frage: kann man auch die Parameter frei wählen oder hört da die flexibilität auf?

Danke schon mal für deine Hilfe,

Ma27


LG Ma27

08.10.2013, 22:38 Profil | PM | E-Mail  
Htaccess
Mitglied
Sehr guter User


Dabei seit: 22.08.2010
Herkunft: Deutschland
Posts: 668
      Zitat | Bearbeiten

Die Parameter kann man schon frei wählen, ist meines erachtens nicht vorteilhaft da so ggf. Sicherheitslücken entstehen können.


09.10.2013, 14:07 Profil | PM | E-Mail  
DingsDaBums
Mitglied
Exzellenter User


Dabei seit: 12.09.2010
Herkunft: keine Angabe
Posts: 2384
      Zitat | Bearbeiten

Zitat:
Orginal von htaccess
[...] da so ggf. Sicherheitslücken entstehen können.


In wiefern? Beispiel?


@topic
Edit: Mein Vorschlag wurde schon weiter oben beschrieben.


Schau mal bei meinem Projekt vorbei. Vielleicht ist das ja was für dich MyStartPanel - Deine persönliche Startseite mit deinen Favoriten
Auf der Suche nach einem guten Vokabeltrainer? Vokabeltrainer Cramfire - Schnell und effektiv Vokabeln lernen

Post wurde schon 2x editiert, das letzte mal am 09.10.2013 um 18:52 von DingsDaBums
09.10.2013, 15:43 Profil | PM | E-Mail  
FalkenaugeMihawk
Mitglied
Perfekter User


Dabei seit: 05.06.2010
Herkunft: Schweiz
Posts: 2613
      Zitat | Bearbeiten

Zitat:
Orginal von DingsDaBums
Zitat:
Orginal von htaccess
[...] da so ggf. Sicherheitslücken entstehen können.


In wiefern? Beispiel?


@topic
Also ich würde es (wenn es in deinem Fall geht) so machen, dass einfach bei der URL www.domain.de/testA/testB/ABC/1 alles hinter dem .de/ einer GET Variable übergeben wird.

Dann würde der Server in dem Fall das so umschreiben:
www.domain.de/index.php?param=testA/testB/ABC/1

Dann müsstest du das ganze einfach bei / zerlegen und kannst dann auf die einzelnen Elemente zugreifen. Zum Beispiel Element 3 oder 1 aus der Parameterliste.
Und an der Stelle, wo du dann eben Template1, Template2 usw. festlegen kannst, ist dann eben Template1 das erste Element, Template2 das zweite usw...

Aber je nach dem wie du jetzt den Rest programmiert hast, wäre diese Lösung vielleicht auch zu speziell.

Zitat:
Orginal von FalkenaugeMihawk
Nun, es gibt keine ultimative Rekursive Lösung für die .htaccess. Warum fasst du nicht alle zusammen und splittest die Werte dann mit PHP auf?

Also so:
 PHP 
1:
RewriteRule ^(.*)$ index.php?income=$1


Und in der index.php dann:
 PHP 
1:
2:
3:
<?php
$values 
explode("/"$_GET['income']);
?>




edit: Du kannst die Namen der Parameter frei wählen, solange sie keine unnütze Umlaute o.ä. enthalten.




Post wurde schon 1x editiert, das letzte mal am 09.10.2013 um 16:50 von FalkenaugeMihawk
09.10.2013, 16:48 Profil | PM | E-Mail  
Seiten (1):  1 
PHP-Support.de » Programmierung » Sonstige Sprachen » Htaccess get Parameter generisch rewriten   

Neues Thema | Antworten   


Powered by Command Board 1.0 - Beta 2.0 © 2004-08 PHP-Einfach | Impressum | Datenschutz