【问题标题】:Adding an sql query to the end of a wordpress permalink?将 sql 查询添加到 wordpress 永久链接的末尾?
【发布时间】:2011-12-25 00:01:45
【问题描述】:

好的....所以我创建了一个新的 wordpress 主题,但我仍然无法让我的自定义代码工作。

我希望能够有一个页面,该页面将从数据库中输出项目列表,每个项目都将具有以下 URL 格式:

www.site.com/category/subcategory/?id=XX

?id=XX 查询应位于 URL 的末尾,并将用户从类别页面引导到子类别页面,该页面显示有关具有 XX id 的项目的特定数据。

列表中的每个项目都包含在类别模板页面中的标签中,子类别页面使用 $_GET。我有一个可用的 wordpress 主题,但在我的另一个网站上,我使用了不同的主题,但它不起作用。如果用户单击列表中的某个项目,用户将被定向到不附加 sql 字符串的子类别页面。我不确定在wordpress(或处理函数的任何文件)或htaccess中放入functions.php文件中的内容。任何帮助表示赞赏。

更新:

@Niels - 我没有编写代码...我让两个人为我编写代码。他们都不是专业的编码员,但他们让它工作,所以这就是我所关心的。我的网站以前从未被黑过,但我需要找出如何让代码自己工作,因为创建代码的两个人现在很忙。是的,我听说过 sql 注入。

我在类别页面 (http://www.mysite.com/category) 上有 php 代码,它定义了将在代码中使用的变量、连接到数据库、查询数据库表,然后选择并使用项目的 id 输出数据库表中的项目。代码使用 while 循环来输出项目,因此类别页面基本上是项目的目录。输出的每个项目都以这种格式输出:$itemname。就像我说的,代码已经在一开始就定义了这些变量,所以 sql 查询已经知道要查找什么。当用户点击类别页面中的任何项目时,链接应将他们带到项目的个人资料页面,该页面基本上是子类别页面(即:http://www.mysite.com/category/subcategory/)。所以让我明确一点:当用户点击 CATEGORY PAGE 中的 ITEM 时,用户应该被引导到项目的配置文件页面,这基本上是 SUBCATEGORY PAGE。这就是 /?id=$id 部分的用武之地。在从类别页面到子类别页面的过渡阶段,查询字符串应将自身附加到 URL,并且子类别页面将根据数据库中的数据输出数据对于该特定项目。例如,如果用户单击如下链接:www.mysite.com/category/subcategory/?id=12,则应将用户定向到 id 为 12 的项目的个人资料页面。个人资料页面,在我们的例子中是子类别页面,应该输出数据库中 id 为 12 的项目的数据。这就是它应该如何工作的。子类别页面或项目配置文件页面将有一个 $_GET 代码,以便它知道它应该输出什么数据。

【问题讨论】:

  • 所以,你有一个工作他们。把它拆开,看看它是如何做到的。然后回来在这里发布你的结果,这样我们也可以学习。
  • 很确定您的意思是查询字符串和查询参数不是 SQL...
  • 不要不要发布重复的问题,而是编辑这个问题。这样做可能会导致进一步的版主操作。

标签: wordpress permalinks


【解决方案1】:

修改后的答案

查看 WordPress 的Rewrite API。这绝对是更“正确”的做法。

原答案

不要使用 URL 查询,而是尝试以下方法:

// URL: http://blahblahblah.com/category/pagetitle/15

preg_match_all('/[^\/]+/', $_SERVER['REQUEST_URI'], $matches);
$item_id = $matches[0][2];

echo 'Do whatever you want with Item ID ' . $item_id;

【讨论】:

  • 我在“使用项目 ID 随心所欲”中输入了什么?我有一个 php 代码,它定义了变量、连接到数据库、查询数据库表,然后根据它们的 id 输出数据库中的所有项目。输出项目的 php 是一个 while 循环,它以这种格式打印项目:$itemName。不知道如何让 wordpress 的永久链接与最后的字符串一起使用。
  • 随心所欲。我看不到你的代码。假设你让?item=$itemid 工作,你打算用$_GET['item'] 做什么?无论如何,我已经更新了我的答案,以建议一种更 WordPressy 的方式来做你想做的事。
  • 示例:转到rpgmax.com/mmo/gamedirectory 并单击您在列表中看到的任何项目。每个项目都有一个附加到其 URL 的 /?gameId=XX 查询字符串,但是当您单击该项目时,服务器会将您定向到 /gamedirectory/gameprofile 页面,而不会留下附加的查询字符串。但是,如果您转到mmocraze.com/game-directory,当您被定向到游戏资料页面时,页面中的项目将保留附加到 URL 的查询字符串。我在两个网站的游戏资料页面上都有此代码:$gameId = $_GET['gameId'];
  • 我不确定我的好友是如何获得在 mmocraz 上工作的代码的。我将文件目录中的文件下载到我的计算机上,并在“文件内”搜索标签“gameId”,但找不到任何使用 wordpress 代码的迹象。没有调用函数或类。 htaccess 中没有建议重写 URL,永久链接结构也没有什么特别之处。这让我很困惑。出于某种疯狂的原因,URL 查询字符串似乎只适用于 mmocraze,但不适用于 rpgmax。
【解决方案2】:

如果用户点击列表中的某个项目,用户将被定向到 没有附加 sql 字符串的子类别页面。

“sql 字符串”到底是什么意思?

您能否尽可能具体地描述您有哪些链接、示例以及它们应该指向的页面以及这些页面应该做什么?

另外:我觉得您在这里有点超出您的深度,并且您正在根据 URL 中的参数对数据库进行处理。您应该知道,操纵 URL 参数以访问数据库是入侵站点的真正简单方法。请阅读一些关于SQL Injection 以及如何防止它的信息。

【讨论】:

  • 必须链接到基于规范漫画的 SQL 注入预防站点:bobby-tables.com
猜你喜欢
  • 1970-01-01
  • 2023-04-01
  • 2013-01-16
  • 2019-01-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-04-08
  • 1970-01-01
相关资源
最近更新 更多