Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
基于会话变量和数据库查询的php虚拟目录_Php_.htaccess_Mod Rewrite - Fatal编程技术网

基于会话变量和数据库查询的php虚拟目录

基于会话变量和数据库查询的php虚拟目录,php,.htaccess,mod-rewrite,Php,.htaccess,Mod Rewrite,在我的网站中,我有三种类型的用户,比如说A、B和C。他们访问的网页大部分是不同的,但仍然很少有重叠。我制作了如下目录。喜欢 Root A A1 A2 A3 K1 K2 B B1 B2 K1 C C1 C2 C3 K1 K2 所以这里的文件K1和K2有共同的名称,尽管

在我的网站中,我有三种类型的用户,比如说A、B和C。他们访问的网页大部分是不同的,但仍然很少有重叠。我制作了如下目录。喜欢

Root
    A
        A1
        A2
        A3
        K1
        K2
    B
        B1
        B2
        K1
    C
        C1
        C2
        C3
        K1
        K2
所以这里的文件K1和K2有共同的名称,尽管内容不相似。当一类用户登录时,他可以浏览
domain.com/A/A1/
domain.com/A/K2/
等。B类用户可以浏览
domain.com/B/B1

我想要的是,当一类用户登录时,他浏览
domain.com/A1/
domain.com/K1
等,而不使用
A
B
等。现在为了防止文件的清晰性,我不能将所有文件混合在一起,因此需要将它们保持在与上面描述的相同的目录配置中。那怎么办呢?怎么办

mod_rewrite有助于创建虚拟目录,但在这种情况下它不会有帮助,因为我们需要PHP会话变量和数据库查询来选择如何显示,以及让用户能够访问哪些内容

我可能不太清楚,所以请在理解问题时询问您遇到的任何问题。
谢谢。

您必须做两件事:获取请求的URI,获取用户类型。然后你就知道该服务什么目录了。htaccess和mod_rewrite不足以完成第二件事,因为它无法访问数据库

您可以使用以下方法将所有内容路由到某种php控制器中:

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /user_type.php?request=$1 [L]
然后,
user\u type.php
将从
request
$\u GET变量中知道第一件事,然后它可以通过获取用户类型来执行第二件事,然后根据用户类型返回请求。比如:

$file_to_serve = $_GET['request'];

if($user_type == 'A')
    $file_to_serve = 'A/' . $file_to_serve;

“用户类型”存储在哪里?在会话cookie中?在活动会话的数据库中?查询字符串参数?会话变量存储用户的UID,根据UID,我们可以通过从组表查询来知道用户的类型。谢谢。我不知道。htaccess可以获取一个php脚本。如何发送回.htaccess<代码>将$file\u返回给\u服务?我明天亲自退房。现在这里已经很晚了。@k_程序员不需要将其发送回htaccess,php脚本只需将
$file_的内容输出到
并由浏览器呈现。我试过这段代码。浏览器没有输出,所以我添加了
include($file\u to\u service)但现在我得到403禁止<代码>无法打开流:在第16行的C:\wamp\www\wintern\user\u type.php中,权限被拒绝
@k\u程序员您可能需要在路径
C:\\wamp\\www\\wintern\`中包含到
$file\u的开头`