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

Ver o tópico anterior Ver o tópico seguinte Ir em baixo

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

Mensagem por Heaven ♪ em Qua Fev 22, 2012 2:31 pm

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, xat, etc. Existem muitos
sites que oferecem este tipo de serviço gratuitamente, como por exemplo o tinyURL.com, bit.ly, migre.me entre outros.


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 (tamém
aconselho ter seu domínio pago)


index.php -> Quase toda [Você precisa estar registrado e conectado para ver este link.] ocorre aqui
condb.php -> Arquivo para [Você precisa estar registrado e conectado para ver este link.] 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 [Você precisa estar registrado e conectado para ver este link.] 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 Smile

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 Smile 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 Smile

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 Smile 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:

[Você precisa estar registrado e conectado para ver este link.]

Mas o que queremos é passar da seguinte forma:

[Você precisa estar registrado e conectado para ver este link.]

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? Smile


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!


Créditos: Roberto Lunelli[Você precisa estar registrado e conectado para ver este link.]


[Você precisa estar registrado e conectado para ver esta imagem.][Você precisa estar registrado e conectado para ver esta imagem.]
avatar
Heaven ♪
Administrador
Administrador

Posts Posts : 224
Moedas Moedas : 500
Respeitos Respeitos : 14
Tickets Tickets : 539
Emblemas Emblemas :


Ver perfil do usuário

Voltar ao Topo Ir em baixo

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

Mensagem por Brunno em Qua Fev 22, 2012 7:15 pm

Top , isso é fácil , mais coloca uns spoilers Mad
avatar
Brunno
Novato
Novato

Posts Posts : 23
Moedas Moedas : 0
Respeitos Respeitos : 1
Tickets Tickets : 36

Ver perfil do usuário

Voltar ao Topo Ir em baixo

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

Mensagem por Heaven ♪ em Qua Fev 22, 2012 7:24 pm

Brunno escreveu:Top , isso é fácil , mais coloca uns spoilers Mad

hehe, sei que ta grande mais da pra entender.


[Você precisa estar registrado e conectado para ver esta imagem.][Você precisa estar registrado e conectado para ver esta imagem.]
avatar
Heaven ♪
Administrador
Administrador

Posts Posts : 224
Moedas Moedas : 500
Respeitos Respeitos : 14
Tickets Tickets : 539
Emblemas Emblemas :


Ver perfil do usuário

Voltar ao Topo Ir em baixo

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

Mensagem por #Lukinhas em Qui Fev 23, 2012 5:26 am

Entendi e vou criar 1 encurtador de link para nao ouver divulgação na Cheat's cms !
avatar
#Lukinhas
Membro
Membro

Posts Posts : 57
Moedas Moedas : 50
Respeitos Respeitos : 0
Tickets Tickets : 70
Emblemas Emblemas :


Ver perfil do usuário

Voltar ao Topo Ir em baixo

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

Mensagem por Centro em Seg Mar 26, 2012 1:18 pm

Nossa esta bem legal o Tutorial.
Mas cara pode usar o spoiler da próxima ?


Mereceu meu +
avatar
Centro
Novato
Novato

Posts Posts : 23
Moedas Moedas : 0
Respeitos Respeitos : 0
Tickets Tickets : 27

Ver perfil do usuário

Voltar ao Topo Ir em baixo

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

Mensagem por Heaven ♪ em Seg Mar 26, 2012 1:52 pm

Centro escreveu:Nossa esta bem legal o Tutorial.
Mas cara pode usar o spoiler da próxima ?


Mereceu meu +

Está enorme sim, mas com spoiler buga.


[Você precisa estar registrado e conectado para ver esta imagem.][Você precisa estar registrado e conectado para ver esta imagem.]
avatar
Heaven ♪
Administrador
Administrador

Posts Posts : 224
Moedas Moedas : 500
Respeitos Respeitos : 14
Tickets Tickets : 539
Emblemas Emblemas :


Ver perfil do usuário

Voltar ao Topo Ir em baixo

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

Mensagem por Conteúdo patrocinado


Conteúdo patrocinado


Voltar ao Topo Ir em baixo

Ver o tópico anterior Ver o tópico seguinte Voltar ao Topo

- Tópicos similares

 
Permissão deste fórum:
Você não pode responder aos tópicos neste fórum