Удалить символ в конце URL - PullRequest
0 голосов
/ 15 января 2019

1) У меня есть такой URL: http://example.com/post.php?id=1234 А внутри: моя статья

2) но для этого URL http://example.com/post.php?1234somewords Это тоже работа, я вижу мою статью

3) и для этого URL http://example.com/post.php?somewords У меня хорошая ошибка 404 страницы

Вопрос: как я могу получить ошибку 404 для 2) URL? (альтернативный вопрос: как я могу перенаправить "1234somewords" в "1234"?)

запрос php mysql внутри post.php:

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" работает, и это не то, что я хочу. однако, если я ищу «post = 1234somewords» в phpmyadmin, это не работает, и это то, что я хочу!

В чем проблема с моим кодом?

1 Ответ

0 голосов
/ 15 января 2019

это происходит из-за того, что mysql использует начальную часть строки в качестве допустимого идентификатора .. (это связано с имплицитным преобразованием данных, выполняемым 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 {
  ......

}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...