php - 如何从 URL 中删除特定的 $_GET 变量

标签 php error-handling get

我有一个用 PHP 编写的网站,每当用户收到错误时,我会将他们重定向到另一个页面(使用 header(Location:...))并将错误 ID 放入URL,以便我知道要显示哪个错误。

例如如果用户尝试访问产品页面但该商品不再可用,我将重定向回他们之前查看的商品类别,并根据我在 URL 中指定的错误 ID 显示错误。

www.example.com/view_category.php?product_category_id=4&error_id=5

这种方法有两点我不喜欢:

  1. 它在 URL 中显示 error_id。
  2. 如果刷新页面,错误仍然会显示。

有没有一种方法可以在页面加载后从 URL 中彻底删除特定的 $_GET 变量,同时保持其余变量不变?

我在想也许它正在使用 modRewrite 或重定向回页面本身,但从 URL 中删除 error_id 或使用 $_SESSION 变量并避免将 error_id 放在 URL 中。你的想法?

我真的从这个社区学到了很多东西,并且认为如果我提出这个问题,我可能会学到一些新东西或获得一些不同的想法,因为我对脚本编写还很陌生。

最佳答案

不,没有办法明确地做到这一点 - 至少在没有页面刷新的情况下不行,但无论如何你都会丢失数据。

最好使用临时 session 变量。

if ( /* error condition */ )
{
  $_SESSION['last_error_id'] = 5;
  header( 'Location: http://www.example.com/view_category.php?product_category_id=4' );
}

然后,在view_category.php

if ( isset( $_SESSION['last_error_id'] ) )
{
  $errorId = $_SESSION['last_error_id'];
  unset( $_SESSION['last_error_id'] );

  // show error #5
}

关于php - 如何从 URL 中删除特定的 $_GET 变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1209903/

相关文章:

javascript - 使用$.get,需要初始化隐藏页面上的变量

php - 导入 MySQL db 后我无法再登录 phpMyAdmin

php - 在 Drupal 7 中向现有内容类型添加新字段

error-handling - 带有 webpack 的 Babel polyfill

c - 为什么从共享库加载对象时出现段错误?

python - 如何使用 PyCurl 设置 GET 参数?

javascript - 一个奇怪的 $.get()

javascript - 为什么我无法从单选按钮获取值?

PHP运行Union All SQL语句

javascript - 如何处理带有特定图像或文字的YouTube错误消息?