Очистка GET URL запросов с PHP - PullRequest
0 голосов
/ 02 марта 2019

Итак, я использовал mod_rewrite, чтобы переписать мои URL-адреса запросов с / news? News_id = 6 на / news / 6.Но теперь я хотел бы иметь возможность сделать то же самое, когда кто-то отправляет форму, используя метод get.Прямо сейчас, когда вы отправляете форму, она по-прежнему направляет вас к / news / news_id = 6 вместо / news / 6, как я смогу очистить URL запроса get?Я уверен, что это невозможно сделать с помощью mod_rewrite (пожалуйста, исправьте меня, если вы можете это сделать), поэтому я полагаю, что вам нужно будет использовать либо Javascript, либо PHP.Я пытался сделать это с помощью PHP, и до сих пор я делал следующее:

 if (!empty($_GET['news_id'])) {
    $redirecturl = "/news/" . $_GET['news_id'];
    $redirecturl = str_replace(" ", "-", $redirecturl);
    header('Location: ' . $redirecturl, true, 303);
    die();
}

Однако это приводит к ошибке в браузере, которая говорит: «localhost перенаправляет вас слишком много раз».Как мне решить эту задачу с помощью PHP?

Спасибо.

1 Ответ

0 голосов
/ 02 марта 2019

Не уверен, но должна ли это быть форма 'get'?Если вы хотите чистый URL, это будет очень простой пример с методом post (без каких-либо проверок безопасности!).Вы можете оставить «действие» пустым, если это та же страница:

Код формы:

<form action="" method="post">
    [Other form code ]
    <input type="hidden" name="news_id" value="6" />
</form>

Код процесса:

if ($_POST && !empty($_POST['news_id'])) {
    // Do what you want with: $_POST['news_id'];
}

Также вы можете сделатьновый mod_rewrite, где вы обрабатываете обработку формы, например: / news6 / process.Это будет лучше по соображениям безопасности, и у вас будет намного более чистый код.После того, как вы выполнили свою обработку, установите переменную сеанса, чтобы пользователь знал, была ли обработка завершена или нет, в /news/6 '.

...