2012-05-12 7 views
0

저는 PHP를 처음 사용 했으므로 약 3 주 전에 시작했습니다.문자열 인코딩, 배열 디코드

다른 페이지로 전달하기 위해 $ _POST와 함께 사용되는 문자열이 있습니다. 두 번째 페이지는 $ _GET을 사용하여 이러한 URL을 얻고 원하는대로 분할합니다.

제 문제는 첫 번째 페이지에서 String을 사용하고이를 암호화하여 계획 텍스트로 전달할 수 있다는 것입니다. 두 번째 페이지에서 해독해야하며 배열로 가져와야합니다.

그래서 나는 $ _POST와 호환되는 암호화 방법 또는 기능이 있습니까 (그래서 다른 페이지로 보낼 수 있습니다). 배열로 해독 할 수 있습니까?

두 번째 페이지가 실제로 웹 사이트에 연결되어 있고 결제 수단이기 때문에이 방법이 필요합니다. 그래서 나는 사용자가 수동으로 URL을 편집하고 그들이 얻는 제품에 대한 $ 금액을 낮추기를 원하지 않는다.

당신의 도움에 감사드립니다.

+0

$ _POST는 POST 요청을 사용하여 서버에 보낸 매개 변수를받는 데 사용됩니다. 매개 변수는 요청 본문 (일반적으로 URL 인코딩 됨)으로 전달됩니다. 양식 제출 또는 ajax 요청을 통해). 매개 변수가 요청 URL (예 : www.domain.tld? param1 = value1 & param2 = value2 & ...)에 있다는 사실을 제외하면 $ _GET은 실제로 같은 개념입니다. – Javaguru

+0

사용자는 항상 요청. 그것은 단지 HTTP 프로토콜에 대한 사용자 지식의 문제 일뿐입니다. 따라서 요청과 함께 이러한 정보를 절대 전달해서는 안됩니다. – Javaguru

+0

세션을 사용하십시오. 암호화는 종종 당신보다 더 경험이 많은 사람에 의해 전복 될 수 있습니다. – goat

답변

0

당신이 아마 사용자 카트의 내용 (즉, 항목 그가 좋겠 전달됩니다 싶지 주문과 같은) 지불 사이트에.

<?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; 
?> 

: 다음 코드를 사용하여 항목에 액세스 할 수 있습니다 "/ paymentPage.php하는 URL /"파일의 서버에서

<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> 

: 따라서 같은 양식을 작성해야합니다 getPriceFromDB 함수는 실제로 데이터베이스 나 다른 곳에서 ID itemID를 가진 아이템/제품의 가격을 검색합니다. :)

그러나 사용자 항목은 일반적으로 세션에 저장되므로 아무 것도 없습니다 다시 제출해야합니다 ..;)

3

당신은이 잘못에 대해 생각하고 있습니다. 사용자 측에서 오는 정보는 절대로 믿지 않습니다.

예를 들어 사용자가 원하는 항목을 말하는 양식을 보내면 양식에 가격을 포함하지 마십시오. 대신 신뢰할 수있는 서버 (데이터베이스)에서 가격을 확보하십시오.

+0

나는 이것을 언급하는 것을 잊어 버렸지 만, 물론, 당신은 절대적으로 맞습니다. – Jeroen

+1

@ user1391170, 한 페이지의 데이터를 다른 페이지에서 사용해야하는 경우, 그것을 '$ _SESSION'에 붙여야합니다. 세션 데이터는 서버 측에 저장되고 세션 ID 쿠키는 클라이언트와 함께 저장됩니다. – Brad

0

완전히 당신이, 당신이 base64 인코딩을 사용하여 달성하려고하는지 이해하지 못하는에도 불구하고 :

$encoded_string = base64_encode ($string); 

$decoded_string = base64_decode ($encoded_string); 
+0

Base64는 암호가 아닙니다. 거의 모든 사람이 프로그래밍에 대해 알면서도 쉽게보고 편집 할 수 있습니다. –

+0

예, 에밀, 그게 왜 문제가 되겠습니까?그는 그냥 일반 텍스트로 전달하려고하며 base64를 사용하여 수행 할 수 있습니다. – Jeroen

+0

질문에서 "암호화하고 싶습니다."및 "사용자가 URL을 수동으로 편집하여 금액을 줄이기를 원하지 않습니다." –