2012-08-06 64 views
0

我想知道是否有可能得到只拉出用户名。使用php获取用户名从根路径

这里是我与工作的示例路径:

/home/UserName/public_html/index.php 

同样的用户名在IP链接到文件夹中。这是我正在使用的一个例子。 http://xxx.xxx.xxx.xxx/~UserName/index.php

我想知道如果我能以某种方式使用PHP从我的服务器获取此路径,然后解析出除usrername外的所有内容。然后,我想采取该用户名,并使其成为一个变量,我可以使用其他页面上的其他位置。

$username = UserName 

这是否有意义?

我遇到的根本问题是我使用了很多PHP包含,而且我遇到了绝对/相对路径问题。我在想,通过获取用户名,我可以把所有事情都变成绝对路径。也许我正在谈论这一切都是错误的。

任何建议将是可怕的。谢谢大家的时间。

+0

是您的代码总是会与目录结构,这样的系统上运行?当他们的代码位于'/ var/www'或'C:\ Inetpub \ wwwroot'或'/ var/sites/users/b/bob123/domain.com'时会发生什么?请参阅[get_current_user()](http://php.net/get_current_user),但在某些PHP配置中,可以返回诸如'nobody','daemon','apache'等东西。 – drew010 2012-08-06 22:13:34

回答

0

Got it!下面是代码:

<?php 
$full = dirname(__FILE__); 
$folder = basename(dirname(__FILE__)); 
$trim = strtr($full, array('/home/'=>'')); 
$trim2 = strtr($trim, array('/public_html/'=>'')); 
$userid = strtr($trim2, array($folder=>'')); 
?> 

在这个例子中,如果

dirname(__FILE__) = /home/USERNAME/public_html/blog/ 

然后$用户ID会= USERNAME

2

AFAIK被盗,最好的做法是使用$_SERVER['DOCUMENT_ROOT']为包括。

include($_SERVER['DOCUMENT_ROOT'] . '/templates/footer.php'); 
+0

这会返回错误的文件结构类型。 它返回的东西,看起来像这样: 在/ usr /本地/ Apache/htdocs中 我需要: /家/用户名/的public_html – BostonBB 2012-08-06 22:13:41

+0

这听起来像一个好主意,因为它结合一切'$ _ SERVER [ 'DOCUMENT_ROOT']'。如果你想开始移动的话,那么你的运气不好。如果您从CGI运行PHP,则可能不会设置文档根目录。另外,如果从命令行调用PHP脚本,则根本不存在'$ _SERVER'。 – rid 2012-08-06 22:13:54

+0

'$ _SERVER ['DOCUMENT_ROOT']'每个用户都是不同的。如果他们的代码用完了那个目录,它应该在99%的情况下返回'/ home/user/public_html'。 – drew010 2012-08-06 22:14:34