0

ユーザーが会社のセットアップダイアログに会社のWebサイトのURLを入力できるようにしたいのですが、それを検証する必要があります。典型的なサニタイズ機能とは別に、URLスキームがユーザーがすでに入力していることを前提としているhttp://かどうかを確認したいと思います。https://

私の関数はすでに入力されたURLを解析して正規表現でスキームを検出していますが、(理想的には)サーバーala file_get_contentsまたはparse_urlからURLをチェックしてスキームを取得したいのですが、どうすればよいかわかりません。

4

4 に答える 4

4

を見てくださいparse_url()。スキームはscheme配列の要素で返されます。

編集1

部分的なURLも受け入れられ、parse_url()正しく解析するために最善を尽くします。

スキームがURLに存在しない場合、scheme要素は欠落します。

編集2

@BenediktOlekが言うように、cURLを使用してサーバーにクエリを実行できます。

$curl = curl_init();
curl_setopt_array(
    $curl,
    array(
        CURLOPT_URL            => 'http://www.example.com/',
        CURLOPT_HEADER         => TRUE,  // Output the response headers
        CURLOPT_RETURNTRANSFER => TRUE,  // Return output as a string
        CURLOPT_NOBODY         => TRUE   // Use request method "HEAD"
    )
);
$curlData = curl_exec($curl);
curl_close($curl);

Location:サーバーがHTTPS接続を必要とし、正しく構成されている場合、サーバーはHTTPSURLを含むヘッダーを返す必要があります。

于 2012-12-07T14:14:04.033 に答える
2

cURLモジュールを使用してサーバーにクエリを実行できます。しかし、httpを想定するのは安全だと思います。httpが許可されていない場合は、適切に構成されたWebサーバーがリダイレクトする必要があります。

cURLの詳細はこちら

于 2012-12-07T14:20:44.207 に答える
1

次のようなparse_url()パラメータで使用します。PHP_URL_SCHEME

$scheme = parse_url( $url, PHP_URL_SCHEME);
if( !in_array( $scheme, array( 'http', 'https'))){
  // Wrong URL
}
// Good URL

コメント後:

if( strncmp( $url, 'http://', 7)){ // 7 = strlen( 'http://')
  // Not secured
} else if (strncmp( $url, 'https://', 8)) {
  // Secured
} else if ( strpos($url, '://') !== false){
  // ftp://, sftp:// and other protocols
  // you may do this also by: preg_match and regexp ~^[\w]+://~i - will be more accurate
} else {
  // any other URL, www.google.com and so on...
  // auto-assue: not secured
}
于 2012-12-07T14:15:07.580 に答える
0

または多分これは役立ちますか?

    NSRange range = [urlName rangeOfString:@"http://"];
//NSLog(@"found or not found");
if (range.location != NSNotFound)
{
    //NSLog(@"range is found");
    //range.location is start of substring
    //range.length is length of substring
} else
{
    //NSLog(@"range is not found");
    //urlName = @"http://"  urlName;
    //NSString *string = [NSString stringWithFormat:@"%@%@", @"Hello", @"World"];
    urlName = [NSString stringWithFormat:@"%@%@", @"http://",urlName];
    //NSLog(@"NEW urlName......%@", urlName);
}
于 2014-02-23T16:40:36.073 に答える