PHP文章Slug而不是ID

时间:2013-04-28 20:15:51

标签: php mysql url parameter-passing slug

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

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

我传递的内容会通过网址传递art_id,链接就像这样

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

我想知道如何通过art_slug代替art_id,这样我的网址就像www.site.com/index.php/lorem-ipsum-slug一样,它会显示文章,提前感谢任何帮助< / p>

2 个答案:

答案 0 :(得分:3)

首先,看起来你有SQL注入的可能性。谷歌吧。

其次,您需要在数据库中创建art_slug列。在它之后你应该能够做到以下几点:

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

您将能够通过网址传递art_slug,其链接如此

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

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

答案 1 :(得分:1)

与传递ID的方式相同。

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

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

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