Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Как правильно сформировать ссылку из URL введенного пользователем?
 
 автор: durable   (10.02.2010 в 14:11)   письмо автору
 
 

Просмотрел много тем но реально работающего варианта так и не нашел.
Ведь пользователь может ввеси в форму все что угодно.
Как проверить что это URL и сформировать ссылку, пускай она даже будет и не работающая?

Смотрел варианты и с регулярными выражениями вроде:
(http:\/\/)?(www\.)?([\d\w\-]+(\.[\d\w\-]+)*)((\/([\d\w\-]+\/)+)([\d\w\.\-]+))? 

которое некорректно работает если пользователь не указал // после http: и сбивается на : и ; в URL.

Пробовал так же и с parce_url() тоже не всегда может разобрать строку.

Подскажите работающий вариант.

  Ответить  
 
 автор: durable   (01.03.2010 в 08:44)   письмо автору
 
   для: durable   (10.02.2010 в 14:11)
 

И все же?

  Ответить  
 
 автор: Владимир55   (01.03.2010 в 12:58)   письмо автору
 
   для: durable   (01.03.2010 в 08:44)
 

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

  Ответить  
 
 автор: Рома   (01.03.2010 в 14:23)   письмо автору
 
   для: Владимир55   (01.03.2010 в 12:58)
 

это долгая процедура, я б так не делал.

  Ответить  
 
 автор: Владимир55   (01.03.2010 в 15:00)   письмо автору
 
   для: Рома   (01.03.2010 в 14:23)
 

Поскольку ввод осуществляется вручную, скорость здесь не очень важна.

Зато это была бы действительно проверка (самой ссылки, а не гипотезы ее правильности).

  Ответить  
 
 автор: durable   (01.03.2010 в 16:22)   письмо автору
 
   для: Владимир55   (01.03.2010 в 15:00)
 

Задача такая - пользователь вводит URL (но мы то знаем что пользователь может ввести что угодно) и из него формируется ссылка вида <a href="http://www.site.ru">URL введенный пользователем</a>
а пользователь может ввести
site.ru
www.site.ru
http://www.site.ru
http://site.ru
и это только правильные варианты....
а если неправильные то их надо как то откидывать

Кстати а если я из строки введенной пользователем выброшу все символы, которые не могут входить в ссылку, и потом проверю а первые 7 символов на http:// если нет то добавлю...

Н и пскай будет нерабочая ссылка... не будет ли это дверка хакерам?
Насколько это правильно с точки зрения безопасности, а не с точки зрения правильности ссылки?

  Ответить  
 
 автор: Владимир55   (01.03.2010 в 17:04)   письмо автору
 
   для: durable   (01.03.2010 в 16:22)
 

На мой взгляд, нерабочая ссылка сама по себе не понижает безопасность сайта.

Лично я делаю так, как описал: проверяю четыре упомянутых Вами варианта и дописываю то, что необходимо, в зависимости от результатов проверки. Далее file_get_contents и соответствующее сообщение посетителю.

П.С. Похоже, что Вы предлагаете посетителю ввести не ссылку, а адрес сайта или страницы. Это разные вещи.

  Ответить  
 
 автор: durable   (01.03.2010 в 20:54)   письмо автору
 
   для: Владимир55   (01.03.2010 в 17:04)
 

Да, Вы правы, я прошу пользователя указать адрес сайта и хочу на автомате сформировать ссылку, оставив введенный им адрес как указатель ссылки.

  Ответить  
 
 автор: Рома   (01.03.2010 в 14:18)   письмо автору
 
   для: durable   (01.03.2010 в 08:44)
 

если это не аjаx-ссылки, просто необходимо проверять корректность ссылок регулярками, а то может негативно отразиться на поисковиках. да и пользователи не будут в восторге от битых ссылок.

  Ответить  
 
 автор: Legenda   (01.03.2010 в 14:55)   письмо автору
 
   для: durable   (10.02.2010 в 14:11)
 

Если нужен только домен, то так:


function domen($domen){
if(strpos ($domen, "http")!== false){
   $pos5 = strpos($domen, "http");
   $domen = substr($domen, $pos5+7, strlen($domen)-$pos5-7);

if(strpos ($domen, "www") !== false){
   $pos6 = strpos($domen, "www");
   $domen = substr($domen, $pos6+4, strlen($domen)-$pos6-4);

$dom_arr = explode("/", $domen);
$domen = $dom_arr[0];
$domen = trim($domen);
$domen = strtolower($domen);
return $domen;
}


Если нужна ссылка с папками и страницами, то допишите регулярку...

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования