【问题标题】:PHP Article Slug instead of IDPHP Article Slug 而不是 ID
【发布时间】:2013-04-22 10:52:24
【问题描述】:

所以我已经将一篇文章 slug 保存到我的数据库中,通常我会像这样使用 art_id 过滤我的页面,

$sql_articles = "SELECT * FROM app_articles WHERE art_id=".$_GET['art_id'];
$result_articles = query($sql_articles);

我会通过带有这样的链接的 url 传递 art_id

<a href="index.php?art_id=<?php echo $article['art_id']; ?>">

我想知道如何传递 art_slug 而不是 art_id,这样我的 URL 就会像 www.site.com/index.php/lorem-ipsum-slug 并且它会显示文章提前感谢您的帮助

【问题讨论】:

    标签: php mysql url parameter-passing slug


    【解决方案1】:

    首先,您似乎有 SQL 注入的可能性。谷歌一下。

    其次,您需要在数据库中创建一个art_slug 列。之后,您应该能够执行以下操作:

    $sql_articles = "SELECT * FROM app_articles WHERE art_id=".$_GET['art_slug'];
    $result_articles = query($sql_articles);
    

    您将能够通过带有类似链接的 url 传递 art_slug

    <a href="content.php?art_slug=<?php echo $article['art_slug']; ?>">
    

    您更新了问题,事情变得更加清晰。您可能对rewriting your URL on the server side 感兴趣。给定的文档适用于 Apache,但此功能存在于所有主要的网络服务器中。

    【讨论】:

    • 谢谢,是的,我已经设置好了,但我的 URL 类似于 content.php?art_slug=lorme-ipsum,但我看到很多网站,如 stackoverflow,它们的 URL 类似于 content.php/lorem-ipsum
    • 谢谢,这正是我想要的,非常感谢!
    【解决方案2】:

    传递 ID 的方式相同。

    $sql_articles = "SELECT * FROM app_articles WHERE art_slug=".$_GET['art_slug'];
    $result_articles = query($sql_articles);
    

    和

    &lt;a href="content.php?art_slug=&lt;?php echo $article['art_slug']; ?&gt;"&gt;

    你应该清理你的变量而不是直接从 $_GET 使用它,因为它使你容易受到 SQL 注入攻击。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-04-01
      • 2021-09-05
      • 2010-10-03
      • 1970-01-01
      • 2019-05-11
      • 2011-11-30
      • 2011-12-10
      • 1970-01-01
      相关资源
      最近更新 更多