mit urlencode() "plus"-Zeichen aus Adressleiste auslesen

deb_ugger

Erfahrenes Mitglied
Hi!

Für eine Suche übergebe ich über die Adressleiste die vom User in ein Suchfeld eingegebenen Begriffe. Wird z.B. "Hubert + Alex" eingegeben, übergibt die Adressleiste "Hubert%20+%20Alex". Wie kann ich jetzt mit PHP dieses "+" wieder auslesen und es z.B. mit
Code:
$searchText = ereg_replace("+", "AND" , $searchText);
in einen anderen Begriff für die mysql-Abfrage umwandeln.

Das Problem, auf das ich gestoßen bin: Normalerweise werden "+" Symbole ja in Leerzeichen umgewandelt.

Danke für die Hilfe!
mfg,
debugger
 
Zuletzt bearbeitet:
Es trägt nicht gerade zur Übersichtlichkeit eines Forums bei, für jede Bemerkung einen neuen Thread aufzumachen.... das hasst du doch schonmal gefragt, oder?
 
Sorry, mein fehler. Wird nicht wieder vorkommen ;)

Ich habs jetzt mit strpos probiert:
Code:
$pos = strpos ($searchText, "+");

wird aber nicht gefunden... gibts da vielleicht noch eine andere Möglichkeit?
 
Zuletzt bearbeitet:
Werte über POST zu übergeben, wollte ich auf alle Fälle vermeiden. Vor allem bei der Suche. Da klicken die Anwender mal auf den Browser-Back Button und schon ist man auf meiner Lieblingsseite "Warning: Page has Expired " und muss auf reload klicken...

Ich hab jetzt eine Lösung mit Javascript gefunden. Und zwar wird der gesendete Suchtext auf das Pluszeichen überprüft, und wenn es gefunden wurde, mit '%2B' ersetzt. Das kennt der Browser. Hier der Code, falls es jemanden interessiert:

Code:
<script>
function check_search() {
	var searchTerm = document.searchForm.searchTerm.value;
	var searchTermPlus = searchTerm.search(/\+/);
	if (searchTermPlus != -1) {
		var searchTerm = searchTerm.replace(/\+/,"%2B");
	}
	else {
		var newpage = "index.php?&searchTerm="+searchTerm+"";
		window.location.href = newpage;
	}
}
</script>

zwar nicht die beste Lösung, aber eine andere gibts da wohl kaum.
 
Zuletzt bearbeitet:
Und was mache ich dann ohne JS?`

Btw ist das mit dem Page has expired eher ein Problem bei Verwendung mit Sessions und kommt sonst eigentlich bei Zurück nicht vor.
Umgehen kann man dies durch Veränderung des session_cache_limiter.
Diesbezüglich einfach mal bei php.net in der Onlinedoku suchen.
 
Tja, in diesem Fall funktionierts ohne Javasciprt nicht. Ist aber egal, denn es handelt sich hier um ne Intranet Seite mit definierter IT Infrastruktur.

Bzgl. Page has expired: Das ist ein Session-Problem? Ich denke eher, dass das ein POST-Problem ist. Übermittelt man nämlich über ein Formular mit methos=post einen Wert an eine Seite und betätig dann den "back"-Button, erscheint diese Seite. Nach erneuten reload gehts dann erst wieder.
 
Zuletzt bearbeitet:
Ich kenne dieses prob nur im Zusammenhang mit Sessions. Ansonsten ist es auch bei Post-Formularen bei mir in so einem Fall nicht aufgetreten.
 
Naja bei Post bekommt man lediglich eine Meldung das die Daten via POST übersandt worden sind, und ob man diese noch einmal senden möchte. Aber wenn ich eine Seite sehe, welche mir die genannte Meldung ausgibt, dann handelt es sich definitiv über eine ungültige Session.

Die Sessions kann man logischer Weise auch in Suchscripten benutzen, mir wäre aber unklar warum das so sein sollte. Also mich nervt es nur wenn ich extra wieder auf die Naviagtion muss, um an die Suchmaske ranzukommen.

Also! Wenn Du deine Suche über POST versendest und keine Sessions benutzt, dann kann der Benutzer sicherlich wieder auf die Seite zuvor gehen, via Back Button. Das ist kein Problem.
 
Da war ich dann wohl im Irrtum. Habe jetzt vor session_start() folgenden limiter eingegeben: session_cache_limiter('private')

Seitdem funktionierts wunderbar. Danke!
 
Zuletzt bearbeitet:
Zurück