2012-05-12 126 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並降低金額」 –