我的网站有一个网址(example.com/folder/index.php?id=22)
以上网址显示了帖子ID 22.这是另一个重要部分:
|-------|-----------|-------------------|-------------------|
| id | user | title | url |
|-------|-----------|-------------------|-------------------|
| 22 | Admin | My Title Posts | my_title_post |
| | | | |
|-------|-----------|-------------------|-------------------|
include_once 'dbconnect.php';
$query = $con->query("SELECT * FROM posts WHERE id=".$_GET['id']);
$Row=$query->fetch_array();
echo $Row['user'];
echo $Row['title'];
echo $Row['url'];
结果:
-admin
- 我的帖子
-my_title_post
我正在尝试隐藏$_GET['id'];
添加.htaccess
RewriteEngine on
RewriteRule ^newfolder/(.*) folder/index.php?id=$1
我的新网址是:example.com/newfolder/22
但是,这仍然不太正确。我想在URL部分显示一个长帖子URL,而不是ID。 所以我的意思是,如何使URL成为:
example.com/newfolder/my_title_post
我已将SQL更改为:
"SELECT * FROM posts WHERE url=".$_GET['id']
但是服务器无法处理请求。
我还尝试更改数据库url列中的主键,但请求被拒绝。在这里,我将其设置为Unique,但它仍然无效。
有可能吗? 如果有人知道,我通过Cpanel,htaccess,SQL或其他东西接受建议。谢谢..
答案 0 :(得分:0)
您的my_title_post
是一个字符串。但是您的查询被视为整数。引用$_GET['id']
将其视为字符串。
"SELECT * FROM posts WHERE url='".$_GET['id'] . "'";
最好使用参数绑定来阻止SQL injection。至少你需要使用mysqli_real_escape_string来阻止它。