en séparant les valeurs dans l'URL, pas avec un &
Chaque paramètre dans une URL peut avoir plusieurs valeurs. Comment puis-je les séparer? Voici un exemple:
http://www.example.com/search?queries=cars,phones
Donc je recherche 2 choses différentes: les voitures et les téléphones portables (c'est juste un exemple artificiel). Le problème est le séparateur est une virgule. Un utilisateur peut entrer une virgule dans le formulaire de recherche dans le cadre de leur requête et puis, ce serait se faire défoncer jusqu'. Je pourrais avoir séparer les 2 paramètres d'URL:
http://www.example.com/login?name1=harry&name2=bob
Il n'y a pas de réel problème il y a, en fait, je pense que c'est la façon dont les Url ont été conçus pour gérer cette situation. Mais je ne peux pas l'utiliser dans mon cas en particulier. Nécessite un long post pour dire pourquoi... j'ai besoin simplement de séparer les valeurs.
Ma question est, fondamentalement, est-il une URL encodable caractère ou la valeur qui ne peut pas être saisi dans un formulaire (textarea ou d'entrée) que je peux utiliser comme séparateur? Comme un caractère null? Ou un non-personnage visible?
Mise à JOUR: merci à tous pour vos réponses rapides. Je devrais ai énuméré le même nom de paramètre exemple trop, mais l'ordre des questions dans mon cas, donc ce n'était pas une option non plus. Nous avons résolu ce problème en utilisant un %00 URL codée de caractères (UTF-8 \u0000) comme une valeur séparateur.
- Comment sont les valeurs entrées par l'utilisateur en premier lieu? Un certain nombre de champs de texte?
- Pourquoi ne pas vous venez d'encoder la valeur de vos paramètres? Si ils entrent %20 alors le % sera codé de sorte qu'il ne sera pas réellement de causer un problème, ou alors j'ai loupé quelque chose?
- les valeurs sont entrées en standard des éléments de formulaire html. Le problème avec les %20 n'est pas qu'ils pourraient entrer dans %20, c'est qu'ils pourraient entrer dans ce qu' %20 représente (un espace, je pense).
- Il est mentionné dans un commentaire ci-dessous que "c'est un standard widget mécanisme qui sera utilisé dans un mille situations différentes." - il convient de noter que
%00
(NULL codé) dans la chaîne de requête sera activement bloqué sur certains serveurs comme un coffre-fort de sécurité de la garde.
Vous devez vous connecter pour publier un commentaire.
L'approche standard consiste à utiliser le même nom de la clé deux fois.
La plupart des bibliothèques de formulaires vous permettent d'y accéder comme un tableau automatiquement. (Si vous utilisez PHP (et en faisant usage de
$_POST/GET
et de ne pas réinventer la roue), il vous faudra changer le nom dequeries[]
.)Vous pouvez leur donner à chacun la même nom du paramètre.
La moyenne côté serveur HTTP API est en mesure d'obtenir une tableau. Selon votre question histoire, vous êtes à l'aide de JSP/Servlet, de sorte que vous pouvez utiliser
HttpServletRequest#getParameterValues()
pour cela.Juste encoder l'entrée de l'utilisateur, de sorte que leur virgules devenir %2C.
Venir avec votre propre séparateur qui est peu probable de s'inscrire dans une requête. Deux caractères de soulignement
'__'
par exemple.Pourquoi ne pas tout simplement faire quelque chose comme "||"? Quelqu'un qui tape que dans une zone de recherche, probablement, s'est endormi sur son clavier :} Alors, juste exploser sur le backend.
meilleure chose à faire serait d'utiliser un séparateur personnalisé comme [!!ValSep!!].