Comment faire pour supprimer une $_GET variable à partir d'une URL
J'ai un site rédigé en PHP où chaque fois qu'un utilisateur reçoit un message d'erreur je vais rediriger vers une autre page (à l'aide de header(Location:...)
) et de mettre l'ID d'erreur dans l'URL pour que je sache à qui d'erreur à afficher.
E. g. Si l'utilisateur tente d'accéder à une page de produit, mais l'article n'est plus disponible, je vais réorienter retour à la catégorie des articles qu'ils étaient déjà à la recherche et à l'affichage d'une erreur basée sur l'ID d'erreur que j'ai spécifié dans l'URL.
www.example.com/view_category.php?product_category_id=4&error_id=5
Il y a deux choses que je n'aime pas à propos de cette approche:
- Il affiche le error_id dans l'URL.
- si la page est actualisée, l'erreur sera toujours l'affichage.
Est-il un moyen d'enlever proprement spécifique $_GET variable à partir d'une URL, tout en laissant le reste des variables intacte APRÈS le chargement de la page?
Je pense, c'est peut-être l'aide d'modRewrite ou une redirection vers la page elle-même, mais de supprimer le error_id à partir de l'URL ou à l'aide d'un $_SESSION variable et éviter de mettre la error_id dans l'URL. Vos pensées?
Je suis vraiment en apprendre beaucoup à partir de cette communauté et pensé que si je posais la question, je pourrais peut-être apprendre quelque chose de nouveau ou pour obtenir une certaine varié idées que je suis assez nouveau à l'écriture de scripts.
OriginalL'auteur justinl | 2009-07-30
Vous devez vous connecter pour publier un commentaire.
Non, il n'y a pas moyen de le faire explicitement, du moins, pas sans un rafraichissement de la page, mais alors vous perdez les données de toute façon.
Vous êtes mieux de l'aide temporaire de la variable de session.
Puis, dans view_category.php
Que ne serait un problème si l'autre onglet a été dans le milieu de chargement. Et la seule conséquence serait que le message d'erreur ne serait pas d'affichage sur l'onglet chargé 2e. droit?
Référent n'est pas une mauvaise idée non plus, mais ce n'est pas à toute épreuve. D'ailleurs, il parle d'avoir la error_id existe pas dans l'URL, ce qui inspecter le référent n'a pas d'adresse. Aussi, cette raison est pourquoi MVC est si populaire, - les demandes d'erreur sont simplement transmis au contrôleur d'erreur, et pas de rafraîchir la page se produit réellement.
ca n'a pas l'adresse de la question d'un lien provenant d'un autre site. e.g supposons que je veux supprimer "lang" à partir de cette url : monsiteweb/page?id=123&lang=2&etc=hello
oui, mais si vous lisez plus vous vous rendrez compte que cette question n'est pas réellement sur la suppression d'un paramètre de l'URL - c'est à propos de la façon de déclencher d'erreur d'affichage pour un utilisateur donné w/o encombrer l'URL.
OriginalL'auteur Peter Bailey
Oui, il y a un moyen de supprimer spécifiquement
$_GET
à partir de PHP...Ensuite, mettre le $newurl dans le lien.. comme ceci:
pageurl?something=something&<? echo $newurl; ?>
Je sais que c'est un vieux post, mais, à d'autres programmeurs peuvent être à la recherche pour elle!
OriginalL'auteur Leandro Muniz
D'abord, le journal de l'erreur dans votre base de données 🙂
Après cela, définir un cookie ou une variable de session, et ensuite rediriger l'utilisateur pour la sécurité de la page. Lorsque la page est chargée, vérifier pour la variable, affichage de l'erreur, puis supprimer une variable à partir du cookie de session ou de tableau.
Les utilisateurs sont généralement peu fiables. Ils ont rarement/ne vous dis pas quand il y a une erreur donc c'est une bonne idée pour se connecter autant d'informations que vous le pouvez.
Je ne suis pas particulièrement d'accord avec cela. Erreur de base de données de journalisation est pour quand des choses inattendues se produisent. Un utilisateur de frapper une page avec un élément qui n'est plus disponible est devrait comportement.
Souhaitez-vous également de stocker l'id d'utilisateur de la personne qui a rencontré l'erreur?
oui je suis d'accord. La discrétion est nécessaire lorsque la journalisation des erreurs de sorte que votre serveur de ne pas remplir connecté avec des erreurs 404 🙂
OriginalL'auteur matpie
Est une façon de comparer les
HTTP_REFERER
avec leSCRIPT_NAME
. Ils en ira de même si l'utilisateur a cliquer sur "Actualiser".OriginalL'auteur Christopher Done
Rapide Hack: Vous pourriez être également
imploded()
'd sur les "&" dans la$_SERVER['QUERY_STRING']
variable à manipuler que la chaîne, puisexplode()
'd en arrière.OriginalL'auteur xentek
Ne serait-ce pas aborder le travail?
OriginalL'auteur user2392677
j'ai eu le même problème
essayez : http://www.azazia.com/kb/entry/26/
}
fonctionne parfaitement pour moi.
OriginalL'auteur john maulatul