2009-11-06 6 views
1

$ Y at-il un bon moyen de garder la cohérence dans la $_GETcohérence dans _GET

Par exemple, si j'ai une url http://www.example.com/index.php?Id=5&sort=new

Et je veux maintenant ajouter un nouveau champ $_GET à la fin de cette donc est-il possible que je puisse créer une fonction qui gardera le Id et sort et ajouter mon nouveau var lim?

Ainsi, l'URL ressemble maintenant: http://www.example.com/index.php?Id=5&sort=new&lim=100

peut-être quelque chose comme:

add_new_get('http://www.example.com', 'lim=100'); 

Je suis sûr que je peux trouver une fonction, mais demande si quelqu'un a mis en place une telle chose qu'ils aimeraient partager: D

+0

sont des sessions inapproprié? – Artelius

+0

@Artelius, Non je pourrais le faire par sessions mais ensuite je dois contrôler le réglage et la désactivation de chaque type de session et cela m'impliquera dans un ensemble de longues heures. Juste une simple fonction qui va ramasser les Current Gets et ensuite ajouter mon nouveau serait génial: D –

Répondre

2

vous pouvez toujours faire $_SERVER['REQUEST_URI'].'&yourstuff=whateves'; Je suppose que vous pourriez envelopper dans une fonction si vous le vouliez vraiment.

ce qui précède inclut tout ce qui précède le nom de fichier. si vous voulez seulement les recevoir des demandes que vous pouvez faire:

$new_req = "?"; 
foreach ($_GET as $key=>$val){ 
    $new_req .= "&".$key."=".$val; 
} 
$new_req .= $your_new_value; 
2

Vous trouverez peut-être préférable d'utiliser une classe pour gérer votre chaîne de traitement des requêtes plutôt que d'écrire votre propre.

Voir HTTPQueryString

Il est pas très complexe d'écrire une fonction pour prendre une url et de construire votre chaîne de requête, mais avec une classe comme HttpQueryString, vous n'avez pas à vous soucier de faire en sorte que vous avez la bon encodage, des tests pour savoir s'il existe déjà des variables présentes dans la chaîne, etc.

Modifier

par exemple

$query = new HttpQueryString(false, 'Id=5&sort=new'); 
$query->mod('lim=100'); 
echo $query->toString(); // echoes http://www.example.com/index.php?Id=5&sort=new&lim=100 
+0

Ty pour la solution, im aimant ce HTTPQueryString: D –

+0

c'est une solution assez robuste. En bonus, utilisé comme singleton, toutes les classes qui en dépendent peuvent travailler sur la même chaîne de requête, en ajoutant leurs propres paramètres si nécessaire et sans jamais avoir à s'inquiéter de ce que font les autres classes. Évidemment, vous devrez prendre des mesures pour éviter les collisions, cependant. –

+0

en tant qu'addendum à mon dernier commentaire, vous pourriez écrire une classe wrapper pour cela, juste au cas où vous voudriez plus tard changer la façon dont votre gestion des variables GET est gérée –