如何获取URL的值,例如www.example.php/folders/crowd
?我正试图用PHP来回应大众。我试过使用$_SERVER ['SCRIPTNAME']
,但我真的无法使用它。
要获取文件的当前目录(在您的"www.example.php/folders/coulse"示例中只是"群组"),请使用:
$cur_dir = basename(dirname($_SERVER[PHP_SELF]))
如果你只是想要这个文件,那么试试这个:
$cur_file = $_SERVER[PHP_SELF];
您可以使用parse_url,因为scriptname将返回真实的php文件执行"index.php"。
php > var_dump(parse_url('http://www.example.php/folders/crowd', PHP_URL_PATH));
// "/folders/crowd"
但如果你只想要最后一部分,你可以:
$tmp = explode('/', 'www.example.php/folders/crowd');
var_dump(end($tmp));
// "crowd"
或者另一种方式:
var_dump(basename(parse_url('http://www.example.php/folders/crowd', PHP_URL_PATH)));
// "crowd"
也许您想看看Apache模块mod_rewrite。许多网络托管提供商提供此模块。如果您操作自己拥有的专用服务器,则安装/启用此模块没有问题。
mod_rewrite可用于透明地将请求URL"转换"为具有从原始请求派生的查询字符串参数的已定义php脚本的请求。这通常用于对SEO友好的URL,如http://mywebpage/article/how-to-cook-pizza-123.html
。在这种情况下,可能只调用URL中的123
作为参数的脚本(例如http://mywebpage/article/how-to-cook-pizza-123.html
=>/article.php?id=123
)。
在您的情况下,您可以使用这样的配置(将其放入.htaccess文件或Apache/vhost配置中):
RewriteEngine on
RewriteRule ^folders/[A-Za-z]+$ showfolder.php?user=$1 [L]
您的showfolder.php
可能如下所示:
<?php
if (isset($_GET['user'])) {
echo htmlentities($_GET['user']);
} else {
echo "No parameter found.";
}
?>
folders/
之后由字母(A-Z和A-Z)组成的任何单词都将作为php脚本的user
参数。然后,您可以很容易地echo
这个值,从数据库或其他地方获取它。例如,对/folders/crowd
的请求将导致使用以下参数执行脚本:showfolder.php?user=crowd
。你网站的用户不会看到任何隐藏的内部转发。
如果你使用其他一些网络服务器软件(nginx,…):其他网络服务器产品也有类似的模块。