PHP中 $_SERVER[“PHP_SELF”] 作用和含义
首先 $_SERVER 数组在 PHP 中是一个全局数组,所以,在任意一个 PHP 脚本中都可以使用 $_SERVER 数组中的值。在函数或方法中无需执行 global $variable; 就可以访问它们。
$_SERVER 中存储了包括头信息,路径,脚本位置等,感兴趣的可以打印出来看下:
<?php echo '<pre>'; print_r($_SERVER); echo '</pre>'; ?>
打印结果如下:
在 $_SERVER 数组中存储的众多值中,存储了一个键为 'PHP_SELF' 的值,也就是 $_SERVER[“PHP_SELF”],该值存储的内容是:当前执行脚本的文件名,与 document root 有关。
比如执行一个 php 脚本的地址为:http://localhost/test/7ghost.php/ , 那么 $_SERVER[“PHP_SELF”] 对应的值即为:/test/7ghost.php/。
而且 $_SERVER[“PHP_SELF”] 该地址不包含 url 中的参数,比如你访问的 url 地址为:http://localhost/test/7ghost.php?par=123&par2=333 而 $_SERVER[“PHP_SELF”] 的值为 /test/7ghost.php 。
再比如,你访问的 url 地址为:http://localhost/test/7ghost.php/abc , 那么 $_SERVER[“PHP_SELF”] 的为:/test/7ghost.php/abc 。
当你想要获取当前页面的地址时,你可以使用下面的方法进行获取:
$url="http://".$_SERVER['HTTP_HOST'].$_SERVER['PHP_SELF'];
而关于 $_SERVER[‘PHP_SELF’] 使用的安全性,比如这种形式:
<form method="post" action="<?php echo $_SERVER[‘PHP_SELF’]; ?>">
可能会被跨网站脚本攻击。
关于该危险性可以参考:
http://blog.csdn.net/load_life/article/details/7674709
http://www.jianshu.com/p/fc0e590125c9
1 Comment
这个好像还没有用过,某些时候还是挺不错的