2012-06-11 5 views
5

이 두 가지 방법으로 데이터를 함께 전달해야합니다 (GET 및 POST). 나는이 방법을 쓸 수 있지만 나는 그것이 안전한지 모른다 :이 코드는 안전GET과 POST를 함께 사용할 방법이 있습니까?

<form method="post" action="profile.php?id=<?php echo $_SESSION['id']; ?>" enctype="multipart/form-data"> 
<input type="text" size="40" name="title" > 
<textarea name="description" rows="2" cols="30"></textarea> 
<input id="starit" name="submit" value="Create" type="submit" /> 
</form> 

<?php 
a= $_GET['id']; 
b= $_POST['title']; 
c= $_POST['description']; 
?> 

인가? 아니면 다른 방법이 있습니까?

+3

세션의 숨겨진 입력 필드에 세션 ID를 쓰지 않는 이유는 무엇입니까? 결국 웹 사이트의 출처를 탐색하면 사용자는 자신의 세션 ID를 읽을 수 있습니다. – Corsair

+0

어쩌면 그는 이렇게 할 이유가있을 것입니다. – Aelios

답변

11

이것은 GET 및 POST 요청이 결합 된 것이 아닙니다. 오히려 쿼리 매개 변수가 포함 된 POST 요청입니다.

작성한 내용이 올바른 방법입니다.

<form method="post" action="profile.php?id=<?php echo rawurlencode($_SESSION['id']); ?>"> 

그리고 당신은 파일을 업로드하지 않는 경우, 당신은 설정할 필요가 없습니다 : 당신이 당신의 출력을 탈출 있는지 확인 BTW,

if (isset($_GET['id'], $_POST['title'], $_POST['description']) { 
    // go ahead 
} 

: 항상 당신이 예상 필드를 얻을 수 있는지 확인/<form>입니다.

+0

오, 당신은'isset'에 여러 변수를 사용할 수 있습니까? : D – ADTC

+0

@ADTC 예, true가 모두 반환됩니다. –

1

이 더 낫다 :

<form method="post" action="profile.php?id=<?php echo urlencode($_SESSION['id'])); ?>"> 
1

당신이에 의해 다음 POST를 모두 사용하는 대신 GET 또는 POST의 요청으로 얻을 PARAMS의 같은 이름으로는 "요청 주문"순서가 GET 얻을 수 있습니다 태만.

http://php.net/request-order

는 php.ini 파일에

-1

양식 조건 에 method 속성을 작성하고 입력에 formmethod = "" 속성 ... 예를 들어 추가하지 않습니다

<input type="submit" formmethod="get" name="inputGet" value="updateGet" > 
<input type="submit" formmethod="post" name="inputPost" value="updatePost" > 
+0

'form method'를 의미합니까? –

+0

예, 양식 태그에 메소드를 사용하지 마십시오. –

관련 문제