Как отличить домены от более длинных URL-адресов в PHP?

Я получаю URL-адреса из формы PHP с помощью метода _POST.

Я уверен, что это URL-адреса, потому что плагин проверки jquery проверяет их перед отправкой.

Затем я обрабатываю их в PHP.

Однако я хочу убедиться, что:

domain.com or domain.com/

заканчиваться на /.

Но я хочу убедиться, что:

domain.com/page or domain.com/page/ or domain.com/dir/page/ or domain.com/page.html

конец без /.

Я нашел: PHP: как добавить завершающую косую черту к абсолютному URL-адресу что было очень полезно.

Я сейчас использую:

$rawarrival = $_POST["arrival"];

$url = parse_url($rawarrival);

if(!isset($url['path'])) $url['path'] = '/';
$arrival = $url['scheme']."://".$url['host'].$url['path'];

Тем не менее, я все еще не могу получить длинный URL-адрес (длиннее, чем просто домен) без «/».

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

Спасибо.


person yoann44    schedule 21.05.2013    source источник
comment
Вы никогда не будете уверены, что входные параметры действительны, пока не проверите их на стороне сервера. Можно просто отредактировать или отключить проверку javascript или просто отправить собственный запрос из другой программы. Всегда помните, что вы также должны проверять входные параметры на стороне сервера.   -  person jjurm    schedule 21.05.2013
comment
Хорошо люди. Кажется, я получил ответ с другого форума: sitedzero.com/forum/sujet/ $url = parse_url($rawarrival); $url['path'] = (isset($url['path']) && $url['path'] != '/') ? rtrim($url['путь'], '/'): '/'; $arrival = $url['схема'].://.$url['хост'].$url['путь']; Это работает нормально. Спасибо.   -  person yoann44    schedule 21.05.2013
comment
Ок, Юрм. Спасибо за совет. Я не разработчик. Это будет только внутренний инструмент, и взломать там нечего... но конечно.   -  person yoann44    schedule 21.05.2013


Ответы (1)


Посмотрите на последний символ?

if (substr($url["path"], -1, 1) === "/") {
    $url["path"] = substr($url["path"], 0, -1);
}

(не проверено)

person Halcyon    schedule 21.05.2013
comment
вы можете использовать substr($url["path"], -1) - person jjurm; 21.05.2013
comment
Ok. Я предпочитаю оставить это: $url = parse_url($rawarrival); $url['path'] = (isset($url['path']) && $url['path'] != '/') ? rtrim($url['путь'], '/'): '/'; $arrival = $url['схема'].://.$url['хост'].$url['путь']; - person yoann44; 21.05.2013