Задать вопрос
@rinaz22

Как кодировать url в php (urlencode не подходит)?

Всем привет! Есть поле для ввода url.
Нужно записать этот url в БД. Перед записью проверяю на валидность.
Но возникла проблема при выводе. Если в url будет такого типа:
site.ru?q=123&h=".echo("123")."
то при выводе будет так:
site.ru?q=123&h=
Пробовал кодировать при выводе с помощью urlencode, но так кодируется почти все и такая ссылка не работает через html тег
<a href="">
Как быть? Нужно чтобы ссылка открывался как есть
  • Вопрос задан
  • 1481 просмотр
Подписаться 2 Простой 3 комментария
Решения вопроса 1
php666
@php666
PHP-макака
все, что тебе нужно - сделать htmlspecialchars:
<?php
$url = 'http://server.ru/?var=foo&var=Привет, мир!&XSS=<script>alert(1)</script>';
$url = htmlspecialchars($url);
?>
<a href="<?=$url?>">link</a>

все остальные вопросы про безопасность - твои выдумки. тут почитай материал - phpfaq.ru/tech/safety

Если пользователь вел какое-то авно в строку url-адреса, то это сугубо его личные проблемы, твоя задача лишь при отображении предотвратить XSS. Все.

Если нужна валидация URL, то самый правильный ответ тут - https://stackoverflow.com/a/1411800
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@Siverius
$var = "123";
$url = "site.ru?q=123&h=$var";


А вот так пробовали?
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы