찾다
php教程PHP源码php 版获取重定向后的地址

php 版获取重定向后的地址

May 25, 2016 pm 05:15 PM
php주소

php 版获取重定向后的地址

<?php
//取重定向的地址
class RedirectUrl{
    //地址
    var $url;
    //初始化地址
    function RedirectUrl($url){
        $this->url = $url;
    }
    /**
     * get_redirect_url()
     * 取重定向的地址
     *
     * @param string $url
     * @return string
     */
    private function get_redirect_url($url){
        $redirect_url = null;
 
        $url_parts = @parse_url($url);
        if (!$url_parts) return false;
        if (!isset($url_parts[&#39;host&#39;])) return false; //can&#39;t process relative URLs
        if (!isset($url_parts[&#39;path&#39;])) $url_parts[&#39;path&#39;] = &#39;/&#39;;
 
        $sock = fsockopen($url_parts[&#39;host&#39;], (isset($url_parts[&#39;port&#39;]) ? 
        (int)$url_parts[&#39;port&#39;] : 80), $errno, $errstr, 30);
        if (!$sock) return false;
 
        $request = "HEAD " . $url_parts[&#39;path&#39;] . (isset($url_parts[&#39;query&#39;]) ? &#39;?&#39;.$url_parts[&#39;query&#39;] : &#39;&#39;) .
         " HTTP/1.1\r\n";
        $request .= &#39;Host: &#39; . $url_parts[&#39;host&#39;] . "\r\n";
        $request .= "Connection: Close\r\n\r\n";
        fwrite($sock, $request);
        $response = &#39;&#39;;
        while(!feof($sock)) $response .= fread($sock, 8192);
        fclose($sock);
 
        if (preg_match(&#39;/^Location: (.+?)$/m&#39;, $response, $matches)){
            return trim($matches[1]);
        } else {
            return false;
        }
    }
 
    /**
     * get_all_redirects()
     * 取所有重定向地址
     *
     * @param string $url
     * @return array
     */
    private function get_all_redirects($url){
        $redirects = array();
        while ($newurl = $this->get_redirect_url($url)){
            if (in_array($newurl, $redirects)){
                break;
            }
            $redirects[] = $newurl;
            $url = $newurl;
        }
        return $redirects;
    }
 
    /**
     * get_final_url()
     * 取实际地址
     * 
     * @param string $url
     * @return string
     */
    function get_final_url(){
        $redirects = $this->get_all_redirects($this->url);
 
        if (count($redirects)>0){
            return array_pop($redirects);
        } else {
            return $this->url;
        }
    }
}
 
/**
 * get_show_pic
 * 取最终要显示的图片地址
 *
 * @param string $url
 * @return  string
 */
function get_show_pic($url,$noimg = &#39;noimg.gif&#39;,
$newimg="http://special.ku6img.com/projects/2010/d-color/images/slt-1.jpg"){
    $obj = new RedirectUrl($url);
 
    $realurl = $obj->get_final_url();
 
    if(strpos($realurl,$noimg)>0){
        return $newimg;
    }
    return $url;
}
//参考
echo "<img src=&#39;".get_show_pic("http://i2.ku6img.com/encode/picpath/2010/12/9/14/1294948410019/5.jpg")."&#39;/>";
?>

2.PHP代码 

<?php
//取重定向的地址
class RedirectUrl{
    //地址
    var $url;
    //初始化地址
    function RedirectUrl($url){
        $this->url = $url;
    }
    /**
     * get_redirect_url()
     * 取重定向的地址
     *
     * @param string $url
     * @return string
     */
    private function get_redirect_url($url){
        $redirect_url = null;
 
        $url_parts = @parse_url($url);
        if (!$url_parts) return false;
        if (!isset($url_parts[&#39;host&#39;])) return false; //can&#39;t process relative URLs
        if (!isset($url_parts[&#39;path&#39;])) $url_parts[&#39;path&#39;] = &#39;/&#39;;
 
        $sock = fsockopen($url_parts[&#39;host&#39;], (isset($url_parts[&#39;port&#39;]) ? (int)$url_parts[&#39;port&#39;] : 80),
         $errno, $errstr, 30);
        if (!$sock) return false;
 
    $request = "HEAD " . $url_parts[&#39;path&#39;] . (isset($url_parts[&#39;query&#39;]) ? 
    &#39;?&#39;.$url_parts[&#39;query&#39;] : &#39;&#39;) . " HTTP/1.1\r\n";
        $request .= &#39;Host: &#39; . $url_parts[&#39;host&#39;] . "\r\n";
        $request .= "Connection: Close\r\n\r\n";
        fwrite($sock, $request);
        $response = &#39;&#39;;
        while(!feof($sock)) $response .= fread($sock, 8192);
        fclose($sock);
 
        if (preg_match(&#39;/^Location: (.+?)$/m&#39;, $response, $matches)){
            return trim($matches[1]);
        } else {
            return false;
        }
    }
 
    /**
     * get_all_redirects()
     * 取所有重定向地址
     *
     * @param string $url
     * @return array
     */
    private function get_all_redirects($url){
        $redirects = array();
        while ($newurl = $this->get_redirect_url($url)){
            if (in_array($newurl, $redirects)){
                break;
            }
            $redirects[] = $newurl;
            $url = $newurl;
        }
        return $redirects;
    }
 
    /**
     * get_final_url()
     * 取实际地址
     * 
     * @param string $url
     * @return string
     */
    function get_final_url(){
        $redirects = $this->get_all_redirects($this->url);
 
        if (count($redirects)>0){
            return array_pop($redirects);
        } else {
            return $this->url;
        }
    }
}
 
/**
 * get_show_pic
 * 取最终要显示的图片地址
 *
 * @param string $url
 * @return  string
 */
function get_show_pic($url,$noimg = &#39;noimg.gif&#39;,
$newimg="http://special.ku6img.com/projects/2010/d-color/images/slt-1.jpg"){
    $obj = new RedirectUrl($url);
 
    $realurl = $obj->get_final_url();
 
    if(strpos($realurl,$noimg)>0){
        return $newimg;
    }
    return $url;
}
//参考
echo "<img src=&#39;".get_show_pic("http://i2.ku6img.com/encode/picpath/2010/12/9/14/1294948410019/5.jpg")."&#39;/>";
?>

 以上就是php 版获取重定向后的地址的内容,更多相关内容请关注PHP中文网(www.php.cn)!


성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

Video Face Swap

Video Face Swap

완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

뜨거운 도구

ZendStudio 13.5.1 맥

ZendStudio 13.5.1 맥

강력한 PHP 통합 개발 환경

Eclipse용 SAP NetWeaver 서버 어댑터

Eclipse용 SAP NetWeaver 서버 어댑터

Eclipse를 SAP NetWeaver 애플리케이션 서버와 통합합니다.

DVWA

DVWA

DVWA(Damn Vulnerable Web App)는 매우 취약한 PHP/MySQL 웹 애플리케이션입니다. 주요 목표는 보안 전문가가 법적 환경에서 자신의 기술과 도구를 테스트하고, 웹 개발자가 웹 응용 프로그램 보안 프로세스를 더 잘 이해할 수 있도록 돕고, 교사/학생이 교실 환경 웹 응용 프로그램에서 가르치고 배울 수 있도록 돕는 것입니다. 보안. DVWA의 목표는 다양한 난이도의 간단하고 간단한 인터페이스를 통해 가장 일반적인 웹 취약점 중 일부를 연습하는 것입니다. 이 소프트웨어는

VSCode Windows 64비트 다운로드

VSCode Windows 64비트 다운로드

Microsoft에서 출시한 강력한 무료 IDE 편집기

SublimeText3 Mac 버전

SublimeText3 Mac 버전

신 수준의 코드 편집 소프트웨어(SublimeText3)