删除网址末尾的字符

时间:2019-01-15 10:35:35

标签: php mysql url-rewriting

1)我有这样的网址: http://example.com/post.php?id=1234 里面:我的文章

2),但对于此网址 http://example.com/post.php?1234somewords 也可以,我看我的文章

3)并为此URL http://example.com/post.php?somewords 我有一个很好的404页面错误

问题是:2)url我怎么会有404错误? (另一个问题:如何将“ 1234somewords”重定向到“ 1234”?)

post.php中的

php mysql查询是:

require_once('conn_sql.php');
$post = $_GET['post'];
$nQuery = mysqli_query($conn, "SELECT * FROM `post` WHERE post_id = '$post'");
$res = mysqli_fetch_array($nQuery);

似乎查询“ post = 1234somewords”有效,这不是我想要的。 但是,如果我在phpmyadmin中搜索“ post = 1234somewords”,则此方法无效,这就是我想要的!

我的代码有什么问题?

1 个答案:

答案 0 :(得分:1)

发生这种情况是因为mysql使用字符串的开头部分作为有效ID ..(这与mysql执行的隐式数据转换有关),您应该在执行查询之前检查参数是否为有效数字

您可以尝试从字符串

中删除非数字值
$result  = preg_replace("/[^0-9]/", "", $_GET['post']; );  

if (is_numeric( $result))  {

  $nQuery = mysqli_query($conn, "SELECT * FROM `post` WHERE post_id = '$post'");
  $res = mysqli_fetch_array($nQuery);

} else {
  ......

}
相关问题