ПОЛУЧИТЬ сообщение и странное значение url

#php #url #get

#php #url #получить

Вопрос:

Я публикую скрытое поле с каждой кнопкой отправки, используя метод GET.

   <?php
      if(isset($_GET["topic"]))
      {
          $topic=$_GET["topic"];
    ?>
       <input type="hidden" name="topic" value=<?php echo $topic; ?>/>
     <?php    
      }
    ?>
  

Проблема в том, что когда я нажимаю кнопку отправки и получаю this / ‘slash’ в моем url.

есть тематические автомобили/

(при печати с эхом на экране)

При каждом нажатии кнопки я получаю еще одну косую черту .. и мой URL-адрес выглядит так..

 http://localhost/IHow/home.php?searchEngine=amp;topic=cars//////////amp;page=0
  

Как предотвратить это, потому что мне нужна переменная url темы для моего запроса mysql..

Комментарии:

1. К вашему сведению, вам нужно использовать htmlspecialchars() значение и указать его.

Ответ №1:

У вас нет кавычек вокруг value атрибута, и у вас также нет пробела между атрибутом и завершающей косой чертой. Косая черта считается частью value атрибута, поэтому она отправляется. Добавьте кавычки, добавьте пробел или сделайте и то, и другое.

Как говорит TheifMaster, вы также должны использовать htmlspecialchars() на topic

Комментарии:

1. Действительно. Это сделает свое дело: <input type="hidden" name="topic" value="<?php echo htmlspecialchars($topic); ?>"/>

Ответ №2:

 <?php
      if(isset($_GET["topic"]))
      {
          $topic=$_GET["topic"];
          if($topic[strlen($topic)-1] == '/')  //check if last char is '/'
          $topic = substr($topic,1,strlen($topic)-1); //$topic is $topic - last character
    ?>
       <input type="hidden" name="topic" value=<?php echo $topic; ?>/>
     <?php    
      }
    ?>
  

Комментарии:

1. лол .. слишком запутанно для простой задачи. Но спасибо за алгоритм

2. алгоритм ? какой алгоритм? 🙂 Я что-то пропустил?