Php 使用全局变量动态更改URL

Php 使用全局变量动态更改URL,php,html,mysql,.htaccess,globals,Php,Html,Mysql,.htaccess,Globals,所以这很难解释 我有一个A文件夹和一个B文件夹。我正在为这两个项目使用一个公共数据库 这两个文件夹都有以下文件,每个文件夹中都有=>config.php、index.php、upload.php、control_admin.php、admin.php和view.php。B和A共享一些基本的数据库、CSS和JS文件(没有任何问题) 现在A代表项目A,B代表项目B 对于每个项目,我都有URL=>a.example.com和b.example.com 在a.example.com/index.php上

所以这很难解释

我有一个A文件夹和一个B文件夹。我正在为这两个项目使用一个公共数据库

这两个文件夹都有以下文件,每个文件夹中都有=>config.php、index.php、upload.php、control_admin.php、admin.php和view.php。B和A共享一些基本的数据库、CSS和JS文件(没有任何问题)

现在A代表项目A,B代表项目B

对于每个项目,我都有URL=>a.example.com和b.example.com

在a.example.com/index.php上,我上传了一个图像文件,其特征类似于project_name=Apple Version=1

在b.example.com/index.php,我上传了一个图像文件,其特征类似于project_name=Banana Version=1

这些图像分别上载到A和B中的图像文件夹

现在要查看这些图片,我可以去

a、 example.com\view.php?$version=1,可以看到图片

类似于b.example.com

我已经在.htaccess中修改了这个,以创建一个友好的URL,将我带到

a、 example.com\1并根据需要显示图像

现在问题来了。每个view.php文件都有以下图像链接

<img src = "<?php echo     "http://".$GLOBALS['url']."".$GLOBALS['img_folder']."/".$new ?>" style = 'margin: 0px auto; display:block; max-width: 100%;height: auto;'>
“样式='边距:0px自动;显示:块;最大宽度:100%;高度:自动;'>
我从每个文件的config.php中获取这些全局变量

例如:

<?php $GLOBALS['project_name'] = 'Apple';?>

<?php $GLOBALS['url'] = 'a.example.com/'?>

<?php $GLOBALS["folder"] = 'FolderA'; ?>

<?php $GLOBALS['img_folder'] = 'AppleImages'; ?> 

对于B:

<?php $GLOBALS['project_name'] = 'Banana';?>

<?php $GLOBALS['url'] = 'b.example.com/'?>

<?php $GLOBALS["folder"] = 'FolderB'; ?>

<?php $GLOBALS['img_folder'] = 'BananaImages'; ?> 

现在的问题是,如果我上传A的版本1,然后是B的版本1,然后我转到A.example.com/1或B.example.com/1的友好URL链接…在我上传B的文件后,我在A看不到该链接。因为URL很难指向B,因为它是同一数据库中最近上传的

如果我先上传到a.example.com,然后再上传到b.example.com,我可以对URL做些什么来确保相同版本的文件…我可以在各自的URL上看到这两个图像

a、 example.com/2和b.example.com/2

我希望我说的有道理。提前谢谢


我查看了您提供的google drive链接

view.php:64行

$project_name_download_form = $_GET['project_name'];
除非您使用如下url访问view.php:

a.example.com\view.php?version=1&project_name=apple
您的
$project\u name\u download\u表单将有一个空字符串值,您的SQL查询将变为:

SELECT demo_id, demo_name, demo_version, demo_details, file 
                      FROM demo
                      WHERE  demo_name = ''
                      AND  demo_version = '1'
So 2操作,将第64行更改为:

$project_name_download_form = $GLOBALS['project_name'];

然后直接检查数据库,确保demo_name列中设置了值(而不仅仅是空的)。

我查看了您提供的google drive链接

view.php:64行

$project_name_download_form = $_GET['project_name'];
除非您使用如下url访问view.php:

a.example.com\view.php?version=1&project_name=apple
您的
$project\u name\u download\u表单将有一个空字符串值,您的SQL查询将变为:

SELECT demo_id, demo_name, demo_version, demo_details, file 
                      FROM demo
                      WHERE  demo_name = ''
                      AND  demo_version = '1'
So 2操作,将第64行更改为:

$project_name_download_form = $GLOBALS['project_name'];

然后直接检查数据库,确保demo_name列中设置了值(而不仅仅是空白).

图像链接中的
$new
是什么?@RyanVincent上传id是自动生成的,还是我们必须输入它?您必须生成它。但是此解决方案对于许多上传来说是无法管理的。您的解决方案可能与此思路类似-但是在存储上传信息和存储的表中添加一列每个上载记录中的项目名称,因此您可以使用版本号和项目名称查找正确的文件名。但如果不告诉我们
$new
是什么以及它来自何处,很难说为什么失败。@Luke Hi我已将文件夹放在驱动器上,请参阅主要问题。$new是附加文件的基本名称。什么图像链接中是否有
$new
?@RyanVincent上载id是自动生成的,还是我们需要输入它?您必须生成它。但是,此解决方案对于许多上载来说都是无法管理的。您的解决方案可能与此思路类似-但是在存储上载信息和项目的表中添加一列ct名称在每个上载记录中,因此您可以使用版本号和项目名称查找正确的文件名。但是,如果不告诉我们
$new
是什么以及它来自何处,很难说为什么失败。@Luke Hi我已将文件夹放在驱动器上,请参阅主要问题。$new是附加文件的基本名称。使用$GLOBALS是讨厌的,因为它可以从所有用户输入设置,比如GET、POST和COOKIE@siddparkarUsing$GLOBALS是讨厌的,因为它可以从所有用户输入设置,比如GET、POST和COOKIE@siddparkar