$_SERVER['PHP_SELF']


- 셀프. 즉, 자기 자신 PHP를 나타낸다.

- 즉, $_SERVER['PHP_SELF']을 사용하는 페이지가 test.php 면 test.php 경로 자체를 가지고 온다.

- 이것은 보통 form에서 action에 주로 사용한다. 이러면,  실행중인 PHP를 다시 호출한다.


        <form id="register-form" action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">

            <input type="email" name="usr_email" placeholder="Email" class="form-control" />

<input type="text" name="usr_name" placeholder="Email" class="form-control" />

        </form>


이렇게 주로 작성한다. 나도 그냥 갖다 붙여서 잘 모르고 사용헀다.


그런데 만약에 PHP에서 사용하던 변수를 계속 사용하려면 어떻게 할까?


서버측에서(php포함) header를 사용하여 location으로 페이지를 이동한다.


그래서 다음과 같이 URL 뒤에 변수 = 값을 사용하는 GET방식으로 변수를 보내고 싶었다.


header("Location: ../index.php?number=$num");


이렇게 했는데 아무리 해도 주소창에


index.php?number=


으로 나오며 해당 페이지가 나오지 않았다... 왜 값을 가져오지 못하는것일까.

검색을 하다가 form에 의문을 갖게 되었고, 이때서야 의미를 알지 못하던 

$_SERVER['PHP_SELF']에 대해 검색해봤다.


그 결과,


https://stackoverflow.com/questions/18747843/pass-get-variables-when-using-serverphp-self


여기서 발견. 어이없이 action을 비워두라는 답변. 해봤는데 오 된다.


<form action="" method="POST">

정확한 문법, 왜 그러지는지는 아직 잘 모르곘다.


아마 해당 PHP파일로만 이동(위의 경우 /index.php로) 만 보내고 GET 파라미터를 무시하는것이 

아닌가하는 생각을 해본다.


※결론※

어쨋거나 form 태그 속성 중 action에 $_SERVER['PHP_SELF']을 집어넣는 경우 

GET 파라미터들이 무시되며 null? 공백? 으로 나온다는 것을 알게 되었다.

Posted by sungho88
,