0

我希望用户能够在他们的公司设置对话框中输入他们的公司网站 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);

如果服务器需要 HTTPS 连接,并且配置正确,那么它应该返回Location:带有 HTTPS URL 的标头。

于 2012-12-07T14:14:04.033 回答
2

您可以使用该cURL模块来查询服务器。但我想假设 http 是安全的。如果不允许使用 http,则正确配置的网络服务器应重定向。

更多关于 cURL 的信息

于 2012-12-07T14:20:44.207 回答
1

像这样使用parse_url()with 参数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 回答