Jump to content
Umbus

Verificar url e portas externas

Recommended Posts

Umbus

Como verifico se um url e portas externas estao a funcionar?


Eu sou eu e eu sou aquele que sou eu...

Share this post


Link to post
Share on other sites
thoga31

Como verifico se um url e portas externas estao a funcionar?

Simples e directo... Muito bom! 😆

É certo que não sou apologista a respostas do tipo "Google it", mas esta tem de ser obrigatoriamente respondida assim: Google is your friend.

Olha tantos...

http://codigosphp.blogspot.com/2008/06/validar-url-com-php.html

http://www.criarweb.com/artigos/172.php

http://www.codigofonte.net/dicas/php/241_verificando-a-existencia-de-uma-url

http://portugalcode.com/index.php?topic=604.0

http://forum.imasters.com.br/topic/106310-verificar-se-uma-url-existe/

Quanto às portas, força no teclado.


Knowledge is free!

Share this post


Link to post
Share on other sites
SirDave

function is_valid_url($url)
{
    $url = @parse_url($url);

    if (!$url)
    {
        return false;
    }

    $url = array_map('trim', $url);
    $url['port'] = (!isset($url['port'])) ? 80 : (int)$url['port'];
    $path = (isset($url['path'])) ? $url['path'] : '';

    if ($path == '')
    {
        $path = '/';
    }

    $path .= (isset($url['query'])) ? "?$url[query]" : '';

    if (isset($url['host']) AND $url['host'] != gethostbyname($url['host']))
    {
        if (PHP_VERSION >= 5)
        {
            $headers = get_headers("$url[scheme]://$url[host]:$url[port]$path");
        }
        else
        {
            $fp = fsockopen($url['host'], $url['port'], $errno, $errstr, 30);

            if (!$fp)
            {
                return false;
            }
            fputs($fp, "HEAD $path HTTP/1.1\r\nHost: $url[host]\r\n\r\n");
            $headers = fread($fp, 4096);
            fclose($fp);
        }
        $headers = (is_array($headers)) ? implode("\n", $headers) : $headers;
        return (bool)preg_match('#^HTTP/.*\s+[(200|301|302)]+\s#i', $headers);
    }
    return false;
}

Alguma pesquisa na net devolveu esta função, parece-me bem.


Be nice to see your eyes, blink them from time to time to relax your retina when using the computer. Blink now!

Share this post


Link to post
Share on other sites
Umbus

nao existe alguma coisa mais simples que isso, eu e que vou colocar os url e as portas, e so para no caso de algumas falharem nao incluir num array


Eu sou eu e eu sou aquele que sou eu...

Share this post


Link to post
Share on other sites
fvox

nao existe alguma coisa mais simples que isso, eu e que vou colocar os url e as portas, e so para no caso de algumas falharem nao incluir num array

Hi.

Se você for validar, parsear ou whatever uma URL, utilize a função parse_url(), que te retornará um array com diversas informações úteis para validação.

Sobre as portas externas, você quer fazer uma espécie de port scanner remoto, certo? Para isso, você tem que trabalhar diretamente com sockets. O PHP possui uma função mais simples que é a fsockopen():

<?php
$portas = array();
if(fsockopen($host, $port, $errno, $errstr, $timeout))
    $portas[] = $port; //armazenando no array

Se necessitar de algo mais avançado, vai sofrer um pouco mais na mão de funções da lib de sockets, como a função socket_create().

Obs: Cuidado pois o firewall do seu servidor pode bloquear as requisições. E cuidado com o que você vai permitir que o usuário faça, por questões de segurança. ;-)

[]'s


"Strength of the world, the one true beholder...Ice in my veins, for those who've died."

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.