Wie Streifen aus url-Variablen
Ich habe eine url.LoginID, und ich möchte, um es zu entfernen aus der Adressleiste, wenn der Benutzer klickt auf den link, um sich einzuloggen. Es hat ein Lesezeichen, es kann nicht ein Formular Absenden.
Q: Wie kann ich die entfernen ?LoginID vom Index.cfm?LoginID=XYZ&AssignmentID=123
Es ist wahrscheinlich etwas entlang der Linien von:
<cflocation url="#cgi.SCRIPT_NAME#?#cgi.QUERY_STRING#" addtoken="no">
Du musst angemeldet sein, um einen Kommentar abzugeben.
Sieht aus wie Sie sind auf dem richtigen Weg.
Wenn loginID ist die einzige Sache, die in den query-string können Sie einfach cflocation an die Zielseite ohne den query-string.
Wenn es andere Daten in der Abfrage-string, dann können Sie etwas wie das hier tun:
Dies ist im wesentlichen entfernt loginid und alles, bis entweder der en der string oder die nächste URL-variable.
reReplace()
->reReplaceNoCase()
Als sonst, es gibt bereits eine UDF, die jemand geschrieben hat, stehen auf CFLIB: queryStringDeleteVar
Können Sie dann tun, wie so
CGI.QUERY_STRING ist eigentlich der Standardwert für das zweite argument, also wird das genauso gut funktionieren
Hier ist der code für
queryStringDeleteVar
:Gibt es eine Reihe von Möglichkeiten, dies zu tun, hier ist eine Möglichkeit, mit Hilfe einer Liste-Schleife zum Lesen über die vorhandenen Parameter und überprüfen Sie die, die Sie wollen, zu ignorieren:
Hoffe, das hilft!
Angenommen, Sie wollen nicht wirklich, um die zu entfernen
?
zu halten, die URL gültig ist, so einfache regex arbeiten soll:BTW, ich bin mir nicht sicher, warum halten Sie
LoginID
in der URL, es kann unsicher sein Ansatz. Die Verwendung von Sitzungen, klingt wie eine bessere Idee.Edit: Ben ' s regex ist besser, weil meine version ist so einfach, das "Essen" alle
key=value
Paare vor der letzten.Einfügen berühmte Zawinski zwei problem regex zitieren und anders lösen: