如何在一个地方加密在网址中传递的值

时间:2016-06-30 06:43:17

标签: php encryption url-rewriting

我不知道是否可能,但我们将不胜感激。

以下是我项目的目录结构(它位于核心php中)

application/
application/sub_application_1
application/sub_application_2
application/sub_application_3
..
application/sub_application_n

因此,有许多子应用程序中有多个php文件,在这些文件中编写了各种url重定向代码,url参数只使用base64_encode()进行编码。此外,在所有文件中还包含一个唯一的配置文件。

现在,我想使用我自己的函数来编码/加密整个应用程序中的所有url参数。因此,不是进入每个文件并添加我自己的编码和解码功能,我可以在单个文件中编写一些代码,这些代码包含在所有文件中(在我的情况下是配置文件),它将处理所有url参数在整个应用程序中编码和解码?

提前致谢。

示例:

假设我在application/sub_application_1/index.php中有一个php文件,在该文件中会写一个超链接,将页面重定向到application/sub_application_1/product_details.php

以下是当前代码

<a href="./product_details.php?product_id=<?php echo base64_encode($_product_id); ?>"> View Product </a>

所以,我想在每个超链接上加载我的加密函数,比如

<a href="./product_details.php?product_id=<?php echo my_encryption(base64_encode($_product_id)); ?>"> View Product </a>

因此,有一种繁琐的方法可以进入每个目录和每个文件,并在每个url参数上添加我的函数以进行加密,并类似于该特定文件进行解密。

任何其他方式,在单个文件中编写一些代码也可以这样工作?

1 个答案:

答案 0 :(得分:0)

这里可能会有一定数量的手工工作,但有些想法可以尝试:

使用命令行

您可以使用命令行将现有链接替换为所需的格式。如果所有base64_encode()个链接都将包含在my_encryption()中,那么我建议您将base64_encode()调用移至您的函数。然后,您可以搜索并替换相关链接以替换为您自己的链接。像这样:

find application/*/*.php -type f -print0 | xargs -0 sed -i "s/base64_encode/my_encrpytion/g"

强烈建议在运行之前备份您的文件,因为它没有经过测试,而且我对您的代码了解不多

使用编辑器,如Notepad ++

如果您无权访问或不想使用命令行,您可以在命令行中执行相同的操作,但在编辑器中,如Notepad ++。打开所有相关文件,然后替换所有文件中的内容。根据您是否有其他base64_encode()来电,将确定您是否可以直接替换文本或必须使用正则表达式。例如,正则表达式方法看起来像这样:

notepad++ example

进一步说明

如果你想替换整个链接(也就是product_details.php?product_id部分,你可以将这一点移到上面的搜索/替换中并将其放入你的my_encryption函数中。然后在更改之后现有文件,将来你可以写:

<a href="<?php echo my_encryption('xxx'); ?>">My Link</a>