2012-05-12 127 views
0

我是PHP新手,大约3个星期前开始工作。字符串编码,数组解码

我有一个字符串,它与$ _POST一起使用将它传递给另一个页面,第二个页面使用$ _GET来获取这些URL并根据需要分割它。

我的问题是,在我的第一页我使用一个字符串,我想加密它,以便我可以将它作为计划文本传递。在第二页中,我必须解密它并将其作为一个数组来获取。

那么是否有任何加密方法或函数可以与$ _POST兼容(所以我可以将它发送到另一个页面)并将其解密为数组?

我需要这种方法,因为第二页实际上是连接到网站,并且是一种付款方式。所以我不希望用户手动编辑url,并降低他们获得的产品的金额。

tnx为您提供帮助。

+0

$ _POST用于接收使用POST请求发送到服务器的参数,其中参数在请求的主体中传递,通常是URL编码的(例如,通过表单提交或ajax请求)。 $ _GET实际上是相同的概念,除了参数位于请求URL(例如www.domain.tld?param1 = value1&param2 = value2&...) – Javaguru

+0

请注意,用户总是可以更改请求..这只是用户对HTTP协议知识的一个问题。所以你应该永远不要将这些信息与请求一起传递。 – Javaguru

+0

使用会话。加密通常会被比你更有经验的人所颠覆。 – goat

回答

0

什么你可能想要做的就是通过用户购物车中的内容(即项目,他会喜欢订购)到付款网站。 因此,你应该建立类似以下形式:

<form action="URL/to/paymentPage.php" method="post"> 
<!-- Item 1 --> 
<input type="hidden" name="items[0]" value="productID1"/> 
<input type="hidden" name="quantity[0]" value="quantity1"/> 
<!-- Item 2 --> 
<input type="hidden" name="items[1]" value="productID2"/> 
<input type="hidden" name="quantity[1]" value="quantity2"/> 
<!-- ... --> 
<!-- Item n --> 
<input type="hidden" name="items[n]" value="productIDn"/> 
<input type="hidden" name="quantity[n]" value="quantityn"/> 

<input type="submit" value="Order"/> 
</form> 

在文件服务器中的“URL /到/ paymentPage.php”您可以使用下面的代码访问项目:

<?php 
$items = $_POST['items']; // Array of items .. 
$quantities = $_POST['quantity']; // The array of quantities for each item .. 

// Calculate the total price .. 
$totalPrice = 0; 
foreach($items as $idx => $itemID) { 
    if($quantities[$idx]>0) { 
    totalPrice += getPriceFromDB($itemID) * $quantities[$idx]; 
    } 
} 

echo 'Total Price to pay: '.$totalPrice; 
?> 

哪里函数getPriceFromDB实际上从数据库或其他地方检索具有id $ itemID的商品/商品的价格...... :)

但是,用户商品通常存储在会话中,因此没有需要再次提交..;)

3

你在考虑这个错误。你永远不要信任来自用户方的信息。

例如,如果您的用户发送表单说明他们想要的项目,请不要在表单中包含价格。取而代之的是从服务器(数据库)中获取可信的地方的价格。

+0

我忘记提到这一点,但当然,你绝对正确 – Jeroen

+1

@ user1391170,如果你需要使用另一页上的数据,将它粘贴在'$ _SESSION'中。会话数据存储在服务器端,会话ID cookie与客户端一起存储。 – Brad

0

尽管没有完全理解你想实现的,你可以使用base64编码的内容:

$encoded_string = base64_encode ($string); 

$decoded_string = base64_decode ($encoded_string); 
+0

Base64不是加密的。几乎每个人都知道关于编程的任何事情,这很容易被浏览和编辑。 –

+0

是的,Emil,但为什么会这样呢?他只是想将它作为纯文本传递,并且可以使用base64 – Jeroen

+0

从问题:“我想加密它”和“我不希望用户手动编辑url并降低金额” –