Gunther: Zusatzfrage: Kodierung, Query Strings und anderes ...

Beitrag lesen

Hi,

auch hier erstmal noch mein Dank für die klaren Aussagen, wie du es machen würdest - das hilft einem doch erheblich bei der Entscheidungsfindung.

Etwas unsicherer bin ich mir schon bei der Suche. Ich dachte bisher an etwas wie:
Suchseite: http://example.com/Search:
Ergebnisseite: http://example.com/Search(result?):CSS+HTML+Usability

Ich würde die Suchseite selber vielleicht nur
http://example.com/Search
nennen - das wäre analog dazu, unter /search.php nur das Suchformular auszuliefern, und unter
http://example.com/Search:Suchbegriff
dann die Ergebnisse zu diesem Suchbegriff, analog zu /search.php?query=Suchbegriff

Ja, ist irgendwie "stimmiger" vom System her.
Werde ich so machen -> erledigt!

Ein weiterer Punkt, der mir Kopfzerbrechen bereitet, ist die Sache mit dem Query String. Was mir sehr plausibel erscheint ist, dass es keine schlechte Idee ist, einen vorhandenen QS auf die enthaltenen Variablen zu prüfen und nur die durchzulassen, die als "erlaubt" hinterlegt sind. Auch könnte man darauf achten, dass bspw. nur die benötigten Variablen, d.h. die mit einem Wert, und stets in gleicher Reihenfolge sortiert im QS vorkommen.
Frage: Lohnt sich der Aufwand?

Weiss ich nicht.
Das Querystring-Parameter i.a.R. keine bestimmte Reihenfolge voraussetzen, ist generell erst mal ein Vorteil, den man durch Nutzung von mod_rewrite für "sprechendere" URLs sowieso erst mal zu nichte macht.

Die Sortierung würde ja wenn eh nur in der internen Verarbeitung stattfinden.

Bisher weiß ich noch gar nicht, ob ich überhaupt eine Seite haben werde, die per GET Daten versendet.

Tritt bei mir auch mehr und mehr in den Hintergrund - kommen eigentlich so gut wie nur noch bei AJAX-Requests zu Zuge, wo mich "schöne" URLs nicht so interessieren (müssen).

Genau. Nach meiner bisherigen Vorstellung soll es bei mir ähnlich werden. So überlege ich bspw., ob ich die Kommentare auf einer Artikel-Seite per AJAX nachlade, anstatt diese von vornherein gleich mitzusenden (oft machen die Kommentare ja mehr aus, als der eigentliche Artikel). Und mit einem Fallback, falls kein JS verfügbar, bzw. deaktiviert ist, sofern ich das hinbekomme, ohne den Rest meines Konzepts über den Haufen werfen zu müssen. ;-)
Einen Tipp, wie man das am sinnvollsten anstellt?

Andererseits könnte man so bspw. aber auch häufig vorkommende Suchanfragen cachen (vorausgesetzt natürlich, die Suchbegriffe und -kriterien sind exakt gleich).

Ob du nun /Search:Suchbegriff oder ?search.php?query=Suchbegriff cachen lässt, macht doch keinen Unterschied?

Nein, macht es nicht. Es wäre halt nur "einfacher" festzustellen, ob eine Suchanfrage tatsächlich identisch mit einer bereits gecachten ist. Nach meiner bisherigen Idee, möchte ich ja u.a. auch eine erweiterte Suchmöglichkeit anbieten, die u.a. wahlweise eine AND oder OR Verknüpfung von Tag-Names erlaubt.

Und dann ist da noch das leidige Thema mit der "Besucher-Identifizierung/ -wiedererkennung". Denn ich würde dem User bspw. verschiedene Layouts (zumindest 2) anbieten wollen. Blöd nur, wenn der dann keine Kekse akzeptiert. Dann hätte ich in jedem Request die schei.. Session-ID. Oder gibt es für dieses Problem noch eine andere Lösung? Oder soll ich diesen Usern dann mitteilen, dass Cookies zwingend erforderlich sind für diese "Komfort-Funktion"?

Würde ich machen, ja.
Zwei verschiedenen Layouts ändern an den Daten selber nichts - also sehe ich auch keinen Grund, diese unter zwei verschiedenen Adressen anzubieten.

Danke für die "Bestätigung". Ich bin mittlerweile eh mehr und mehr der Ansicht, dass man Cookies und Javascript für Dinge des "Komforts" eben einfach voraussetzen darf - wer das, aus welchen Gründen auch immer, nicht möchte, der hat halt Pech.

Jetzt nochmal kurz zurück zu dem Thema "Kontextwechsel erkennen und behandeln".
Wenn ich den Request in meinem PHP-Script verarbeite, muss ich dann auch irgendetwas de-/codieren, oder kann ich einen evt. vorhandenen QS einfach so "abschneiden" und wieder "anhängen"?

Die übliche kontextgerechte Behandlung wirst du natürlich durchführen -

Natürlich! ;-)
Ich habe dedlfixs Artikel dazu ja schon gründlich studiert.

sonst hast du genauso wie mit PATH_INFO ein XSS-Problem, wenn du das, was der Client dir schickt, einfach durchreichst.

Ja. Wobei ich (bis jetzt zumindest) die PATH_INFO lediglich zum Vergleich heranziehe, ob sich ein passender Eintrag in der DB befindet.
Ansonsten würde eine Behandlung mit htmlspecialchars() aber schon mal das Schlimmste verhindern, oder übersehe ich etwas?

Besten Dank nochmal - hat mir sehr weitergeholfen!

Gruß Gunther