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”,则此方法无效,这就是我想要的!
我的代码有什么问题?
答案 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 {
......
}