2011-07-28 5 views
21

나는 이와 같은 PHP 폼을 가지고있다.PHP 폼 액션 PHP 자체

<form name="form1" id="mainForm" method="post"enctype="multipart/form-data" action="<?php echo $_SERVER['PHP_SELF'];?>"> 

</form 

매개 변수가있는 페이지 이름을 사용하고 싶습니다. house.php?p_id=10111입니다. 하지만 $ _SERVER [ 'PHP_SELF']는 house.php (내 페이지의 전체 URL은 house.php?p_id=10111입니다.) 만 제공합니다.이 문제를 해결하는 데 도움을주십시오. 감사.

+1

이것은 전체 URL이 아닙니다. 그것은 url + GET 매개 변수입니다. –

+1

@Alex Ackerman : 오히려 [경로] (http://tools.ietf.org/html/rfc3986#section-3.3)와 [query] (http://tools.ietf.org/html/rfc3986#section- 3.4). – Gumbo

+2

예. 알렉스가 맞습니다. 나는'$ _SERVER [ 'PHP_SELF']. "? P_id =". $ id' –

답변

71

어떻게 비워 두는 것이 좋을까요?

<form name="form1" id="mainForm" method="post" enctype="multipart/form-data" action=""> 

</form> 

또한 작업 특성을 생략해도 예상대로 작동합니다.

+1

감사합니다. 나는 이것을하는 것이 가장 쉽고 좋은 방법이라고 생각한다. –

+11

공백으로두면 w3c 유효성 검사가 중단됩니다 (신경 쓰이는 경우) – gadlol

+10

@jBaron 예, HTML5에서는 그렇지만 비어있는'action = ""'속성은 생략 할 수 있습니다. 그것은 유효성을 검사하고 예상대로 작동합니다. – Shef

7

작업 값을 비워두면 양식이 다시 게시됩니다.

12

당신은 빈 조치를 떠나거나이 코드를 사용할 수 있습니다

<form name="form1" id="mainForm" method="post" enctype="multipart/form-data" action="<?php echo $_SERVER['REQUEST_URI'];?>"> 
</form> 
0

이 완벽합니다. 노력이 하나 :

<form name="test" method="post" enctype="multipart/form-data" action="<?php echo $_SERVER['PHP_SELF']; ?>"> 
/* Html Input Fields */ 
</form> 
+1

입니다. 이것은 XSS 공격을 허용합니다. PHP_SELF를 필터링/sanatize해야합니다. – Chad

+0

알 겠어요. 고마워요. 유용합니다. –

3

당신은 밖으로 입력하는 대신 또한 에코 바로 가기를 사용할 수 있습니다 "ㅋ 에코;" 아래와 같이

<form method="POST" action="<?=($_SERVER['PHP_SELF'])?>"> 
+1

XSS 공격을 허용하므로 PHP_SELF를 필터링/sanateize해야합니다. – Chad

1

또 다른 (그리고 내 의견으로는 적절한) 방법을 사용 $_SERVER 변수에 의존하고 싶지 않을 경우 __FILE__ 상수를 사용합니다. 마법과 미리 정의 된 상수에 대한

$parts = explode(DIRECTORY_SEPARATOR, __FILE__); 
$fileName = end($parts); 
echo $fileName; 

: 1, 2.