2012-05-12 177 views
-2

这就是我想要做的事:解密,加密

我有一个CMS网站,在我的管理面板,我可以添加一些软件包的用户可以从我的网站购买。因此,在我的Choose.php页面中,用户可以选择想要购买的包。当然,价格是为每个包而不是由他们设定的,但是由我来定。

如果他们点击一个包,该页面将数据发送到另一页是这样的:

$form = '<form action="/buy.php?'product_name='.$name.'&product_id='.$product_id.'&price='.$ammount.'" method="post" target="_parent" ><input type="submit"  style="background-image:url(images/p.png);height: 55px;width: 118px;" value=""/></form>'; 

所以用户只点击预定义的包。如果用户是一些如何专家PHP,甚至脚本,他可以很容易地改变像网址:

PRODUCT_NAME = myProduct的&的product_id = 1种&价格= $ 1000

喜欢的东西这样的:

PRODUCT_NAME = myProduct的&的product_id = 1种&价格= $ 10

这意味着,他们可以购买10 &而不是1000 $的相同包装。

,所以我需要ECRYPT这个网址被gernerated每个包分别以这样的事:

$form = '<form action="/buy.php?MVNnaPgxpQizqwv7YElroi5E" method="post" target="_parent" ><input type="submit"  style="background-image:url(images/p.png);height: 55px;width: 118px;" value=""/></form>'; 

然后在我的Buy.php页面,在此加密的字符串,deycrypts。

但问题是解密部分,因为当我解密它时,它说它是一个数组(因为我使用$ _GET来获取url)。

当我使用数组描述方法时,我在第一页出现错误,它说我正在加密的值是一个字符串而不是数组。 (记住:PRODUCT_NAME = myProduct的&的product_id = 1 &价格= $ 1000这是一个字符串)。

所以,我怎么能在一个页面中加密字符串,发送通过URL(与_POST $),然后在购买。 php页面,使用$ _GET并将其解密到数组中。

对不起,如果它成为一个长期职位。我需要一个加密/解密代码。

+1

不要那样做。只需从'buy.php'中的项目ID中获取价格和产品名称即可。它真的不需要专家来更改网址... – Ryan

+0

为什么不使用文章? – rjv

+0

@Rajeev:我在表单中使用信息。 – Siwa

回答

2

出于安全原因,我建议你不要通过GET/POST参数转发任何敏感数据! 即使它们被加密,攻击者可能会加密它并给你带来很多伤害。

您应该将产品的价格存储在数据库中。当用户选择你转发的产品时。像

$形式= '<形式行动= “/ buy.php?ID = 34” >'

而且在buy.php你再从数据库中检索的价格和额外的信息。

我的建议是阅读,或者至少看看PHP Security Guide

+0

我认为你的建议是一个很好的建议。我需要使用目前用于我的网站的MYSQL。再次。 ;) – Siwa