2016-12-02 8 views
1

私は単純なリンク機能に問題があります。投稿フォームには、ユーザーがURLを含めることができるテキストボックスがあります。このURLは取られ、作業リンクに変更され、ポストに配置されます。この部分はうまく動作します。ユーザーがURLの前にhttp/httpsを含めると正常に動作します。リンクはページの一部として開きますPHP

  1. mysiteexample.com/UrlTheyPasted.com
  2. mysiteexample.com/www.UrlTheyPasted:彼らはHTTP/HTTPSのみWWWが含まれていない場合でも、それは以下の例のようにリンクを開きます。 .COM

(これは..ビデオ/画像/サイトへのリンクとして開く必要があります)。ここ

コードです:

$output .= '<DIV CLASS="'.$outerclass.'">'; 
$output .= '<DIV CLASS="'.$innertclass.'">'.$title.'</DIV>'; 
$output .= '<DIV CLASS="'.$innervclass.'"><a href="'.$value.'" target="_blank">'.$value.'</a></DIV>'; 
$output .= '</DIV>'; 

誰もがこれを解決する方法を知っていますか、これはどうしてですか?

+0

を...でPHPコードを共有してくださいその変数を処理します。それはあなたが行動を取る必要があるところですが、私はあなたが事実とコードが似ている後にそれを行うことができると考えています。 – WEBjuju

答えて

0

ユーザー入力の処理中に、parse_url()を使用して、プロトコルをオンまたはオフにしてそれに応じて動作するかどうかを調べます。

$url = 'test.com'; 
$urlscheme = parse_url($url, PHP_URL_SCHEME); 
if (empty($urlscheme)) { 
    $url = 'http://'.$url; 
} 
die('<pre>'.print_r($url,true)); 

ので、たとえば、ちょうどあなたのコードの前に、たとえば置く:あなたはもともと、入力としてユーザから値を取っ示すされている場合

$scheme = parse_url($value, PHP_URL_SCHEME); 
if (empty($scheme)) $value = 'http://'.$value; 

$output .= '<DIV CLASS="'.$outerclass.'">'; 
$output .= '<DIV CLASS="'.$innertclass.'">'.$title.'</DIV>'; 
$output .= '<DIV CLASS="'.$innervclass.'"><a href="'.$value.'" target="_blank">'.$value.'</a></DIV>'; 
$output .= '</DIV>'; 
+0

私の更新情報があります – WEBjuju

+0

ありがとうございます。できます :) – UXRO

関連する問題