2010-06-09 4 views
1

J'ai une forme avec beaucoup de nombreux domaines ...Comment masquer l'URL des utilisateurs lors de la soumission de ce formulaire?

Lors de la présentation de ces champs, j'utilise la méthode POST qui cache les variables réelles transmises à la page PHP.

Cependant, je ne peux pas me débarrasser du lien complet.

Changement de GET à POST avez fait tous les champs de formulaire invisibles dans l'URL, mais cette partie est encore visible:

mydomain.com/bin/query# 

Je veux que ce soit invisible, ou dire:

mydomain.com/search 

Je mod_rewrite permis donc il est possible de le faire avec mod_rewrite Je pense que, bu Je suis nouveau à mod_rewrite alors j'ai besoin de votre aide ...

Comment cacher cette URL?

Si vous avez besoin de plus d'entrée laissez-moi savoir ...

Répondre

3

Lorsque vous soumettez un de vous devez spécifier un attribut d'action pour la forme. Je suppose que votre action est mydomain.com/bin/query# mais vous voulez que ce soit mydomain.com/search. Ensuite, vous devez utiliser mydomain.com/search withing le attibute d'action et la réécriture suivante:

RewriteEngine on 
RewriteRule ^/search$ /bin/query [QSA,NC] 

qui montrerait mydomain.com/serach dans l'URL des navigateurs.

EDIT: En utilisant l'indicateur QSA, vous pouvez transmettre des paramètres GET à votre script de requête. Le NC rend la réécriture insensible à la casse.

Votre formulaire devrait ressembler à ceci:

<form action="/search" method="post"> 
... 
</form> 
+1

Nice à voir Je ne suis pas le seul qui continue à faire la typo "serach" –

+0

Lol, merci de le souligner. Et puis copiez et passez la faute de frappe partout dans votre code :) – 2ndkauboy

1

Essayez d'RewriteRule ^/search /bin/query vous pouvez modifier votre action de formulaire/recherche

2

Vous ne devriez pas cacher l'URL, il est une perte de temps.

Le navigateur de l'utilisateur (qui est sous le contrôle de l'utilisateur) envoie des données à votre serveur. Les utilisateurs pourront toujours envoyer les données qu'ils aiment au gestionnaire de formulaire (puisque vous ne pouvez pas indiquer au navigateur où l'envoyer sans que l'utilisateur ait accès à ces informations). L'utilisation de mod_rewrite change juste l'URL (donc il n'y a aucun avantage de sécurité à la cacher) et les moteurs de recherche ne font pas de requêtes POST (donc il n'y a pas de bénéfice SEO).

Si vous cherchez un avantage cosmétique, alors je ne m'inquiéterais vraiment pas. Le nombre d'utilisateurs qui remarqueraient l'URL du formulaire soumis est minuscule et le nombre de personnes qui s'y intéressent est encore plus petit.

1

Ce que vous pouvez faire est d'émettre une redirection après le traitement de votre formulaire.

// process form vars e.g., 
save_values($_POST); 
// redirect 
header('Location: /some/other/page'); 
exit; 

Les utilisateurs du navigateur ne verront que la page que vous avez finalement redirigée. Il sera toujours possible d'inspecter les requêtes/réponses HTTP pour déterminer l'emplacement du traitement du formulaire si vous savez ce que vous faites.

2

Supposant vous êtes nouveau dans le monde du web, voici 2 règles pour vous d'apprendre:

  1. Selon HTTP standard, la recherche doit être effectuée en utilisant la méthode GET, non POST
  2. url Se cacher est un non-sens. Bien que vous puissiez utiliser mod_rewrite pour embellir l'URL, pas pour la "cacher".
  3. Cacher les variables de recherche est un non-sens, sans excuses. la recherche doit être faite en utilisant la méthode GET, pas POST
+0

Dans mon cas, le formulaire est soumis à une page php qui utilise POST pour recevoir tous les champs de formulaire et les mettre dans des variables. Alors là, je fais des requêtes sur la base de données MySql ... C'est le type de recherche dont je parle. Êtes-vous en train de dire que je devrais utiliser GET au lieu de POST ici? Pourquoi? –

+0

@Camran pas besoin de mentionner mysql ici. chaque recherche dans le monde va de cette façon. Votre cas n'est pas exceptionnel. Regardez autour de vous: est-ce que google cache les variables de recherche? Ou tout autre site? Pourquoi? Ici vous allez: http://www.w3.org/Protocols/rfc2616/rfc2616.html "La méthode GET signifie récupérer toutes les informations". POST pour enregistrer et GET pour récupérer. C'est pourquoi. Il y a une tonne de failles d'utilisabilité dans la recherche POST. allez l'essayer en vrai, pas dans votre imagination et voyez –

+0

Vous ne me dites toujours pas pourquoi ne pas utiliser POST? "Des tonnes de fautes d'utilisabilité" ne me disent pas grand-chose, et je l'ai essayé en vrai, ça marche! Je vais poster un autre Q à ce sujet, merci ... –

Questions connexes