【问题标题】:Use Global Variables to dynamically change URL使用全局变量动态更改 URL
【发布时间】:2017-02-20 09:46:46
【问题描述】:

所以这真的很难解释,

我有一个 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 版本 = 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;'>

我从每个文件的 config.php 中获取这些全局变量。

对于 A:

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

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

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

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

对于乙:

<?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,因为它是最近在同一数据库中上传的。

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

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

我希望我说得通。提前致谢。

https://drive.google.com/drive/folders/0B5nDbj-RhZJMa3drNFlfRzVaLXc?usp=sharing

【问题讨论】:

  • 图片链接中的$new是什么?
  • @RyanVincent upload_id 是自动生成的还是我们输入了?
  • 您必须生成它。但是这个解决方案对于许多上传是无法管理的。您的解决方案可能是类似的思路 - 但在存储上传信息的表中添加一列,并在每个上传记录中存储项目名称,以便您可以使用版本号和项目名称查找正确的文件名。但是如果不告诉我们$new 是什么以及它来自哪里,很难说它为什么会失败。
  • @Luke 嗨,我已将文件夹放在驱动器上,请参阅主要问题。
  • $new 是附加文件的基本名称。

标签: php html mysql .htaccess globals


【解决方案1】:

我查看了您提供的 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_name_download_form 将有一个空字符串值,您的 SQL 查询变为:

SELECT demo_id, demo_name, demo_version, demo_details, file 
                      FROM demo
                      WHERE  demo_name = ''
                      AND  demo_version = '1'

所以 2 个动作,将第 64 行更改为:

$project_name_download_form = $GLOBALS['project_name'];

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

【讨论】:

  • 使用 $GLOBALS 很讨厌,因为它可以从所有用户输入(如 GET、POST 和 COOKIE @siddparkar)中设置
猜你喜欢
  • 2017-05-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-03-09
  • 1970-01-01
相关资源
最近更新 更多