2012-04-05 7 views
2

У меня есть следующий код:Внешние ссылки в CodeIgniter

<div><strong>Name: </strong><?php echo anchor('http://'.$link, $row->Name); ?></div> 

Который берет вход пользователей для связи ($ ссылке) и помещает URL в теге привязки. Однако он не перенаправляется на внешнюю ссылку, а просто корректирует базовый URL-адрес сайта с сохраненным URL-адресом. Я попытался добавить «http: //» в начало передаваемой ссылки, которая работает, если пользователь уже не отправил http в ссылку. Любой совет о том, как преодолеть это, будет потрясающим.

+0

Какую версию CodeIgniter вы используете? Я просто попробовал это в версии 2.1, а функция 'anchor()' действительно проверяет, что это внешний URL-адрес перед созданием конкретных приложений. – cchana

ответ

4

Да, per the documentation, anchor() создает ссылки на основе URL-адреса вашего сайта.

Если все работает, как и ожидалось, когда URL, которые начинаются с префикса http://, но у вас возникли проблемы с пользователями, иногда добавляя http://, а иногда нет, вы могли бы просто проверить ссылку, чтобы определить, является ли это нормально, или если вам нужно префикс. Вот простой пример использования strpos:

if(strpos($link, 'http') === FALSE){ 
    // link needs a prefix... 
    $link = 'http://' . link; 
} else { 
    // link is ok! 
} 

... использовать prep_url() функцию CodeIgniter в (спасибо @cchana за напоминание мне об этом!):

Эта функция добавит HTTP: // в случае отсутствия схемы из URL-адреса. Передать строку URL-функции, как это:

$url = "example.com"; 

$url = prep_url($url); 
+1

Или вы могли бы использовать функцию 'prep_url()' CodeIgniter, которая позаботится об этом вам – cchana

+0

@cchana: Ах, вы правы! Я * думал * была функция CI для этого, но не могла вспомнить, что это было. Я добавлю это к своему ответу. Благодарю. –

Смежные вопросы