php script url,PHP_SELF REQUEST_URL SCRIPT_NAME之间的区别【转载】

$_SERVER[’PHP_SELF’],

$_SERVER['REQUEST_URI'], and $_SERVER[’SCRIPT_NAME’] all behave in

similar ways, they return information about what file is being

used. When exposed to some differnt scenarios, you can see in some

cases they do behave differently. This can help you decide which is

best for what you need in your script.

$_SERVER[’PHP_SELF’]

http://www.yoursite.com/example/ -- -- --

/example/index.php

http://www.yoursite.com/example/index.php -- --

-- /example/index.php

http://www.yoursite.com/example/index.php?a=test

-- -- --

/example/index.php

http://www.yoursite.com/example/index.php/dir/test

-- -- -- /dir/test

When we use $_SERVER[’PHP_SELF’]

we have the file name /example/index.php returned to us both when

we did and did not actully type it in the URL. When we appended

variables to the end of it, they where truncated and again

/example/index.php was returned. The only one that produced a

different result was when we appended directories after the file

name. In that case, it returned those directories.

$_SERVER['REQUEST_URI']

http://www.yoursite.com/example/ -- -- --

/

http://www.yoursite.com/example/index.php -- --

-- /example/index.php

http://www.yoursite.com/example/index.php?a=test

-- -- --

/example/index.php?a=test

http://www.yoursite.com/example/index.php/dir/test

-- -- --

/example/index.php/dir/test

In all of our examples, this

returned exactly what we entered for the URL. It returned a plain

/, the file name, the variables, and the appended directories, all

just as they had been entered.

$_SERVER[’SCRIPT_NAME’]

http://www.yoursite.com/example/ -- -- --

/example/index.php

http://www.yoursite.com/example/index.php -- --

-- /example/index.php

http://www.yoursite.com/example/index.php?a=test

-- -- --

/example/index.php

http://www.yoursite.com/example/index.php/dir/test

-- -- --

/example/index.php

In all cases here we were returned

only the file name /example/index.php regardless of if it was

typed, not typed, or anything was appended to it.

--------------------------------------------------------------------------------------

通常在本機測試 $_SERVER['SCRIPT_NAME'] 跟 $_SERVER['PHP_SELF']

大概看不出有什麼不同,因為大部分的PHP不是以CGI模式運行的。

但 DreamHost 上的 PHP 是以 CGI 方式運行,二者就有明顯不同的差異。

echo $_SERVER['SCRIPT_NAME']; // (/cgi-system/php.cgi)

echo $_SERVER['PHP_SELF']; // (/admin/test.php)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值