php-parameter.txt
11KB · 326 lines
[PHP] URI �Ķ���� ���� ���� ȯ�溯�� ��
- �ۼ��� : ��ĥ�� <san2(at)linuxchannel.net>
- �ۼ��� : 2003-06-27
- �� �� : PHP URI ����� ���� ���� �� ���
- �� �� : �ʺ���
- ���� : PATH_INFO, SCRIPT_NAME, PHP_SELF, PATH_TRANSLATED
*��)
�� ������ ���� �ֽ� ���� �Ʒ� URL���� Ȯ���� �� �ֽ��ϴ�.
http://www.linuxchannel.net/docs/php-parameter.txt
---------------------------------------------------------
���
1. PHP extension�� �̿��� ��
2. PHP Ȯ��ڸ� ���ְ� ����ϴ� ��
3. ��� ������ PHP ���� ��(ǥ)
4. ����(��� ���밡���� ��)
4-1. ����ġ RedirectMatch �� �̿�
4-2. ����ġ ErrorDocument �� �̿�
4-3. ����� ���̸� �̿�
5. �ı�
---------------------------------------------------------
��� �̸��� `foo.php' �̶�� ����.
1. PHP extension(���� 'Ȯ���')�� �̿��� ��
1) foo.php?id=abc&n=1
2) foo.php/?id=abc&n=1
3) foo.php/id=abc&n=1
4) foo.php/id=abc/n=1
5) foo.php/abc/1
6) foo.php/?id=abc&n=1&/s.ext
7) foo.php/?id=abc&/&n=1
8) foo.php?id=abc&/&n=1
9) foo.php/a/b/?id=abc&n=1
10) �� ���� ����
1)���� ���� ���� ����ϴ�(ǥ�����) ��
2)���� Ư���ϰ� 1)���� '/'�� ��� ������ �̰͵� ������
3)���� 2)������ ���(?)�� ���ִ� ���̸� ��� $_GET[id]�� ����
������ ���� ������ �� ����
4)���� 3���� '&'��� '/'�� �̿��� ��
5)���� ���� ������� �� ���� �Ҵ��ϴ� ��
6)���� 2���� 4���� ������ ������ ���� �ڴ� ����� ���̸���
7)���� 6���� ��� ������ $_GET ������ ����ϱ� ���ؼ� ����� ���
8)���� 7���� ���� ��·� ���� ��� '/'�� ������ ���
9)���� 5���� 1���� ����
2. PHP Ȯ��ڸ� ���ְ� ����ϴ� ��
1) foo?id=abc&n=1
2) foo/?id=abc&n=1
3) foo/id=abc&n=1
4) foo/id=abc/n=1
5) foo/abc/1
6) foo/?id=abc&n=1&/s.ext
7) foo/?id=abc&/&n=1
8) foo?id=abc&/&n=1
9) foo/a/b/?id=abc&n=1
10) �� ���� ����
��� 1�� ���� ��� �����ϸ� �ٸ� Ȯ��ڸ� ���� ���.
(�̷�����ε� �����ϸ�, foo ���丮�� ���� �����Ǿ�� ��)
3. ��� ������ PHP ���� ��
<PRE>
+----------------------------+----+--------------+------------+------------+
|REQUEST_URI |id |PHP_SELF |PATH_INFO |SCRIPT_NAME |
+----------------------------+----+--------------+------------+------------|
|/foo.php?id=abc&n=1 |abc |/foo.php |NA |/foo.php |
+----------------------------+----+--------------+------------+------------|
|/foo.php/?id=abc&n=1 |abc |/foo.php/ |/ |/foo.php |
+----------------------------+----+--------------+------------+------------|
|/foo.php/id=abc&n=1 |NA |REQUEST_URI |/id=abc&n=1 |/foo.php |
+----------------------------+----+--------------+------------+------------|
|/foo.php/id=abc/n=1 |NA |REQUEST_URI |/id=abc/n=1 |/foo.php |
+----------------------------+----+--------------+------------+------------|
|/foo.php/abc/1 |NA |REQUEST_URI |/abc/1 |/foo.php |
+----------------------------+----+--------------+------------+------------|
|/foo.php/?id=abc&n=1&/s.ext |abc |/foo.php/ |/ |/foo.php |
+----------------------------+----+--------------+------------+------------|
|/foo.php/?id=abc&/&n=1 |abc |/foo.php/ |/ |/foo.php |
+----------------------------+----+--------------+------------+------------|
|/foo.php?id=abc&/&n=1 |abc |/foo.php |NA |/foo.php |
+----------------------------+----+--------------+------------+------------|
|/foo.php/a/b/?id=abc&n=1 |abc |/foo.php/a/b/ |/a/b/ |/foo.php |
+----------------------------+----+--------------+------------+------------+
+----------------------------+----+--------------+------------+------------|
|REQUEST_URI |id |PHP_SELF |PATH_INFO |SCRIPT_NAME |
+----------------------------+----+--------------+------------+------------|
|/foo?id=abc&n=1 |abc |/foo |NA |/foo |
+----------------------------+----+--------------+------------+------------|
|/foo/?id=abc&n=1 |abc |/foo/ |/ |/foo |
+----------------------------+----+--------------+------------+------------|
|/foo/id=abc&n=1 |NA |REQUEST_URI |/id=abc&n=1 |/foo |
+----------------------------+----+--------------+------------+------------|
|/foo/id=abc/n=1 |NA |REQUEST_URI |/id=abc/n=1 |/foo |
+----------------------------+----+--------------+------------+------------|
|/foo/abc/1 |NA |REQUEST_URI |/abc/1 |/foo |
+----------------------------+----+--------------+------------+------------|
|/foo/?id=abc&n=1&/s.ext |abc |/foo/ |/ |/foo |
+----------------------------+----+--------------+------------+------------|
|/foo/?id=abc&/&n=1 |abc |/foo/ |/ |/foo |
+----------------------------+----+--------------+------------+------------|
|/foo?id=abc&/&n=1 |abc |/foo |NA |/foo |
+----------------------------+----+--------------+------------+------------|
|/foo/a/b/?id=abc&n=1 |abc |/foo/a/b/ |/a/b/ |/foo |
+----------------------------+----+--------------+------------+------------+
(��... �̰� ���µ� �ð���...T.T)
</PRE>
*���)
- ���� �⺻�� �Ǵ� ȯ�溯���� DOCUMENT_ROOT �� SCRIPT_FILENAME ��
- DOCUMENT_ROOT = DocumentRoot �� ������(httpd.conf)
- SCRIPT_FILENAME = ��� ���� ���� ���� ���(���� ��Ȯ�� ��)
*��)
- QUERY_STRING �� REQUEST_URI ���� ù��° '?' ����� ��� ���ڿ�
- PHP_SELF �� REQUEST_URI ���� QUERY_STRING ���ڿ��� ������ �����
- PATH_INFO �� PHP_SELF ���� �ι�° '/' ���� ����� ���ڿ�
- SCRIPT_NAME �� PHP_SELF ���� PATH_INFO �� �� �պκ� ���ڿ�
(�� REQUEST_URI ���� '?'�� '/' ����� ���� ��� ���ڿ��� ������ �����)
- PATH_TRANSLATED = PATH_INFO ? DOCUMENT_ROOT + PATH_INFO : SCRIPT_FILENAME
(PATH_INFO ���� �ִٸ� DOCUMENT_ROOT �� PATH_INFO �� ����,
�� �ܴ� SCRIPT_FILENAME)
<��� >
����ġ Action ����ڰ� ����� ��� �ణ ��ٷο�.
������: Action text/plain /bin/action.php
��û��: /test.txt?str=string
��(SCRIPT_NAME �� ���)
DOCUMENT_ROOT => /www
SCRIPT_FILENAME => /www/bin/action.php <-- ���
SCRIPT_NAME => /bin/action.php <-- Action ����ڿ��� ������
QUERY_STRING => str=string
PHP_SELF => /bin/action.php/test.txt <-- SCRIPT_NAME �� �տ� ���
PATH_INFO => /test.txt <-- PHP_SELF �� ����ϱ� ����
PATH_TRANSLATED => /www/test.txt
</��� >
*ȯ�溯�� ��� ����)
<PRE>
[DOCUMENT_ROOT]---+
| |
[REQUEST_URI] ----+
| |
| [SCRIPT_FILENAME]
|
|--(? ���� ����)-----------> [QUERY_STRING]
|
`--(QUERY_STRING ����)-----> [PHP_SELF]
|
[PATH_INFO] <---(/ ���� ����)----+
|
[SCRIPT_NAME] <--(PATH_INFO ����)--+
</PRE>
4. ����(��� ���밡���� ��)
4-1. ����ġ RedirectMatch �� �̿�
RedirectMatch ^/([^./]+)$ /check.php?id=$1
�� �����ǵ���
/abc ---> /check.php?id=abc (redirect �ǵ�)
/ccc ---> /check.php?id=ccc (redirect �ǵ�)
/abc/ ---> /abc/
/abc.php ---> /abc.php
�̿� ���� ���� �ǵ��� ��������� �ּ��ϰԵ� ����� Redirect
��� �ʽ��ϴ�.
����� ����ġ�� Redirect �� ? ���ڰ� ���ڵ�(%3f)�Ǿ� �Ѿ��
������ PHP ��Ͽ����� ��û����� �ؼ���� �ʰ� ����� �ϳ���
��Ϸ� �ν��ϱ� �����Դϴ�.
����� ù��° redirect ����
/abc ---> /check.php%3fid=abc (redirect �ǵ� ����)
�̷��� �Ѿ�� 404 ������ ���� �˴ϴ�.
�ذ���� ?(���)�� ������ �ʰ� PATH_INFO ȯ�溯���� �����
����� ���� ���� ����ϴ°�� �����ϴ�.
��弳��)
RedirectMatch ^/([^./]+)$ /check.php/id=$1
or
RedirectMatch ^/([^./]+)$ /check.php/$1
or
RedirectMatch ^/([^./]+)$ /check/id=$1
or
RedirectMatch ^/([^./]+)$ /check/$1
4-2. ����ġ ErrorDocument �� �̿�
������ �� ���� �����ߴٸ� ErrorDocument �� �ϳ��� ��Ͽ��� ��� ������
�� �ֽ��ϴ�.
1)�Ϲ���� ��
ErrorDocument 401 /error.php
ErrorDocument 403 /error.php
ErrorDocument 404 /error.php
2)�̰͵� ����
ErrorDocument 401 /error <-- ����δ� error.php ���
ErrorDocument 403 /error
ErrorDocument 404 /error
3)�̰͵� ����
ErrorDocument 401 /error/ <-- error.php ��� �Ǵ� /error/index.php
ErrorDocument 403 /error/
ErrorDocument 404 /error/
4)�Ķ���ͷ� ����
ErrorDocument 401 /error/401
ErrorDocument 403 /error/403
ErrorDocument 404 /error/404
4)�� ���� ���� �����
/error.php/401
/error/index.php/401
�� �ΰ� �� �� ��̵� ��ġ�˴ϴ�.
���� 4)�� ���� ����� �̷��� ������� �ʾƵ� �����մϴ�.
����� ErrorDocument �� ó���ϴ� ��Ͽ����� REDIRECT_STATUS ����������
�����ϱ� �����Դϴ�.
���� ErrorDocument �ڵ� ���� ��ٸ�,
-- /error.php ---------------------------
<?php
$TITLE[401] = '401 Authorization Required';
$TITLE[403] = '403 Forbidden';
$TITLE[404] = '404 Not Found';
$errcode = $_SERVER["REDIRECT_STATUS"];
$request = 'http://'.$_SERVER[HTTP_HOST].$_SERVER[REQUEST_URI];
echo <<<_EOF_
...
<TITLE>$TITLE[$errcode]</TITLE>
...
- ��û�� (URI)���� : $request<BR>
- ���� ��� : $TITLE[$errcode]<BR>
- ���� ���� : $_SERVER[REDIRECT_ERROR_NOTES];
...
_EOF_;
?>
-----------------------------------------
�̷������ �ڵ��� �����մϴ�.
4-3. ����� ���̸� �̿�
��1)
Request URI : /dowonload/media/foo/bar/setup.exe
�̰�� ����� ��������
/dowonload/media/foo/bar/alpha.exe
/dowonload.php/media/foo/bar/alpha.exe
/dowonload/media.php/foo/bar/alpha.exe
/dowonload/media/foo.php/bar/alpha.exe
/dowonload/media/foo/bar.php/alpha.exe
�̿� ���� ��·� �ؼ��� �����մϴ�.
(Ȯ��ڸ� ��� ���ְ� ��ũ�� �Ŵ� ��)
���� ù��° ��ó�� ����� �������� DocumentRoot ���ʿ�
alpha.exe ���� �ִ� ��츦 �����ϸ�, ����� ���� ���
DocumentRoot �ٱ��ʿ� alpha.exe ���� �־ ����ٴ�
�ǹ�Դϴ�.
���� alpha.exe ���� ����� ���� ���� �ְ� ����� ���� �� ��
�ֽ��ϴ�.
�ι�°�� ����� ����� download.php ��Ͽ��� PAHT_INFO �� ���ڿ���
�Ľ��Ͽ� �����ϰ� ���� ������ Ŭ��̾�Ʈ���� �����ؾ� �մϴ�.
�̿� ���� ����� ��� �̸��� �̿��ϴ� ��� :
- Ȯ��ڿ� ���ؼ� ����(��:MSIE)�� Content-type�� �����ϴ� ���
- ��ҹ��ڸ� �������� ��밡���ϰ�� �� ���
- �ٿ�ε��ϱ� ���� � ��� ����� �ʿ��� ���
- ��� ���� DocumentRoot �ٱ��ʿ� ��� ���
- ���� �����ϰ� URI �� ����ϰ�� �� ���
- ��� ũ�Ⱑ ��� ��� ���� � ���� ���� ������ �� ���
- ��Ÿ
��� ���� ��) winamp ��
/mp3stream/stream.php/sPy_DIR_7MDHtKu5sC5tcDM=/����Ǵ���.mp3
5. �ı�
�ð��� �ȴٸ� ���ִ�(?) ����ġ Action ����� ������ �����
���ؼ�...
EOF