我正在尝试构建一个pages.php文件,我也可以通过slug信息并使用mod-rewrite使数据库输出看起来像实际的页面。
问题是代码可以工作,但只能传递整数。如果我传递了page_id,它将进行调用并工作,如果我传递page_slug则会失败。
这是我的重写规则
RewriteRule ^service/(.*)$ pages.php?pid=$1 [QSA,L]
这是在pages.php中的select查询,我正在使用require_once(“Database.php”);调用数据库文件。
$sql = "
SELECT
page_title,
page_html_title,
page_slug,
page_content
FROM pages
WHERE page_slug = $pid
";
$q = $db->query($sql);
$q->setFetchMode(PDO::FETCH_ASSOC);
$r = $q->fetch();
数据在以下内容中放入html {$ r ['page_title']}
粘贴pages.php http://pastebin.com/qA7zzvnY
粘贴Database.php http://pastebin.com/8pqXbzby
这是数据库表
已知问题。
SELECT page_slug
返回空白页面,没有任何错误或源代码。
SELECT page_id
返回页面真相pages.php?pid = zzzzzz或重写service / zzzzz.html我不知道为什么我在过去使用用户名和其他随机数据时无法从数据库中提取页面slug。但是在提供的$ sql代码中它不想工作。
答案 0 :(得分:0)
在查询中$pid
周围需要单引号(或正确转义的双引号)。此外,正如评论中所指出的,您对SQL注入非常开放,需要立即解决这个问题。