Como criar um encurtador de URL como o tinyurl.com, bit.ly e migre.me utilizando PHP e MySQL?

Você já deve conhecer esses serviços que oferecem o encurtamento da URL, onde podemos pegar uma URL longa e encurta-la. Muito utilizado para links enviados pelo Twitter, MSN, email, fóruns, etc. Existem muitos sites que oferecem este tipo de serviço gratuitamente, como por exemplo o tinyURL.com, bit.ly, migre.me entre outros.

Já pensou como seria interessante ter o seu próprio serviço de encurtamento de URL?Saiba que depois deste tutorial você poderá criar o seu com apenas 3 arquivos: index.php, condb.php e o .htaccess.

index.php -> Quase toda mágica ocorre aqui
condb.php -> Arquivo para conexão com o banco de dados
.htaccess -> Arquivo que nos ajudará a tratar o envio do parâmetro na URL

Trabalharemos nesse tutorial com banco de dados MySQL (eu usarei o gerenciador phpMyadmin), PHP com a extensão mod_rewrite habilitada (a maioria dos servidores de hospedagem hoje em dia já tem essa extensão habilitada).

Tendo isso em mãos, vamos primeiramente ‘preparar o terreno’ criando a tabela no banco de dados que irá armazenar as informações da URL original e a ‘chave’ que representará a URL original de forma curta.

Logo abaixo está o código SQL para criar a tabela:

CREATE TABLE `urlcurta` (
  `id` INT(11) NOT NULL AUTO_INCREMENT,
  `chave` VARCHAR(32) DEFAULT NULL,
  `url` text NOT NULL,
  PRIMARY KEY (`id`),
  UNIQUE KEY `chave` (`chave`)
);

Se você usa o phpMyadmin, copie e cole esse código acima na caixa de texto SQL de seu banco de dados.

Esse código acima criará uma tabela chamada ‘urlcurta’ (você pode chamar da forma que quiser), com 3 campos: id, chave e url.

id -> Automaticamente será criado um id que se auto incrementa a cada registro.

chave -> Campo que armazenara a string curta que representará o parâmetro que será usado para o redirecionamento para URL original.

url -> Campo que armazenara a URL original.

Agora vamos começar a trabalhar com PHP, onde primeiro iremos definir a conexão com o banco de dados:

Crie um arquivo PHP e salve como condb.php no mesmo diretório que estará os arquivos desse sistema que estamos desenvolvendo. No meu caso eu criei um diretório chamado ‘/url_curta’ para testar o sistema desse tutorial.

Observação: Podemos usar qualquer diretório em nosso servidor para testar, mas o ideal para quem quiser oferecer esse serviço, seria registrar um domínio bem curto e oferecer a opção na raíz do domínio.

O conteúdo do condb.php será o seguinte:

<?php

define('BD_USER', 'teu-usuario'); // substitua pelo seu usuário do bd
define('BD_PASS', 'tua-senha'); // substitua pela tua senha do bd
define('BD_NAME', 'teu-banco-de-dados'); // substitua pelo nome do teu bd

/*

   Geralmente o hostname utilizado logo abaixo é 'localhost', se seu caso for
   diferente, substitua 'localhost' pelo hostname de seu servidor.
   Se for preciso entre em contato com o suporte de sua hospedagem.

*/

$conn = mysql_connect('localhost', BD_USER, BD_PASS);
mysql_select_db(BD_NAME, $conn);

?>

Agora crie outro arquivo PHP e salve no mesmo diretório com o nome ‘index’ e nele vamos criar os códigos que farão toda a mágica.

Quase no final deste tutorial eu mostro o código completo, e bem comentado com todos os detalhes explicados, mas mesmo assim vou desmembrar parte por parte e explicar individualmente.

Primeiramente vamos fazer a parte que redireciona para a URL original quando alguém acessar a URL curta. Tudo que precisamos fazer é encontrar a URL original registrada no banco de dados que corresponda ao parâmetro enviado na URL curta, no caso a ‘string’ que será comparada com o valor do campo ‘chave’ do banco de dados e assim montar o cabeçalho de redirecionamento 301 permanente, mas somente após um leve tratamento para que o processo tenha um pouco de segurança.

Veja o código:

<?php

include 'condb.php'; // Nosso arquivo de conexão

/* Primeiro verificamos se foi solicitado o redirecionamento de alguma URL */
if (isset($_GET['k']))
{

    $k = mysql_real_escape_string($_GET['k'],$conn); // Pegamos o parâmetro enviado na url e damos uma tratada

    $sURL = "SELECT url FROM urlcurta WHERE chave = '" . $k . "'";
	$qURL = mysql_query($sURL) or die(mysql_error()); // Consulta no BD se tem essa string (chave) registrada

    if (mysql_num_rows($qURL) > 0)
    {

        /*
        Se existir o registro da string (chave) enviada no parâmetro,
		redirecionamos para URL longa correspondente, que esta
		registrada no banco de dados.
        */

        $rURL = mysql_fetch_assoc($qURL);
        header('HTTP/1.1 301 Moved Permanently');
        header('Location: ' . $rURL['url']);
        exit;

    }

}

Continuando, vamos criar agora a parte que pega os dados enviados do formulário e o fomulário propriamente dito, que será nossa interface de inserção das URL originais para posteriormente serem encurtadas.

Primeiro verificamos se alguma informação foi enviada pelo formulário, e se nada foi enviado, então exibimos o formulário.

Veja como faremos isso logo abaixo:

/* Agora vamos entrar no que diz respeito a criação da URL Curta */

/* Caracteres permitidos na string que será gerada para substituir a URL longa */
define('PERMITIDOS','0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'); 

/* Nosso caminho base. Substitua pelo seu caminho */
define('BASE_HREF', 'http://' . $_SERVER['HTTP_HOST'] . '/url_curta/');

/*
Se nenhum link foi solicitado o redirecionamento o código acima não é
executado e o arquivo tenta executar o código abaixo:
*/

// Se o formulário para criar a url curta foi submetido
if (isset($_POST['submit']) && isset($_POST['url']))
{

    // Pequeno filtro auqe ajuda na verificação da URL original
    if (filter_var($_POST['url'], FILTER_VALIDATE_URL, FILTER_FLAG_HOST_REQUIRED) !== false)
    {

        $url = trim($_POST['url']);

        // Verifica se a url enviada no form já tem uma string curta (chave) registrada para ela
        $sKey = "SELECT chave FROM urlcurta WHERE url = '" . $url . "'";
		$qKey = mysql_query($sKey) or die(mysql_error());

        if (mysql_num_rows($qKey) > 0)
        {

            /*
            Se já tem registro de uma 'chave' para essa URL ele apenas define o valor para uma
			variável e assim poderemos indicar ao usuário a URL com a respectiva 'chave' já existente
            */

            $rKey = mysql_fetch_assoc($qKey);
            $key = $rKey['chave'];

        }
		else{

            /*
            Se a 'chave' ainda não existe para essa URL então vamos usar essa função abaixo para
			criar uma string curta (chave) para essa URL e registrar no banco de dados
			*/

            function encurtar_pelo_id($inteiro, $base = PERMITIDOS)
            {

                $tam = strlen($base);

                while($inteiro > $tam - 1)
	            {

                    $saida   = $base[fmod($inteiro, $tam)] . $saida;
		            $inteiro = floor( $inteiro / $tam );

                }

                return $base[$inteiro] . $saida;

            }

            /* Explicando um pouco essa função, mas só um pouco pra não complicar :) 

                1-  function encurtar_pelo_id($id, $base = PERMITIDOS)
                    {

                    Essa primeira linha nos mostra o que a função pega para processar, no caso do $inteiro,
                    passaremos por ali o valor id de registro no banco de dados referente ao cadastro da nossa URL .
                    $base já iremos passar predefinidamente nossa string de caracteres permitidos que definimos
                    na constante PERMITIDOS mais lá no início dos códigos.

                2-  $tam = strlen($base);

                    Isso nos da a quantidade de caracteres compreendem a string de PERMITIDOS
                    Se você for imprimir o valor da variável $tam, verá que o valor é 62,
                    pois compreende todos os números de 0-9 e todas as letras a-zA-Z

                3-  while($inteiro > $tam - 1)
                    {

                        $saida   = $base[fmod($inteiro, $tam)] . $saida;
                        $inteiro = floor($inteiro / $tam);

					}

                    Esse loop while() só vai entrar em ação quando tivermos mais de 62 URLs cadastradas
					Pois servirá para fazer combinações entre os caracteres da string de PERMITIDOS

                4-  return $base[$inteiro] . $saida;

                    Nossa saída de string, onde caso tenha entrado no while irá gerar uma combinação entre
                    um caractere de PERMITIDOS com o valor da variável $saida gerado no while.
                    Caso não entre no while ele irá gerar um valor respectivo ao id de registro.

                    Exemplo: Se o id de registro for 8, provavelmente a string(chave) dessa URL será '8',
                    se for 10, a string (chave) dessa URL será 'a' e assim por diante até utilizar de forma unitária
                    todas as 62 instâncias de PERMITIDOS, entre números, minúsculas e maiúsculas.
                    A partir daí entra-se no while e começa as combinações.

                    Fiz uns testes e se tivermos 13 bilhões de registros únicos de URL no banco de dados teremos chegado
                    à uma string (chave) de apenas 7 caracteres :) legal neh?

            */

            /*
            Bom vamos dar continuidade e ver aonde e quando iremos usar essa função,
            o que importa que já esta pronta para uso.
            */

            // Agora vai começar a mágica, onde primeiro inserimos no banco de dados a URL Longa (original)
            $iURL = "INSERT INTO urlcurta (url) VALUES ('" . $url . "')";
			$qURL = mysql_query($iURL) or die(mysql_error());

            /*
            Com a inserção acima, é gerado um ID automático para o registro, pois o campo no banco de dados é 'auto_increment', ou seja,
            a cada registro esse registro recebe uma identificação única e na linha abaixo estamos atribuindo esse valor único à variável $id
            */

            $id = mysql_insert_id();

            // Agora vamos usar a nossa função passando o valor do $id na chamada
            $key = encurtar_pelo_id($id);

            // Já registramos a URL original, agora vamos atualizar a tabela e registrar a string (chave)
            $uKey = "UPDATE urlcurta SET chave = '" . $key . "' WHERE id = " . $id . "";
            $qUKey = mysql_query($uKey) or die(mysql_error());

        }

        // Feito e agora exibimos o link da url curta que ao ser clicado irá redirecionar para a URL longa (original)
        echo '<a href="' . BASE_HREF . $key . '" target="_blank">' . BASE_HREF . $key . '</a>';

    }

}
else{

/*
Caso o formulário não tenha sido submetido, nem uma URL solicitada ao redirecionamento,
então mostramos o formulário para submeter e encurtar a URL.
*/

?>

<form method="post" action="">

    <label>URL: <input type="text" name="url" id="url" /></label>
    <input type="submit" name="submit" id="submit" value="Encurtar" />

</form>

<?php

}

?>

Não preciso nem explicar o código acima, pois está muito bem comentado, mas para não ficar dúvidas, lembrando o que eu já mencionei antes, esse código primeiramente verifica se o formulário e a url foram submetidos e se não foram ele mostra o formulário.

O formulário só precisa do campo, que chamaremos de  ‘url’ e o botão de envio. O parâmetro ‘action’ do formulário deve apontar para o próprio script, eu costumo deixar em branco nesses casos.

Para validar e tratar a URL usamos as funções filter_var() e mysql_real_escape_string() como uma forma rápida de manter o script um pouco mais seguro, desta forma também validando a URL.

Para criar a string que representará a ‘key’ da URL curta, usamos o próprio valor do id do registro e geramos a string única com a função encurtando_pelo_id(). Usando o valor do id do registro, garantimos que não haverá valores duplicados.

Veja abaixo o código completo com bastante atenção, pois os comentários que fiz nele estão bem explicados, nos mínimos detalhes e pode tirar todas as tuas dúvidas e de forma bem simplificada.

O código completo do arquivo index.php ficaria algo como isso:

<?php

include 'condb.php'; // Nosso arquivo de conexão

/* Primeiro verificamos se foi solicitado o redirecionamento de alguma URL */
if (isset($_GET['k']))
{

    $k = mysql_real_escape_string($_GET['k'],$conn); // Pegamos o parâmetro enviado na url e damos uma tratada

    $sURL = "SELECT url FROM urlcurta WHERE chave = '" . $k . "'";
	$qURL = mysql_query($sURL) or die(mysql_error()); // Consulta no BD se tem essa string (chave) registrada

    if (mysql_num_rows($qURL) > 0)
    {

        /*
        Se existir o registro da string (chave) enviada no parâmetro,
		redirecionamos para URL longa correspondente, que esta
		registrada no banco de dados.
        */

        $rURL = mysql_fetch_assoc($qURL);
        header('HTTP/1.1 301 Moved Permanently');
        header('Location: ' . $rURL['url']);
        exit;

    }

}

/* Agora vamos entrar no que diz respeito a criação da URL Curta */

/* Caracteres permitidos na string que será gerada para substituir a URL longa */
define('PERMITIDOS','0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'); 

/* Nosso caminho base. Substitua pelo seu caminho */
define('BASE_HREF', 'http://' . $_SERVER['HTTP_HOST'] . '/url_curta/');

/*
Se nenhum link foi solicitado o redirecionamento o código acima não é
executado e o arquivo tenta executar o código abaixo:
*/

// Se o formulário para criar a url curta foi submetido
if (isset($_POST['submit']) && isset($_POST['url']))
{

    // Pequeno filtro auqe ajuda na verificação da URL original
    if (filter_var($_POST['url'], FILTER_VALIDATE_URL, FILTER_FLAG_HOST_REQUIRED) !== false)
    {

        $url = trim($_POST['url']);

        // Verifica se a url enviada no form já tem uma string curta (chave) registrada para ela
        $sKey = "SELECT chave FROM urlcurta WHERE url = '" . $url . "'";
		$qKey = mysql_query($sKey) or die(mysql_error());

        if (mysql_num_rows($qKey) > 0)
        {

            /*
            Se já tem registro de uma 'chave' para essa URL ele apenas define o valor para uma
			variável e assim poderemos indicar ao usuário a URL com a respectiva 'chave' já existente
            */

            $rKey = mysql_fetch_assoc($qKey);
            $key = $rKey['chave'];

        }
		else{

            /*
            Se a 'chave' ainda não existe para essa URL então vamos usar essa função abaixo para
			criar uma string curta (chave) para essa URL e registrar no banco de dados
			*/

            function encurtar_pelo_id($inteiro, $base = PERMITIDOS)
            {

                $tam = strlen($base);

                while($inteiro > $tam - 1)
	            {

                    $saida   = $base[fmod($inteiro, $tam)] . $saida;
		            $inteiro = floor( $inteiro / $tam );

                }

                return $base[$inteiro] . $saida;

            }

            /* Explicando um pouco essa função, mas só um pouco pra não complicar :) 

                1-  function encurtar_pelo_id($id, $base = PERMITIDOS)
                    {

                    Essa primeira linha nos mostra o que a função pega para processar, no caso do $inteiro,
                    passaremos por ali o valor id de registro no banco de dados referente ao cadastro da nossa URL .
                    $base já iremos passar predefinidamente nossa string de caracteres permitidos que definimos
                    na constante PERMITIDOS mais lá no início dos códigos.

                2-  $tam = strlen($base);

                    Isso nos da a quantidade de caracteres compreendem a string de PERMITIDOS
                    Se você for imprimir o valor da variável $tam, verá que o valor é 62,
                    pois compreende todos os números de 0-9 e todas as letras a-zA-Z

                3-  while($inteiro > $tam - 1)
                    {

                        $saida   = $base[fmod($inteiro, $tam)] . $saida;
                        $inteiro = floor($inteiro / $tam);

					}

                    Esse loop while() só vai entrar em ação quando tivermos mais de 62 URLs cadastradas
					Pois servirá para fazer combinações entre os caracteres da string de PERMITIDOS

                4-  return $base[$inteiro] . $saida;

                    Nossa saída de string, onde caso tenha entrado no while irá gerar uma combinação entre
                    um caractere de PERMITIDOS com o valor da variável $saida gerado no while.
                    Caso não entre no while ele irá gerar um valor respectivo ao id de registro.

                    Exemplo: Se o id de registro for 8, provavelmente a string(chave) dessa URL será '8',
                    se for 10, a string (chave) dessa URL será 'a' e assim por diante até utilizar de forma unitária
                    todas as 62 instâncias de PERMITIDOS, entre números, minúsculas e maiúsculas.
                    A partir daí entra-se no while e começa as combinações.

                    Fiz uns testes e se tivermos 13 bilhões de registros únicos de URL no banco de dados teremos chegado
                    à uma string (chave) de apenas 7 caracteres :) legal neh?

            */

            /*
            Bom vamos dar continuidade e ver aonde e quando iremos usar essa função,
            o que importa que já esta pronta para uso.
            */

            // Agora vai começar a mágica, onde primeiro inserimos no banco de dados a URL Longa (original)
            $iURL = "INSERT INTO urlcurta (url) VALUES ('" . $url . "')";
			$qURL = mysql_query($iURL) or die(mysql_error());

            /*
            Com a inserção acima, é gerado um ID automático para o registro, pois o campo no banco de dados é 'auto_increment', ou seja,
            a cada registro esse registro recebe uma identificação única e na linha abaixo estamos atribuindo esse valor único à variável $id
            */

            $id = mysql_insert_id();

            // Agora vamos usar a nossa função passando o valor do $id na chamada
            $key = encurtar_pelo_id($id);

            // Já registramos a URL original, agora vamos atualizar a tabela e registrar a string (chave)
            $uKey = "UPDATE urlcurta SET chave = '" . $key . "' WHERE id = " . $id . "";
            $qUKey = mysql_query($uKey) or die(mysql_error());

        }

        // Feito e agora exibimos o link da url curta que ao ser clicado irá redirecionar para a URL longa (original)
        echo '<a href="' . BASE_HREF . $key . '" target="_blank">' . BASE_HREF . $key . '</a>';

    }

}
else{

/*
Caso o formulário não tenha sido submetido, nem uma URL solicitada ao redirecionamento,
então mostramos o formulário para submeter e encurtar a URL.
*/

?>

<form method="post" action="">

    <label>URL: <input type="text" name="url" id="url" /></label>
    <input type="submit" name="submit" id="submit" value="Encurtar" />

</form>

<?php

}

?>

Claro que você pode implementar a parte visual de forma mais elaborada, utilizar CSS, jQuery, Ajax, entre outros recursos, a intenção aqui é de apenas passar o básico.

Da forma que está não irá funcionar se não tivermos o arquivo .htaccess preparado para dar uma tratada na URL .

Exemplo:

Da forma que está o código acima só iremos conseguir passar o parâmetro referente a ‘chave’ da URL se for desta forma:

www.dominio.com/url_curta/index.php?k=chave

Mas o que queremos é passar da seguinte forma:

www.dominio.com/url_curta/chave

Para isso que serve o .htaccess nessa hora.
Acompanhe abaixo a explicação e montagem do nosso .htaccess.
Usaremos ma extensão do PHP mod_rewrite para manipular a URL mais um pouco para chegarmos no ponto que queremos. Se o seu servidor não der suporte a mod_rewrite, mude de servidor, mas se ele suporta, parabéns pra ele, ele tem então pelo menos o mínimo aceitável para quem trabalha com PHP nos dias de hoje. Coloque o código abaixo em um arquivo chamado .htaccess, dentro do mesmo diretório que estará os arquivos do sistema que estamos criando.

Observação: Se não existe o arquivo .htaccess no seu diretório, abra o bloco de notas cole o código que será mostrado mais abaixo e de o nome como .htaccess, mas não se esqueça de escolher que tipo de arquivo deseja salvar, (escolha a opção ‘Todos os arquivos’), salve e suba ele para o mesmo diretório dos scripts.

RewriteEngine On
RewriteRule ^([0-9a-zA-Z]{1,7})$ index.php?k=$1 [L]

Entenda um pouco essa regra acima:

Dizmeos por essa regra que k=$1 pode ser qualquer número ou letra, maiúscula ou minúscula e que pode ter de 1 à 7 instâncias para ser válida

Exemplo: ‘a’ ou ‘ab’ ou ‘abc’ ou ‘1b3cr’, etc, mas no máximo 7.

Nota: Podemos chegar a uma string (chave)  de 8 caracteres, mas só quando tiver muitos e muitos bilhões de URLs cadastradas, e se for chegar a essa proporção, saberemos e bastará mudar para {1,8} ali na regra. Fácil neh?  :)

Pronto agora você está apto(a) à ter seu próprio site de encurtamento de URL, espero que tenha sido um bom começo para você.

Nota: Entenda que esse sistema é o básico e implementações de maior segurança devem ser aplicadas, principalmente contra spam.

Gostaria de agradecer ao do ultramegatech.com, briancray.com que serviram de referência para inspiração e à um amigo muito considerado, Muller Dias, que trocou umas ideias valiosas enquanto eu desenvolvia esse tutorial.

Qualquer dúvida faça um comentário e eu tento ajudar.
Bons estudos!

Tópicos relacionandos

Publicado por

Razor

Conhecedor das artes gráficas, amante de design web, amigo íntimo do desenvolvimento web, com a pretensão de aprender e ajudar à quem busca conhecimento, me faço presente. =)

80 comentários sobre “Como criar um encurtador de URL como o tinyurl.com, bit.ly e migre.me utilizando PHP e MySQL?”

  1. Parabéns Roberto Incrivel seu codigo era exatamente a lógica ideal que estava procurando para meu novo projeto obrigado e contiue a desempenhar esse brilhante trabalho.

    1. Valeu Ivan e se quiser colaborar para que eu continue a desempenhar esse brilhante trabalho, pode ajudar com uma doação o Sistema Básico que ele será muito grato.
      Este site sobrevive apenas de minha vontade, pois as doações estão paradas, desanima muito isso. Pois é necessário hospedagem e renovação do domínio anualmente e nem pra isso entra grana… banco do bolso. Mas beleza… cada um cada um. Grande abraço e bons estudos.

      1. Ok Robert estou aprimorando o código para incluir endereços customizados e uma interface em ajax assim que finalizar volterai aqui pra te fornecer o código final e assim fazer minha colaboração obrigado.

        1. Legal Ivan.
          Na verdade eu tenho uma versão que eu desenvolvi desse sistema do tutorial exatamente assim como vc descreveu.
          Mas como a ideia aqui é o Básico, fiz justamente uma versão simples para que os usuários como vc fizesse exatamente isso, brincasse e tentassem fazer algo melhor.
          Agradeço essa colaboração também Ivan… até me deu uma ideia de abrir um canal onde serviria para armazenar códigos de usuários que de certa forma usufruíram dos ensinamentos aqui passados.
          Quanto a colaboração a dinheiro, não se preocupe, não é obrigado não… mas se pagar um cafezinho já é bem vindo hehehe
          Grande abraço.

  2. Cara muito legal este exemplo acho que achei alguém que possa me ajudar, estou tentando achar algum profissional que consiga desenvolver um sistema para mim mas nenhum programador me respondeu pois peço que façam o valor para realizá-lo, mas pelo jeito não conseguem vou ver contigo se conseguirias ou terias alguém para me indicar. O projeto já está com a mascara pronta só preciso da parte da programação em PHP. O projeto é mais ou menos assim como uma agência de empregos, uma pessoa se cadastra, edita e exclui seus dados no site e autoriza sua divulgação sim ou não no google onde estes dados são mostrado em forma de currículo em uma mini url tipo ao do site ceviu agência de empregos, ficando de fora seus dados dos documentos, então estes dados são seus dados pessoais onde ele escolhe o código e o ramo de atividade ao qual ele se enquadra, esta tabela tera um código da atividade e o ramo da atividade. e terá outra página para as empresas onde eles me enviariam o link do site deles de acordo com o código e ramo de atividade delas também e eu aprovaria a inclusão no site após pagamento. teria uma area administrativa onde eu cadastraria o código e o ramo das atividade e também editaria o código e o ramo assim como a exclusão e bloqueio dos currículos e dos links das empresas. após clicar no ramo apresentará uma tabela com a relação em ordem alfabética dos candidatos e das empresas. o prjeto está em http://curriculos.diegodemattos.net você vai e clica no mapa no RS e depois escolhe clica na cidade São Leopoldo e depois clica no menu currículos ali terá a tabela de atividades onde você clica no seguinte link 69 .. 75 – Atividades profissionais, científicas e técnicas e depois vai e clica em 6920-6/01 Atividades de contabilidade e ai terá os candidatos em ordem alfabética ai é só clicar e verificar os candidatos. assim da mesma forma será o acesso as empresas. Obrigado Aguardo resposta se puderes me responder por e-mail. Se quizeres entrar em uma sociedade a respeito podemos conversar.

  3. Muito bom o artigo. Parabéns.
    Mas uma dúvida, não seria prudente efetuar uma busca da url que foi encurtada no BD e verificar se já não existe esse registro? Eu sei que a probabilidade é pequena, mas existe :)

    Tiago

    1. Olá @Thiago, sim é prudente e esta verificação é feita sim…

      Observe melhor o material disposto, mais especificamente nessa parte do tutorial:

      $url = trim($_POST[‘url’]);
      // Verifica se a url enviada no form já tem uma string curta (chave) registrada para ela
      $sKey = “SELECT chave FROM urlcurta WHERE url = ‘” . $url . “‘”;
      $qKey = mysql_query($sKey) or die(mysql_error());

      if (mysql_num_rows($qKey) > 0)
      {

      /*
      Se já tem registro de uma ‘chave’ para essa URL ele apenas define o valor para uma
      variável e assim poderemos indicar ao usuário a URL com a respectiva ‘chave’ já existente
      */

      $rKey = mysql_fetch_assoc($qKey);
      $key = $rKey[‘chave’];

      }
      else{

      /*
      Se a ‘chave’ ainda não existe para essa URL então vamos usar essa função abaixo para
      criar uma string curta (chave) para essa URL e registrar no banco de dados
      */

      function encurtar_pelo_id($inteiro, $base = PERMITIDOS)
      {

      // etc ….

      }

      Ou seja… quando o usuário inserir uma URL para ser encurtada, o script verifica se não existe uma referência curta para esta URL… se existir, ele retorna a referência curta já registrada, se não existi, ele cria uma nova.
      Se ligou ali?
      Qualquer coisa só falar.
      Bons estudos!

  4. Olá.
    Está ocorrendo o seguinte erro quando tento encurtar URLs.
    Duplicate entry ‘1B’ for key ‘chave’

    Por que o sistema está tentando criar outras chaves iguais ?
    Poderiam me ajudar?

    Grato

    1. Estava vendo o código novamente agora e o MySQL e vi que na verdade ele cria uma vez um minúsculo 1b e mais tarde ele tenta criar o 1B

      Só que aparece o erro que descrevi.
      Tem como arrumar isso, ou só tirando os caracteres maiúsculos dos permitidos?

      Grato

      1. Olá @Yuri,
        Qual a codificação que está usando no teu banco de dados?
        Ela termina com ‘ci’? Se sim é poque teu banco esta como case insensitive, ou seja não diferencia minúscula de maiúscula.
        Verifique isso e depois poste novamente.
        Bons estudos!

  5. Fala Roberto seu script é muito bom, parabéns.
    ROberto não consigo usufluir dele apesar de estar apredendo php eu queria saber pq aparece esse erro

    Fatal error: Maximum execution time of 90 seconds exceeded in D:\SITES\sociodosamba.com.br\curta.php on line 61

    que seria essa linha no código:

    $saida = $base[fmod($inteiro, $tam)] . $saida;

    1. Olá @Claudio, o erro que vc quer saber lhe diz que o tempo que está definido no seu php.ini para execuções dos scripts foi excedido.
      Há com definir um tempo maior pelo php.ini ou usando a função iniset() no topo do arquivo.
      Procure no google por ‘iniset maximum execution time’ sem aspas e terá diversos resultados que lhe ajudará a entender o processo.
      Quanto ao script do tutorial… está perfeito, se deu erro é porque deve ter feito algo errado, diferente do que passei.
      Verifique com atenção.
      Bons estudos.

  6. Ao chegar na letra Z travou e não gera mais.

    0)
    {
    /*Se existir o registro da string (chave) enviada no parâmetro, redirecionamos para URL longa correspondente, que esta registrada no banco de dados.*/
    $rURL = mysql_fetch_assoc($qURL);
    header(‘HTTP/1.1 301 Moved Permanently’);
    header(‘Location: ‘ . $rURL[‘url’]);
    exit();
    }
    }

    /* Agora vamos entrar no que diz respeito a criação da URL Curta */ /* Caracteres permitidos na string que será gerada para substituir a URL longa */
    define(‘PERMITIDOS’,’0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ’);
    /* Nosso caminho base. Substitua pelo seu caminho */
    define(‘BASE_HREF’, ‘http://’ . $_SERVER[‘HTTP_HOST’].”/”);

    /* Se nenhum link foi solicitado o redirecionamento o código acima não é executado e o arquivo tenta executar o código abaixo: */
    // Se o formulário para criar a url curta foi submetido
    if (isset($_POST[‘submit’]) && isset($_POST[‘url’]))
    {
    // Pequeno filtro auqe ajuda na verificação da URL original
    if (filter_var($_POST[‘url’], FILTER_VALIDATE_URL, FILTER_FLAG_HOST_REQUIRED) !== false)
    {
    $url = trim($_POST[‘url’]);

    // Verifica se a url enviada no form já tem uma string curta (chave) registrada para ela
    $sKey = “SELECT chave FROM urlcurta WHERE url = ‘” . $url . “‘”;
    $qKey = mysql_query($sKey) or die(mysql_error());

    if (mysql_num_rows($qKey) > 0)
    {
    /*Se já tem registro de uma ‘chave’ para essa URL ele apenas define o valor para uma variável e assim poderemos indicar ao usuário a URL com a respectiva ‘chave’ já existente*/ $rKey = mysql_fetch_assoc($qKey);
    $key = $rKey[‘chave’];
    }
    else{
    /*Se a ‘chave’ ainda não existe para essa URL então vamos usar essa função abaixo para criar uma string curta (chave) para essa URL e registrar no banco de dados*/
    function encurtar_pelo_id($inteiro, $base = PERMITIDOS)
    {
    $tam = strlen($base);
    while($inteiro > $tam – 1)
    {
    $saida = $base[fmod($inteiro, $tam)] . $saida;
    $inteiro = floor( $inteiro / $tam );
    }
    return $base[$inteiro] . $saida;
    }

    // Agora vai começar a mágica, onde primeiro inserimos no banco de dados a URL Longa (original)
    $iURL = “INSERT INTO urlcurta (url) VALUES (‘” . $url . “‘)”;
    $qURL = mysql_query($iURL) or die(mysql_error());
    /*Com a inserção acima, é gerado um ID automático para o registro, pois o campo no banco de dados é ‘auto_increment’, ou seja, a cada registro esse registro recebe uma identificação única e na linha abaixo estamos atribuindo esse valor único à variável $id*/

    $id = mysql_insert_id();
    // Agora vamos usar a nossa função passando o valor do $id na chamada
    $key = encurtar_pelo_id($id);
    // Já registramos a URL original, agora vamos atualizar a tabela e registrar a string (chave)
    $uKey = “UPDATE urlcurta SET chave = ‘” . $key . “‘ WHERE id = ” . $id . “”;
    $qUKey = mysql_query($uKey) or die(mysql_error());
    }
    // Feito e agora exibimos o link da url curta que ao ser clicado irá redirecionar para a URL longa (original)
    echo ‘‘ . BASE_HREF . $key . ‘‘;
    }
    }

    else
    { /* Caso o formulário não tenha sido submetido, nem uma URL solicitada ao redirecionamento, então mostramos o formulário para submeter e encurtar a URL. */
    ?>

    URL:

  7. Ola amigo, eu gostei muito do tutorial, estava seguindo aqui em casa, mas nao deu certo, nao aparece erros, porem nao eh registrado na DB e tambem nao retorna o link da URL encurtada.

    Poderia ajudar? Obrigado.

  8. Olá Roberto, não é querendo lhe explorar, mas não há ninguém melhor do que você para explicar o meu erro, poderia me ajudar??
    Eu fiz à risca o que passou no tutorial, mas quando fui testar ele exibe os erros:

    Warning: Unexpected character in input: ‘\’ (ASCII=92) state=1 in /home/pingocgc/public_html/url_curta/index.php on line 9

    Warning: Unexpected character in input: ‘\’ (ASCII=92) state=1 in /home/pingocgc/public_html/url_curta/index.php on line 9

    Warning: Unexpected character in input: ‘\’ (ASCII=92) state=1 in /home/pingocgc/public_html/url_curta/index.php on line 10

    Parse error: syntax error, unexpected T_CONSTANT_ENCAPSED_STRING in /home/pingocgc/public_html/url_curta/index.php on line 14

    Fiz uma pesquisa na internet, mas não achei a solução do script.
    Você tem idéia deste erro?
    Eu já tinha um .htaccess no diretório principal, então eu criei um no diretório do script apenas com as informações do tuto. Testei e não rolou, depois incluí no .htaccess do diretório principal e ficou na mesma. Alguma idéia?

    Endereço: http://pingocg.com.br/url_curta

    Parabéns pelo tudo e valeu pela atencão!!
    Abraços.

    1. Olá @Gleidson… vc fez exatamente como mostrei no tutorial?
      Estranho esse erro… talvez seja alguma configuração do teu servidor.
      Verifique se tudo que mostrei ser necessário no server tem disponível no seu.

    2. @Gleidson, dei uma olhada… talvez seja a config do seu servidor em relação a get_magic_quotes_gpc()

      Faça assm:

      Nessa linha: (14)

      $k = mysql_real_escape_string($_GET[‘k’],$conn);

      Altere por isso:

      $k = anti_sql_injection($_GET[‘k’],$conn);

      E depois no topo do arquivo coloque isso:

      Depois me diga o que ocorreu ;)

      1. Pow cara, valeu mesmo!!! O erro foi meu, ou melhor, da máquina que eu estava! Eu estava criando os arquivos php no sistema operacional MAC e com o bloco de notas dele, por algum motivo quando eu fui abrir em minha casa com o Windows, haviam vários códigos escritos no arquivo php, além do que eu escrevi, algo muito estranho. Mas valeu pela força e desculpa o transtorno! Este tutorial será muito útil para pessoas como eu encontrarem soluções para isso! Só uma observação, eu havia clicado na opção: Notificar-me sobre novos comentários nesta postagem . E eu não fui notificado, algum erro? Se eu fosse esperar um e-mail daqui, até hoje eu estaria esperando. Valeu!!!!

    1. Olá @Alexandre, o que está acontecendo é que no seu caso, não está redirecionando para o endereço cadastrado no banco de dados.
      A solicitação está sendo interpretada como uma requisição de página do teu próprio domínio e como não existe da o erro 404.
      Procure analisar a parte que é responsável pelo redirecionamento.
      Bons estudos

  9. Roberto,

    Ola Roberto, obrigado pelo belo tutorial.
    Estou com o mesmo problema que o amigo Alexandre.
    Como sou leigo no assunto, gostaria de uma ajuda como resolver.
    Ja verifiquei no banco de dados que a URL original esta sendo armazenada.
    Porem o link fica http://meudominio.com/url_curta/1

    Ao clicar, da o erro 404.

    Grato

  10. Olá Roberto beleza!
    Cara ele funciona lindo mesmo… obrigado por compartilhar seus conhecimentos.

    Assim gostaria de uma pequena informação.

    Eu ví que o encurtador redireciona sem problemas pelo caminho “meusite.la/1h” só que, quando encurtamos a url, ele fica com o caminho “http://www.meusite.la/1h” ou seja, tem como retirar o “http://www.” facilitando a minha vida para que eu não tenha que ficar tirando esse pedaço quando quiser divulgar o link?

    Um grande abs.

    1. A maioria, senão todos navegadores atualmente redirecionam para http://www. caso vc digite apenas o domínio.
      Mas para garantir vc pode usar uma regrinha a mais no arquivo .htaccess utilizado nesse tutorial, que irá redirecionnar para www. caso não tenha o www e por sua vez o navegador completará a solicitação.
      Assim vc poderá divulgar apenas o endereço sem o http://www.

      O arquivo .htaccess ficaria assim após a adição dessa regra que citei.


      RewriteEngine On
      RewriteBase /
      RewriteCond %{HTTP_HOST} ^teusite\.com\.br$ [NC]
      RewriteRule ^(.*)$ http://www.teusite.com.br/$1 [R=301,L]
      RewriteRule ^([0-9a-zA-Z]{1,7})$ index.php?k=$1 [L]

      Acho que era isso que estava querendo dizer… correto?

      Bos estudos!

      1. Opa valew pelo retorno, irei verificar mas é o seguinte.
        Estou tendo o seguinte problema agora:

        “Duplicate entry ‘1G’ for key 2”

        Pelo q vi no phpmyadmin esse id encurtado já existe, assim quando vou encurtar uma nova url ele da esse erro, assim ele não esta mais encurtando nenhuma url. No myadmin estou com 103 entradas podem quase 20 estão com a chave NULL.

        Pode ajudar?
        Pq agora o sistema parou kkkk

        Valew chefia.

          1. Opa, desculpe eu li esse comentário mas passei batido.. já resolvi.

            Então só voltando ao meu primeiro comment, é assim.
            Depois que eu coloco a url a ser encurtada e clico em encurtar o sistema me exibe ela menor só que com o http://www. ou seja, 11 caracteres sem necessidade já que o navegador adiciona isso automaticamente quando é carregado o link.

            Onde posso retirar esse começo quando mostro o link encurtado?
            Abs

          2. Nesse trecho:

            /* Nosso caminho base. Substitua pelo seu caminho */
            define('BASE_HREF', 'http://' . $_SERVER['HTTP_HOST'] . '/url_curta/');

            Substitua por:

            /* Nosso caminho base. Substitua pelo seu caminho */
            define('BASE_HREF', $_SERVER['HTTP_HOST'] . '/url_curta/');

            E nesse trecho, quase no final do tuto:

            // Feito e agora exibimos o link da url curta que ao ser clicado irá redirecionar para a URL longa (original)
            echo '' . BASE_HREF . $key . '';

            Acho que vai dar certo…

            Bons estudos

  11. Eu estava fazendo um site de encurtamento de URLs (repare no estava. haha), usei este tutorial aqui, a galera que está pedindo exemplo pode ver aqui como funciona: http://aandara.com/u/

    Eu fiz alguns ajustes no código como o compartilhamento para redes sociais e URL original.

    Agradeço muito Roberto pela ajuda!

  12. Fala Roberto,

    Cara muito obrigado pela dica.
    Na verdade eu imaginei que fosse por ali e alterei mas mandei o comments para ter certeza. rs

    Últimaaa dúvida, imagina como posso adicionar 2 coisas.
    A simples: Mostrar na página quantos links já foram encurtados, ou seja, pegar um total do BD é imprimir lá tela (acho que é isso).

    A complicada só mesmo para matar a sanidade: Mostrar para quem encurtar a url quantos clicks aquele link teve.

    Sei que agora fui longe mas me de uma luz pless.
    Abs.

    1. Para exibir a quantidade de links encurtados basta fazer uma contagem

      Query SQL: (monte a query conforme o a sintaxe do PHP)

      SELECT COUNT(id) FROM tabela

      Para saber quantos cliques um link registrado deve criar mais um campo no banco de dados:

      Campo : cliques
      Type: bigint
      Tamanho: 10

      Defina um valor inicial padrão para este campo como ‘0’, ou seja não deixe em branco, encare como já tivesse algum registro ou seja o ‘0’ que falei.

      Bom… agora que já tem o campo para armazenar a quantidade de cliques, precisará implementar a linha de código que irá executar esse armazenamento a cada clique que a urlcurta receber.
      Para isso precisará inserir no primeiro bloco condicional do arquivo index.php um comando SQL de atualização de campo.

      Perceba esse código original do tutorial lá do primeiro bloco do index.php:

      include 'condb.php'; // Nosso arquivo de conexão

      /* Primeiro verificamos se foi solicitado o redirecionamento de alguma URL */
      if (isset($_GET['k']))
      {

      $k = mysql_real_escape_string($_GET['k'],$conn); // Pegamos o parâmetro enviado na url e damos uma tratada

      $sURL = "SELECT url FROM urlcurta WHERE chave = '" . $k . "'";
      $qURL = mysql_query($sURL) or die(mysql_error()); // Consulta no BD se tem essa string (chave) registrada

      if (mysql_num_rows($qURL) > 0)
      {

      /*
      Se existir o registro da string (chave) enviada no parâmetro,
      redirecionamos para URL longa correspondente, que esta
      registrada no banco de dados.
      */

      $rURL = mysql_fetch_assoc($qURL);
      header('HTTP/1.1 301 Moved Permanently');
      header('Location: ' . $rURL['url']);
      exit;

      }

      }

      … é o bloco de redirecionamento… sendo assim terá que efetuar a atualização no campo ‘cliques’ antes de redirecionar.

      Então nesse trecho…

      ...
      if (mysql_num_rows($qURL) > 0)
      {

      /*
      Se existir o registro da string (chave) enviada no parâmetro,
      redirecionamos para URL longa correspondente, que esta
      registrada no banco de dados.
      */

      /* Mas antes de redirecionar manda aqui abaixo a implementação de cliques */

      $cliques = mysql_query("UPDATE urlcurta SET cliques = cliques+1 WHERE chave = '" . $k . "'") or die(mysql_error());

      /* Esta linha acima atualiza o campo 'cliques' no banco de dados inserindo um novo valor
      que será igual ao que já está lá... no caso 0+1 e no próximo clique, 1+1
      e assim crescentemente, sempre somando x+1 */

      $rURL = mysql_fetch_assoc($qURL);
      header('HTTP/1.1 301 Moved Permanently');
      header('Location: ' . $rURL['url']);
      exit;

      }

      Se te ajudei, me ajude a manter o Sistema Básico, faça a doação via PagSeguro ou Paypal.
      Te agradeço
      Bons estudos!

  13. Olá Roberto desculpe o sumiço.
    Então eu tentei e apanhei feito, tanto que o sistema saiu do ar rsrs.

    Vc não pode me ajudar?
    E sim, irei contribuir com certeza, você merece.

    Aguardo!
    Abs.

    1. Não tenho como te ajudar sem saber como vc integrou os códigos mastigados que te passei, para saber onde errou.
      Faz assim… não analiso arquivos de ninguém, apenas de quem já fez uma doação para o sistemabasico.com.br
      Após eu confirmar sua colaboração pelo Paypal ou Pagseguro, te passo um contato direto e me passará os arquivos para que eu analise oque fez.
      Bons estudos

  14. Cara!

    O que é isso? Show de bola!
    Eu sou muito leigo nesse assunto de banco de dados, php, e derivados. Mais esse tutorial é uma mão na roda, puts!

    Parabéns!

    Aqui está o meu encurtador “teste” http://www.dulceworld.com/dw/ .

    Tou super feliz pq consegui fazer. suashuasha

    Agora como nem tudo são flores, eu gostaria de saber se é que tem alguma explicação o porque das url só serem encurtadas se tiver o http://www… e se não tem como quando gerar o link encurtado ficar sitequalquer.com/linkencurtado .

    Caraa é massa demais! Gostei!

    Abraço!

    1. @Eddy, fico feliz por vc ter conseguido, algumas pessoas vinahm tendo dificuldades e fiquei preocupado se o tutorial estava correto, mas basta uma pessoa ter conseguido pra provar que tudo está nos conformes.
      Quanto à sua dúvida basta dar uma analisada no tuto e ver a passagem que trata a URL e retirar o www. no que diz respéito a criação da nova url.

      Da uma lida com atenção nessa linha do código e monta a tua lógica:

      define('BASE_HREF', 'http://' . $_SERVER['HTTP_HOST'] . '/url_curta/');

      Onde $_SERVER['HTTP_HOST'], obviamente vai pegar o www.

      É nele que tens que focar e montar a URL sem o www.
      Bons estudos!

  15. Olá, Roberto, Gostaria de falar com você através do msn se possível, gostaria que você me adicionasse nesse e-mail para eu tirar umas duvidas com você.

  16. Então, eu estou com um problema quando vou encurtar o link já tem mais de 40 links curto no caso já passou de todas as letras do alfabeto e todos os numero de 0 a 9, quando ele manda o link original para o banco de dados ele manda com o ID mais não manda com a chave, como faço pra concertar isso?

    1. Olá @Emerson.
      Não sei lhe dizer, porque não sei o que você fez para que esse erro ocorresse. Assim não tenho como reproduzi-lo.
      Vocâ TALVEZ me dirá que fez exatamente como no tutorial… porém eu lhe direi que eu também fiz exatamente como no tutorial e ainda assim não consegui reproduzir este erro e em meus testes, cadastrei mais de 500 links. Enfim… Fiquei de mãos atadas agora.

  17. Aqui dá Not Found, encurta, mas n gera o redirecionamento, eu clico em encurtar, ele faz o link, mas o link dá Not Found, como arrumo isso?

    1. Olá André. Se vc colcoar o sistema na raiz do site, ou seja, em public_html ou www, como queira… irá funcionar da forma que deseja.
      Se ainda assim prefere manter em um diretório específico, deverá trabalhar com rewrite na url usando algum dos muitos métodos que existe,… da uma olhadinha no google sobre rewrite de url, url amigaveis etc. Eu particularmente usaria o método que utiliza o arquivo .htaccess para manipular o apache. Assim que eu conseguir respirar um pouco eu tentarei postar outro tutorial sobre esse assunto.

      1. entendii muito obrigado, aqui funciona muito bem, ja tenho o site 70% funcionando, a minha unica dor de cabeça no momento é o seguinte, como faço o link encurtado ser exibido em uma determinada pagina,

        o codigo faz o link ser exibido em uma pagina em branco,

        ex: quando vc coloca o link e clica em encurta, o link é mostrado em uma outra pagina certo ?

        gostaria de saber como faço o link ser exibido em uma determinada pagina, tentei de varias formas aqui e ainda nao consegui. aguardo resposta abraço.

        1. Não entendi… acredito que é só uma questão de webdesign e layout para agregar a resposta na página que vc quiser.
          O tutorial eé apenas uma demonstração… eu não teria tempo de desenvolver um layout especifico apenas para exibir o link.
          Bons estudos.

  18. Olá Roberto gostaria que você citasse uma hospedagem grátis que suporte a criação do encurtador pois eu tive um problema financeiro sabe como é né?
    Obrigado desde agora e aguardo resposta

  19. Ok Roberto, deixa eu tentar te explicar…

    quando vc clica no botão (Encurta) por exemplo, a url encurtada é mostrada por padrão na pagina 1.php.

    Eu fiz um layout de uma pagina, que aqui vou chamar de url.php, e gostaria que essa url depois de encurtada invés de ser mostrada na pagina 1.php que é o padrao, seja mostrada na pagina url.php,

    eu tentei varias coisas aqui e ainda nao conseguir fazer isso, o site está pronto com sistema de login para parceiros e tudo mais, mais falta esse pequeno detalhe, se puder me ajudar.

    abraço. e muito obrigado por compartilhar seu conhecimento.

  20. Cara finalmente conseguir, fazer ele mostrar a url em outra pagina, desconsidere a minha ultima pergunta kk, o problema agora é esse erro:

    OBS: ele mostra a url mais encima da url vem esse erro.

    (( Notice: Undefined variable: saida in C:\xampp\htdocs\urlcurta\index.php on line 91 ))

    ele sempre mostra esse erro quando uma nova url é encurtada, pode me ajudar ?

    1. Olá André, isso não é um erro de fato e sim uma notificação.
      Seu script não vai deixar de rodar por isso.
      Para que essas notificações não apareçam, deve definir uma diretriz para o PHP não exibi-las.
      Geralmente os servidores de hospedagem vem com essa diretriz definida para não exibnir…
      Percebi que está testando localmente, entãod eve configurar no php.ini.
      Procure no Google: Sobre esse assunto no google

      Bons estudos!

  21. Bom dia Roberto, cara, tudo andava bem ate que fui hospedar o site kk, oque está acontecendo é o seguinte, na minha maquina, utilizando em localhost o site funciona perfeitamente, ele criar a url e redireciona certinho, Mais quando jogo ele no servidor de hospedagem, ele cria a url, mais não redireciona, apresentando o erro 404, já testei em 2 servidores diferentes e o erro é o mesmo, você pode me ajudar ? já dei varias olhadas no codigo e não achei aonde pode ser o conflito, abaixo segue o link de onde o site está hospedado, aguardo um contato seu.

    http://premiumtv.comze.com/

  22. Boa noite Roberto,
    eu estou com o seguinte erro, fiz tudo certo conforme esta no Tuto.
    Segue o erro:
    Warning: mysql_connect(): Access denied for user ‘u360348556_entga’@’localhost’ (using password: YES) in /home/u360348556/public_html/condb.php on line 15 Warning: mysql_select_db() expects parameter 2 to be resource, boolean given in /home/u360348556/public_html/condb.php on line 16

    1. Guilherme, o teu erro só pode estar no .htacces ou na possibilidade de seu uso ou porque o teu server não possui mod_rewrite ativado, ou ainda porque não está tratando os dados de forma correta.
      Analise com cuidado e repita tudo.
      Se estiver em servidor local, com windows, o .htaccess não tem efeito algum.
      Teste em um servidor remoto com linux e mod_rewrite habilitado.
      Bons estudos

  23. Simplesmente espetacular… Muito bom mesmo! Resolveu meu problema.
    Registrei um dominio pequeno swing.vc e com isto posso criar url curtas para os perfils dos nosso usuarios.

    Veja um exemplo:

    Url normal:
    suaveswing.com.br/usuarios/perfil.php?url=28875

    Url encurtada com o sistema dado aqui:
    swing.vc/2

    Ou seja: Simplesmente demais!
    Meus parabens mesmo!

    Jordan Martins

  24. Gente, fiz algumas alterações no sistema, para adequar aos perfis dos meus usuarios.

    Então ficou assim (url) mais o ID ou Usuario:
    Exemplo: swing.vc/28875 ou swing.vc/jmmoderador

    Isto me fez gostar mais ainda deste sistema… Mais uma vez, parabens!

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *