我有一个用PHP编写的网站,当用户收到错误时,我会将它们重定向到另一个页面(使用header(Location:...)
),并将错误ID放在URL中我知道要显示哪个错误。
E.g.如果用户尝试访问产品页面,但该项目不再可用,我将重定向回他们之前查看的项目类别,并根据我在URL中指定的错误ID显示错误。
www.example.com/view_category.php?product_category_id=4 & ERROR_ID = 5
有两件事情我不喜欢这种方法:
- 它显示ERROR_ID在URL。
- 如果页面被刷新,错误仍会显示。
有没有办法从URL中干净地删除特定的$ _GET变量,同时保持其余的变量完整后页面加载?
我想也许它使用modRewrite或重定向回到页面本身,但从URL中删除error_id或使用$ _SESSION变量,并避免将error_id放入URL中。你的想法?
我真的从这个社区学到很多东西,我想如果我提出这个问题,我可能会学到一些新的东西,或者得到一些不同的想法,因为我对于脚本编程还很陌生。
如果用户一次打开多个选项卡,那么在另一个页面有机会加载并显示错误之前,您有可能未设置会话变量。这就是为什么我建议引用方法。 – 2009-07-30 23:34:42
这只会是一个问题,如果其他标签在加载中。唯一的后果是该错误消息不会显示在加载2nd的选项卡上。对? – justinl 2009-07-30 23:43:38
引荐者也不是一个坏主意,但它不是万无一失的。此外,他说的是在URL中根本不存在error_id,而检查引用者没有处理。 此外,这就是为什么MVC如此流行 - 要求错误只被转发到错误控制器,并且实际上不会发生页面刷新。 – 2009-07-30 23:45:23