Используйте urlencode()
или rawurlencode()
.
Вы писали:
Я пытаюсь получить URL в качестве параметра
от пользователя и перенаправить пользователя к этому
URL.
Но вы не ответили на вопрос - как вы получили этот URL? Как пользователь предоставляет вам это? Это написано в <input type='text'/>
? Или пользователь нажимает какую-то ссылку, которая содержит URL в качестве одного из параметров? Или передается как идентификатор некоторого URL, который хранится в БД?
Один случай, который мне приходит в голову - замена URL-адресов в виде обычного текста и отправка пользователя на какую-то «страницу перенаправления» перед открытием реальной страницы, поэтому на последней странице не отображается реферер HTTP, который может содержать некоторые защищенные данные (например, идентификатор сеанса) , В этом случае вы должны написать
<a href='redirect.php?link=<?php echo rawurlencode($url); ?>'>
<?php echo htmlspecialchars($url); ?>
</a>
вместо
<a href='redirect.php?link=<?php echo $url; ?>'>
<?php echo htmlspecialchars($url); ?>
</a>