Php 没有指定http://或https://时如何获取方案?
我希望用户能够在他们的公司设置对话框中输入他们的公司网站URL,但我需要验证这一点。除了典型的消毒功能外,我还想检查URL方案是否为Php 没有指定http://或https://时如何获取方案?,php,http,url,https,Php,Http,Url,Https,我希望用户能够在他们的公司设置对话框中输入他们的公司网站URL,但我需要验证这一点。除了典型的消毒功能外,我还想检查URL方案是否为http://或https://,而不假设用户已经输入了它 我的函数已经解析了输入的url以检测带有正则表达式的方案,但我希望(理想情况下)从服务器ala文件中检查url以获取内容或解析url并获取方案,但我不知道该怎么做。看一看。该方案将在数组的scheme元素中返回 编辑1 部分url也被接受,parse_url()尽最大努力正确解析它们 如果URL中不存在方案
http://
或https://
,而不假设用户已经输入了它
我的函数已经解析了输入的url以检测带有正则表达式的方案,但我希望(理想情况下)从服务器ala文件中检查url以获取内容或解析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连接,并且配置正确,那么它应该返回一个带有HTTPS URL的位置:
头。使用参数PHP\u URL\u方案,如下所示:
$scheme = parse_url( $url, PHP_URL_SCHEME);
if( !in_array( $scheme, array( 'http', 'https'))){
// Wrong URL
}
// Good URL
评论后:
您可以使用cURL
模块查询服务器。但是我想假设http是安全的。如果不允许http,则正确配置的Web服务器应重定向
.或者这有帮助
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);
}
不,我已经查过了。例如,如果您碰巧运行了parse_url(“www.someurl.com”)
在返回数组中唯一得到的是路径
组件,但是没有返回任何方案:如果字符串中没有方案,那么最好做的就是假设并将其设置为默认值。我喜欢cURL方法。我要测试一下。谢谢!:)返回的信息太多,但这是一种不错的方法。我想我会使用no scheme->http://
规则,但是感谢这两个规则对cURL的建议:)@JulioMecaHansen您可以执行explode(“\n”,$curlData)
将cURL的响应拆分为一个数组,然后使用foreach()
循环在该数组中查找位置:
头。然后explode(':',$strHeader)
提取URL,然后parse_URL()
获取方案。这有什么关系?假设http。如果是https,服务器将重定向你。不,它不工作。此外,我尝试了几种组合,www.someurl.com
,http://www.google.com
和https://www.google.com
,其中false
,http
和https
是我得到的答案,但这就是我现在想要的。我的意思是,用户可以插入一个格式错误的URL,但我仍然需要检查它是否处于安全或非安全连接下,只需使用格式正确的URL更新他们的数据库记录即可。我的目标是不是太高了?
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);
}