2010-09-04 6 views
3

J'ai une URL qui est construit en utilisant obtenir des variables telles queHiding les variables get

location.href = this.href +'?type='+ escape($('#type_of_station').html()) + '&count='+ escape($('.number_changer').attr("id").slice(-1)); 

qui me donne une url comme le

suivant
http://posnation.com/pre_config/pre_config_step_2.php?type=Grocery&count=2 

sur la page suivante, je prends les variables via PHP

<p id="type_of_station" class="text left"><?php $_GET['type'] != "" ? print str_replace("_", " ", $_GET['type']) : print "Food Pos System" ?></p> 

Cela fonctionne très bien mais l'URL est plutôt moche. Est-il possible de masquer cela et de toujours avoir les variables get disponibles sur la page suivante

+1

L'utilisation de sessions est-elle une option? –

+0

@Pekka pour les urls - jamais –

+1

@Col pour transporter des variables de page en page, identifiées par une clé aléatoire? Pourquoi pas? –

Répondre

3

Pour que l'URL soit belle, c'est une chose.
Masquer les données de l'URL en est une autre. Ne cache jamais rien. Ou vous rendrez votre site inutilisable.

+1

Cela dépend du contexte, mais il est souvent vrai. –

+1

Je suis désolé, mais dans l'exemple fourni, je ne vois pas comment l'utilisation de POST au lieu de GET rend le site inutilisable. Cela empêche les signets des URL, mais ces URL semblent être des étapes d'un processus de configuration. Les principaux sites comme Dell utilisent POST pour la configuration de leurs systèmes. Et si le bookmarking est souhaité, une meilleure approche avec des données complexes serait une solution "Bookmark This"/permalink. – Josh

0

Utilisez $_POST au lieu de $_GET, ou enregistrez-les dans une session et passez à la page suivante.

EDIT: C'est si vous vraiment voulez cacher complètement les variables. Comme le suggèrent les autres: il vaut mieux utiliser mod_rewrite pour le rendre plus joli, sans cacher les données.

2

Vous souhaitez POSTER vos variables sur le serveur plutôt que de les envoyer en tant que requêtes GET.

En PHP, vous pouvez accéder aux variables POST-ed avec la variable $ _POST.

Forme simple:

form.php

<form action="process.php" method="POST"> 
    username: <input type="text" name="username" value="" /><br/> 
</form> 

Le POST-ed 'username' pourrait alors être consulté dans le fichier valider.php par

process.php

echo $_POST['username']; 

Contrairement aux requêtes GET, les valeurs envoyées au serveur ne sont pas affichées dans l'URL.

+2

N'utilisez JAMAIS POST où GET devrait être, fils. Ces méthodes ne sont pas interchangeables. –

+1

@Col. Shrapnel: Comment savez-vous que GET devrait être utilisé ici? – Josh

+1

Personne n'a dit qu'ils étaient interchangeables. Mais c'est une façon d'aborder le problème présenté. –

0

Je suis tombé sur votre poste sur des solutions de recherche juste pour ce problème .. - et même il est une réponse tardive, peut-être il aider quelqu'un:

Pour mon utilisation, je suis arrivé une solution simple:

Il suffit d'ajouter dans votre fichier index.php après le début de la session php la ligne suivante:

if(isset($_GET)) 
{ 
header("Location:index.php"); 
$_SESSION['relink'] = $_GET; 
} 

Vous aurez une valeur GET dans la session [ 'Relink'] variable. Et puis vous redirigez vers le fichier index.php. Il y aura des traces visibles dans l'adresse de votre navigateur. Après il est sur vous de vérifier n'importe quelle valeur du tableau avant de l'utiliser. Mais au moins l'adresse de votre navigateur est CLEAN!