2012-12-08 4 views
0

나는 PHP를 배우고 있습니다. 나는 하나의 PHP 페이지에서 다른 페이지로 2 개의 변수와 2 개의 배열을 게시하려고 시도하는 코드를 가지고 있지만, 수신 페이지는 제대로 작동하지만 첫 페이지는 몇 자 (최대 길이 또는 어느 곳이든 접근 할 수 없음) 이후의 데이터 자르기입니다.URL은 serialize/php 배열로 최대 길이에 도달하기 전에 잘립니다.

여기에서 $ array_name 및 $ array_qty는 두 개의 동적 배열입니다. 나는 echo $ c가 내가 원하는 것을 정확히 제공한다는 것을 확인했다.

<?php 
    $serialized_name=serialize($array_name); 
    $serialized_qty=serialize($array_qty) ; 
    $c="count=".$count ."&&Sum=" . $a . "&&serialized_name=". $serialized_name . "&&serialized_qty=". $serialized_qty; 
    echo $c; 
    ?> 

에코 $ C는 ME-에게 그러나

count=6&&Sum=45.91&&serialized_name=a:7:{i:0;s:7:"vanilla";i:1;s:7:"vanilla";i:2;s:21:"very berry strawberry";i:3;s:7:"vanilla";i:4;s:7:"vanilla";i:5;s:7:"vanilla";i:6;s:7:"vanilla";}&&serialized_qty=a:7:{i:0;s:1:"2";i:1;s:1:"1";i:2;s:1:"1";i:3;s:1:"1";i:4;s:1:"1";i:5;s:1:"3";i:6;s:1:"3";} 

준다이 제가 상기 라인으로부터 얻을 $c=

<p><a href="Checkout.php?<?php echo $c ?>" >Checkout</a> </p> 

자른 출력 출력 자른 제공

을 인걸요
http://localhost/myRestaurant/Checkout.php?count=6&&Sum=45.91&&serialized_name=a:7:{i:0;s:7: 

나는 내가 얻을 알고 this-

http://localhost/myRestaurant/Checkout.php?count=6&&Sum=45.91&&serialized_name=a:7:{i:0;s:7:%22vanilla%22;i:1;s:7:%22vanilla%22;i:2;s:21:%22very%20berry%20strawberry%22;i:3;s:7:%22vanilla%22;i:4;s:7:%22vanilla%22;i:5;s:7:%22vanilla%22;i:6;s:7:%22vanilla%22;}&&serialized_qty=a:7:{i:0;s:1:%222%22;i:1;s:1:%221%22;i:2;s:1:%221%22;i:3;s:1:%221%22;i:4;s:1:%221%22;i:5;s:1:%223%22;i:6;s:1:%223%22;} 

최고의 가장 안전한 방법은 아닙니다 입수했습니다해야한다고 생각하지만, 나는이 일을해야 생각합니다. 내가 뭘 잘못하고 어떤 방법에 대한 조언을 주시면 고맙게 생각합니다.

+2

: 수행 Checkout.php에 데이터를 retrieveing를 들어

$serialized_name = base64_encode(serialize($array_name)); $serialized_qty = base64_encode(serialize($array_qty)); 

반대 :

그냥 인코딩에 사용 ? 그것은 단지'&' – koopajah

+0

이어야합니다. html을 배우고 있습니다. 나는 그것을 시도 할 것입니다. – Illusionist

+0

문자열을 urlencode 했습니까? echo urlencode ($ c) – jtheman

답변

3

인용 부호는 속성을 조기에 종료합니다. 당신의 인용 부호를 탈출 :

<?php echo htmlentities($c); ?> 
+0

와우, 대단해, ​​고마워! 고쳐. – Illusionist

+1

그들은 HTML 엔터티를 사용하는 것 외에도 php의'urlencode'를 사용하여 각 url 매개 변수와 값을 개별적으로 이스케이프해야합니다. – Matthew

1

당신이 당신 배열에서 URL을 만들려면 당신은 그냥 임의의 데이터를 직렬화 할 수없는, 어쨌든 쇼핑 카트 제품의 종류에 대해 POST를 사용해야하지만, 당신 데이터를 인코딩해야하거나 특수 문자 때문에 중단됩니다. 당신이 URL에 매개 변수를 구분하는`&&`사용하는 이유는

$unserialized_name = unserialize(base64_decode($_GET["serialized_name"])); 
$unserialized_qty = unserialize(base64_decode($_GET["serialized_qty"])); 
+0

답을 많이 고맙습니다. – Illusionist

관련 문제