Usability vs. Implementierbarkeit

Usability vs. Implementierbarkeit

am 05.10.2006 22:04:45 von Sebastian Suchanek

Hallo NGs!

Beim Versuch, mit user- und suchmaschinenfreundlicheren URLs zu
experimentieren, habe ich mich dummerweise in eine Zwickmühle
manövriert, zu der ich gerne Eure Meinung hätte.

Zunächst zum Ist-Zustand. Es geht um die (Unter-)Seite:

http://www.bm-m.net/deutsch/sammlung/

Das Problem dieses Zustandes sieht man, wenn man in der Liste
blättert oder Detailansichten aufruft: Die dahinterstehenden
PHP-Skripte werden mit Bandwurmparamtern aufgerufen.

Der Plan war nun, die URLs eben mit Hilfe von mod_rewrite
"schöner" zu gestalten.
Inzwischen bin ich vorangekommen (nur auf meinem lokalen
Testsystem, noch nicht online), daß die Liste und die
Detailansicht sowie die Zusatzbilder im "Grundzustand" nach
folgenden Mustern funktionieren:

http://www.bm-m.net/deutsch/sammlung/liste/1
http://www.bm-m.net/deutsch/sammlung/liste/2
...
http://www.bm-m.net/deutsch/sammlung/modell/1/
http://www.bm-m.net/deutsch/sammlung/modell/42/
...
http://www.bm-m.net/deutsch/sammlung/modell/13/bilder
http://www.bm-m.net/deutsch/sammlung/modell/69/bilder
...

Diese "virtuellen" URLs werden intern an die tatsächlich
vorhandenen PHP-Skripte in /deutsch/sammlung weitergeleitet.

Soweit, so gut. Allerdings möchte ich meinen Besucher auch
"Mehrwertoptionen" bieten wie z.B. Such- und Filterfunktionen,
benutzerdefinierte Sortierungen etc.
Hierbei komme ich natürlich nicht umhin, in irgendeiner Form
(Such-)Paramter zu erfassen und an die beteiligten Skripte
weiterzureichen.

- Erste Möglichkeit: Arbeiten mit POST-Formularen und Cookies.
=> Schlecht, weil der Benutzer kein Suchergebnis bookmarken
kann und möglicherweise Cookies gar nicht zuläßt.

- Zweite Möglichkeit: Paramter an die o.g. "virtuellen" URLs
"konventionell" anhängen, also z.B. "sammlung/liste/1?pp=25".
=> Schlecht, weil erstens damit das ursprüngliche Ziel
augegeben wird und zweitens mod_rewrite anscheinen keine
Möglichkeit hat, die Paramter hinter der virtuellen URL zu
verarbeiten.

- Dritte Möglichkeit: Parameter in den virtuellen Dateinamen mit
hinein zu codieren, wie das z.B. eBay seit einiger Zeit macht.
Also z.B. "sammlung/liste/1_W0QQppZ25" Beim generieren von
href-Links aus PHP heraus kein Problem, auch mod_rewrite kann
die Paramter an den "realen" Skriptaufruf zumindest als Ganzes
mitgeben. (Wieder Auseinanderfieseln ist auch kein großes
Ding.)
*Aber*: Bislang sehe ich keinen sinnvollen Weg, beim ersten
Anzeigen nach einem Formular-Abschicken gleich eine "schöne"
URL zu erhalten.
* Lösung 3a: Submit via POST, danach weiter wie bei 3.
=> eher schlecht, weil dann zumindest das
unmittelbare Ergebnis nicht "bookmarkbar", nur
von da aus aufgerufene weitere Seiten.
* Lösung 3b: Verarbeitung mit einem zwischengeschalteten
Skript, das eine "schöne" URL bastelt und diese
per unmittelbarem Meta-Refresh aufruft.
=> eher schlecht, weil z.B. IE-Nutzer Meta-
Refreshes abgeschaltet haben könnten.
(Ausweg über einen wenig eleganten "Wenn Sie
nicht weitergeleitet werden, klicken Sie
>hier<"-Link.)

Meine Frage an dciwam wäre nun, wie Ihr die Usability-
Problematik der ganzen Geschichte einsetzt und an dclpm, wie man
evtl. doch irgendwie "schöne" URLs direkt mit Formular-Aufrufen
"verknüpfen" kann.


Tschüs,

Sebastian

PS: XP dciwam & dclpm, f'up2 beim Antworten bitte passend setzen

--
http://www.baumaschinen-modelle.net
http://www.schwerlast-rhein-main.de

Re: Usability vs. Implementierbarkeit

am 05.10.2006 22:39:45 von Markus Keppeler

Hallo!

Sebastian Suchanek schrieb:
> - Zweite Möglichkeit: Paramter an die o.g. "virtuellen" URLs
> "konventionell" anhängen, also z.B. "sammlung/liste/1?pp=3D25".
> =3D> Schlecht, weil erstens damit das ursprüngliche Ziel
> augegeben wird und zweitens mod_rewrite anscheinen keine
> Möglichkeit hat, die Paramter hinter der virtuellen URL zu
> verarbeiten.

Das ist müsste mit dem mod_rewrite "Parameter" [QSA] möglich sein, un=
d
ist IMO auch ne relativ schöne Lösung.

Frei nach dem Motto "sammlung/liste/1 ist die Basis-URL" und
User-spezifische Geschichten (Suchparameter etc.) werden per GET
angehängt.

Zum Rest soll jemand was schreiben, der sich damit auskennt ;)

cheerio,
Markus

--=20
Konfuzius sagt: Hör endlich auf zu jammern und lauf los, du
Schlappschwanz. Kuschelpädagogik war gestern. (Achim Achilles)

http://www.markus-keppeler.de/

Re: Usability vs. Implementierbarkeit

am 05.10.2006 22:52:30 von Sven Drieling

Sebastian Suchanek wrote:

Hallo,

> - Zweite Möglichkeit: Paramter an die o.g. "virtuellen" URLs
> "konventionell" anhängen, also z.B. "sammlung/liste/1?pp=3D25".

?search=3Dfoo&page=3D42 ist IMHO das was man bei einer Suche erwartet.=

Bei Filtern macht eventuell auch die Angabe innerhalb des Pfades Sinn,=

das kommt auf die Filteroptionen an.
=20
> =3D> Schlecht, weil erstens damit das ursprüngliche Ziel
> augegeben wird und zweitens mod_rewrite anscheinen keine
> Möglichkeit hat, die Paramter hinter der virtuellen URL zu
> verarbeiten.

Macht ein angehängtes %{QUERY_STRING} das was Du möchtest?



Die Frage hat nicht viel mit PHP zu tun, sondern mit Webdesign
(dciwa) im Allgemeinen und Webserver/Apache (dcsw) im Speziellen.


tschuess
[|8:)

Re: Usability vs. Implementierbarkeit

am 06.10.2006 00:07:36 von Lars Feyerabend

Sebastian Suchanek schrieb:

> * Lösung 3b: Verarbeitung mit einem zwischengeschalteten
> Skript, das eine "schöne" URL bastelt und diese
> per unmittelbarem Meta-Refresh aufruft.
> => eher schlecht, weil z.B. IE-Nutzer Meta-
> Refreshes abgeschaltet haben könnten.

Du könntest stattdessen mit "301 Moved Permanently" und
einem "Location"-Header mit der neuen URL antworten. Ich wüsste keinen
Browser, der das ignoriert.

Gruß,
Lars

Re: Usability vs. Implementierbarkeit

am 06.10.2006 15:57:52 von Alex Hepp

Sebastian Suchanek schrieb:
> Hallo NGs!
> [...]
> - Zweite Möglichkeit: Paramter an die o.g. "virtuellen" URLs
> "konventionell" anhängen, also z.B. "sammlung/liste/1?pp=25".
> => Schlecht, weil erstens damit das ursprüngliche Ziel
> augegeben wird und zweitens mod_rewrite anscheinen keine
> Möglichkeit hat, die Paramter hinter der virtuellen URL zu
> verarbeiten.

also mit dem suchen oder filtern ist das so ne sache, bei der Suche
finde ich hat man sogar sehr schöne parameter, und damit urls. Bei
filtern wohl eher nicht, da diese intern definiert sein werden, und per
ID angesprochen und weitergereicht werden, allerdings wüsste ich auch
nicht, wo der Sinn sein sollte, diese Filter "schön" zu gestalten, zumal
man dadurch irgendwann auch unglaublich lange URLs bekommt!

> - Dritte Möglichkeit: Parameter in den virtuellen Dateinamen mit
> hinein zu codieren, wie das z.B. eBay seit einiger Zeit macht.
> Also z.B. "sammlung/liste/1_W0QQppZ25" Beim generieren von
> href-Links aus PHP heraus kein Problem, auch mod_rewrite kann
> die Paramter an den "realen" Skriptaufruf zumindest als Ganzes
> mitgeben. (Wieder Auseinanderfieseln ist auch kein großes
> Ding.)

Das machst Du doch jetzt auch schon, denn Dein liste/1 wird doch wohl
liste.php?pos=0 umgewandelt, oder wie? Also ist das doch nix anderes ...

> *Aber*: Bislang sehe ich keinen sinnvollen Weg, beim ersten
> Anzeigen nach einem Formular-Abschicken gleich eine "schöne"
> URL zu erhalten.
> * Lösung 3a: Submit via POST, danach weiter wie bei 3.
> => eher schlecht, weil dann zumindest das
> unmittelbare Ergebnis nicht "bookmarkbar", nur
> von da aus aufgerufene weitere Seiten.
> * Lösung 3b: Verarbeitung mit einem zwischengeschalteten
> Skript, das eine "schöne" URL bastelt und diese
> per unmittelbarem Meta-Refresh aufruft.
> => eher schlecht, weil z.B. IE-Nutzer Meta-
> Refreshes abgeschaltet haben könnten.
> (Ausweg über einen wenig eleganten "Wenn Sie
> nicht weitergeleitet werden, klicken Sie
> >hier<"-Link.)

Du wirst bei POSTs immer das Problem haben, dass wenn Du nicht im php
Script $_REQUEST verwendest, anstatt $_POST od. $_GET, dass bookmarks
schwierig sind... Es sei denn, Du wählst tatsächlich einen der o.g.
Workarounds, die für mich alle zwar scheinbar funktionieren, allerdings
nicht unbedingt dafür gedacht sind! Ebenso wie der Status 301, der
weiter unten erwähnt wurde, eigentlich einen anderen Sinn und Zweck hat!
Meine Idee dazu: Biete doch einen Button an, der das Ergebnis als
bookmarklink anbietet (zb. als popup, oder in einem Hidden div), dann
musst Du aber, wie ich oben sagte, wirklich $_REQUEST im Skript
verwenden, was auch seine Vor- und Nachteile hat...

HTH
gruß Alex