2012-01-27 12 views
-1

これは私にとってこの機能で再び私になります..ドメイン名のみを確認しないでください

私は機能しています。

function http_file_exists($url) 
{ 
    $f = @fopen($url,"r"); 
    if($f) 
    { 
    fclose($f); 
    return true; 
    } 
return false; 
} 

そして、これは使い方です:私はそれが全体のURLではなく、ドメイン名のみをチェックしてみましょうするにはどうすればよい

if ($submit || $preview || $refresh) 
{ 
$post_data['your_url'] = "http://www.google.com/this"; //remove the equals and url value if using in real post 
    $your_url = $post_data['your_url']; 
    $your_url_exists = (isset($your_url)) ? true : false; 
    $your_url = preg_replace(array('#&\#46;#','#&\#58;#','/\[(.*?)\]/'), array('.',':',''), $your_url); 

    if ($your_url_exists && http_file_exists($your_url) == true) 
    { 
    trigger_error('exists!'); 
    } 

?たとえば、http://www.google.com/this

答えて

0

URLは下記のコードのhttp://www.google.com/abadurltotest

ソースがfunctions_postingにトップのコードを追加しWhat is the fastest way to determine if a URL exists in PHP?

function http_file_exists($url) 
{ 
    //$url = preg_replace(array('#&\#46;#','#&\#58;#','/\[(.*?)\]/'), array('.',':',''), $url); 
$url_data = parse_url ($url); 
    if (!$url_data) return FALSE; 

    $errno=""; 
    $errstr=""; 
    $fp=0; 

    $fp=fsockopen($url_data['host'],80,$errno,$errstr,30); 

    if($fp===0) return FALSE; 
    $path =''; 
    if (isset($url_data['path'])) $path .= $url_data['path']; 
    if (isset($url_data['query'])) $path .= '?' .$url_data['query']; 

    $out="GET /$path HTTP/1.1\r\n"; 
    $out.="Host: {$url_data['host']}\r\n"; 
    $out.="Connection: Close\r\n\r\n"; 

    fwrite($fp,$out); 
    $content=fgets($fp); 
    $code=trim(substr($content,9,4)); //get http code 
    fclose($fp); 
    // if http code is 2xx or 3xx url should work 
    return ($code[0] == 2 || $code[0] == 3) ? TRUE : FALSE; 
} 

を=でチェックをしたいようです。前の関数を置き換えるPHP

if ($submit || $preview || $refresh) 
{ 
$post_data['your_url'] = " http://www.google.com/abadurltotest"; 
    $your_url = $post_data['your_url']; 
    $your_url_exists = (request_var($your_url, '')) ? true : false; 
    $your_url = preg_replace(array('#&\#46;#','#&\#58;#','/\[(.*?)\]/'), array('.',':',''), $your_url); 

    if ($your_url_exists === true && http_file_exists($your_url) === false) 
    { 
    trigger_error('A bad url was entered, Please push the browser back button and try again.'); 
    } 
+0

URLをhttp://www.google.com/abadurltotest – wadie

+0

に投稿してもエラーは発生しません。なぜなら、それは悪質なURLではなく良いURLをトリガするからです。 'もし($ your_url_exists && http_file_exists($のyour_url)=== false)を { でtrigger_error( 'それが悪いのURLが入力された申し訳ありませんが、バックボタンを押して、有効なURLでもう一度試してください!'); } ' –

+0

いいえ、まだ同じです。何が間違っているのか分からない。私が最初に投稿したものは少し良く働いていた。私はそれを調べます:\ – wadie

0

HTTPステータスコードを確認してください。それが200でない場合、おそらくURLは存在しないか、アクセスできない。

$your_url_exists = (isset($your_url)) ? true : false; 

は意味をなさないことに注意してください。あなたが

$your_url_exists = (bool)$your_url; 

か、単にテスト$your_url代わりの$your_url_exists

+0

何かが間違っているようです。 リンクが何であるかは関係ありません。http:// wwwを投稿するだけで十分です。 - それは、次に来るものに関係なくリンクが存在することを示します。 – wadie

+0

私はあなたが私を助けることを願って..! – wadie

関連する問題