Php 删除url末尾的字符
1) 我有这样的url: 里面:我的文章 2) 但是对于这个url 这也是工作,我看到我的文章 3) 对于这个url 我有很好的404页错误 问题是:url怎么会出现404错误? (备选问题:如何将“1234somewords”重定向到“1234”?) post.php中的php mysql查询是:Php 删除url末尾的字符,php,mysql,url-rewriting,Php,Mysql,Url Rewriting,1) 我有这样的url: 里面:我的文章 2) 但是对于这个url 这也是工作,我看到我的文章 3) 对于这个url 我有很好的404页错误 问题是:url怎么会出现404错误? (备选问题:如何将“1234somewords”重定向到“1234”?) post.php中的php mysql查询是: require_once('conn_sql.php'); $post = $_GET['post']; $nQuery = mysqli_query($conn, "SELECT * FROM `
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”,这就不起作用了,这就是我想要的
我的代码有什么问题?之所以会出现这种情况,是因为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 {
......
}
我想冒昧猜测一下,您的
post_id
字段是INT
,因此MySQL正在从字符串中键入1234somewords,导致(INT)1234正常工作。另外,您很容易受到SQL注入攻击,您应该更新代码以使用带有绑定参数的准备语句。请检查$\u GET
数组中的id
?如果未设置,则返回404?这是因为mysql使用字符串的开头部分作为有效id。。(这与mysql执行的IMPLIT data convdrion有关)在执行查询之前,您应该检查您的参数是否为有效数字