在URL中获取一个子目录文件夹并回显它


Get a sub-directory folder in the URL and echo it .

如何获取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,…):其他网络服务器产品也有类似的模块。