我正在开发一个PHP应用程序来管理公司的订单。要查看订单,网址目前为/orders/view/3502
。
我不希望订单ID号出现在URL中,因此我使用CodeIgniter的加密库来加密URL中的ID。 URL(加密后)看起来像/orders/view/AaffGdQQ
。
我遇到的问题有时加密ID包含正斜杠或加号,在URL中无法正常工作。 CodeIgniter基于斜杠读取URL,因此,如果加密的ID有斜杠,它将读取为2个变量,而不是一个。此外,加号会被解释为URL中的空格。
所以,我的问题是,如何加密ID并确保该字符串不包含加号或斜杠?
编辑:我想知道加密的ID是否包含斜杠或加号,如果是,则再次加密。出于某种原因,每次ID被加密时,它都会有所不同,所以这样可行。
答案 0 :(得分:9)
您还可以使用base64_encode()。这也将使它更长,看起来“更安全”。还添加了一层混淆。
答案 1 :(得分:1)
也许通过urlencode()
传递加密的数据会解决这个问题?执行此操作后,您必须在CodeIgniter执行之前拦截数据,并在其上运行urldecode()
。
只是一个简单的想法,祝你好运!
答案 2 :(得分:0)
查找加密不使用的某些字符,并在适合时替换它们。使用网址时,请将其撤消。