그런데 한가지 주의해야 할것은 이들 의 변경의 문제는 '/' 까치 처리가 된다는것입니다. 그래서 이것을 '/' 문자로 구분하여 각각을 urlencode 로 처리하고 붙어주어야 합니다. 가장쉬운 방법은 배열을 이용하는 방법이라 생각됩니다.
'/' 문자를 기준으로 각각자르고 배열로 저장한뒤 urlencode 처리한뒤에 다시 '/' 문자로 붙인다면 되겠지요. 이렇게 전달된 주소는 urldecode 에 의해 또다시 decode 될 필요없습니다.
2 .두번째의 경우에는.. echo '<A HREF="mycgi?foo=', urlencode($title), '">'; 로 처리한다면 공백도 안전하게 전달될것입니다.
그런데 여기서도 한가지 주의할것이 있습니다. '&' 기호는 파라미터를 구분하는 기호입니다. 이것이 들어간다면 파라미터의 구분기호로 처리되므로 더욱확실한 방법은 echo '<A HREF="demo.php3?foo=', htmlspecialchars(urlencode ($userinput) ), '">'; 처리 하는 방법일 것입니다.
이렇게 전달된 내용은 urldecode 를 통해서 decoding 작업을 거쳐주어야 원래의 값으로 복원이 됩니다. $foo = urldecode ($foo); 정도로 간단히 원래상태로 복구가 됩니다.
3. 세번째의 경우는 urnencode 만의 함수로도 가능합니다. $entitle = urlencode($title); 이때에도 urldecode 를 해주어야 원래의 내용을 복원할수 있습니다.
실제로 이렇게 urlencode 로 처리안해도 별다른 문제가 발생하지 않는 경우가 더 많습니다만 잘만들어진 대형사이트의 경우 안전한 파라미터값의 전달을 위해 사용하는곳이 더욱 많습니다. PHP 뿐만 아니라 웹프로그램을 하다보면 가끔 빼먹어 버릴수 있는 부분이지만 이런부분등을 꼼꼼히 챙긴다면 나중엔 습관처럼 되지 않을까합니다.