计划写一个长链接Url转短链接的小程序,为了避免滥用,是有必要监测一下用户填写的Url是否真实有效,所以想到了这个问题。
PHP的话,我一般也就会想到file_get_contents()方法和curl方式。
百度以后,参考“脚本之家”的资料,总结如下:
PHP,服务器端验证:
1.file_get_contents()方法:不推荐,url错误会终止脚本显示错误。访问https需要php_openssl支持。
2.curl方式:不推荐,有点复杂。
$url = "http://www.baidu.com";
$ch = curl_init();
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($ch, CURLOPT_HEADER, TRUE);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, TRUE);
curl_setopt($ch, CURLOPT_MAXREDIRS, 3);
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
curl_exec($ch);
$code = curl_getinfo($ch,CURLINFO_HTTP_CODE);
curl_close($ch);
print_r($code);
① curl_exec()
② 通过curl_getinfo(资源句柄,CURLINFO_HTTP_CODE)方法,匹配200状态码
3.get_headers()方法:后台方式验证的话推荐,返回数组,类似array(0=>http1.1 200 OK,...),访问https需要php_openssl支持。
$arr = get_headers($url);
$res = preg_match("/200/",$arr[0]);
if($res){
echo "url有效";
}
JS,前端控制,用户可以通过修改代码绕过验证:
1.有一个方式是仅针对IE浏览器的,使用ActiveXObject。这里不推荐。
2.兼容所有浏览器,使用JQuery的.ajax方法。推荐
function get_url(){
$.ajax({
type:"GET",
cache:false,
url:"http://abc.com",
data:"",
success:function(){
//执行表单提交等动作
}
error:function(){
//弹出提示框
}
});
}