Demonstrar de forma simples objetiva, que é totalmente possível criar o seu próprio encurtador de URL’s de maneira simples, sem se preocupar com banco de dados, estatísticas, etc…
A explicação demonstra como requisitar links, como criar uma página de erro personalizada, e como utilizar o seu domínio para acessa-los.
Porém não há limites. Basta usar o seu conhecimento junto da sua criatividade para criar o seu próprio encurtador, sem maiores preocupações.
Faça o download do código completo.
Vamos tomar como exemplo o seguinte cenário:
Você possui um blog ou uma agência digital, e quer espalhar os seus links através de um domínio próprio, no qual os seus clientes confiem meramente, e que não tenham medo de acessar achando que é algum vírus.
Neste tutorial, teremos 4 arquivos:
.htaccess
Para melhor o “visual” das URL’s
307.class.php
Classe para manipulação de links do 307.to
shorturl.php
Onde utilizamos a classe do 307.to
404.php
Página de erro personalizada
A classe do 307
A classe class307 possui os seguintes métodos:
public function set_format($format)
Específica o formato do retorno, podendo ser json ou text.
public function set_account_key($key)
Específica a chave da sua conta.
public function get($u)
Requisita um link.
public function post($u)
Cria um link, se account_key for específicado o link será anexado a sua conta.
Utilizando a classe
Esse é o script principal do sistema, onde é utilizada a classe do 307 para requisitar os links.
Como você pode ver abaixo, o método set_account_key foi comentado para fins de demonstração, porém ele é extremamente importante, pois permita que somente os links criados por você possam ser acessados através do seu domínio.
<?php
require '307.class.php';
$class307 = new class307;
// optional
//$class307->set_account_key('<YOUR ACCOUNT KEY>');
try
{
if (is_array($_GET['link']) || empty($_GET['link']))
{
throw new Exception();
}
$link = $_GET['link'];
$url = $class307->get($link);
//header('Location: ' . $url, TRUE, 307);
header('Location: http://307.to/' . $link);
}
catch (Exception $error)
{
include '404.php';
}
Indo logo para a parte mais importante do código, verificamos se a variável “link” é do tipo Array ou se esta vazia. Caso um dos dois casos ocorra, geramos uma exceção.
if (is_array($_GET['link']) || empty($_GET['link']))
{
...
}
Logo depois, requisitamos o endereço através do método get:
$url = $class307->get($link);
Caso o link não exista, o método get gerará uma exceção, caso contrário continuará a execução.
Veja que ocorrendo alguma exceção, o arquivo 404.php será chamado e logo em seguida a execução terminará.
Utilizando a URL retornada
Se o método get conseguir encontrar a URL, ela será armazenada na variável $url, no script de exemplo, eu somente utilizei o método get para verificar se o link existe ou não, e então redirecionei para a página do próprio 307.to onde serão geradas estatísticas de acesso e tudo mais. Mas nada impede que você faça a sua própria coleta de estatísticas e então redirecione o usuário para a página final.
Testando o script
Para testar o script, basta realizar as seguintes requisições:
http://seusite.com.br/shorturl.php?link=rG
e
http://seusite.com.br/shorturl.php?link=ESSE_LINK_NAO_EXISTE
Veja que a primeira requisição irá redirecionar para http://307.to/rG, enquanto a segunda exibirá uma página de erro (404.php).
Personalizando a URL (Escondendo o shorturl.php)
Para encurtar o link, você pode usar algumas regras no .htaccess, que permitem que você esconda o nome do arquivo, no caso “shorturl.php”.
.htaccess
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ shorturl.php?link=$1
Agora para acessar o seu link, basta requisitar o endereço:
http://seusite.com.br/rG
Personalizando a página de erro (404.php)
Para personalizar a página de erro, basta ter um pouco de conhecimento de HTML:
404.php
<html>
<head>
<meta http-equiv="content-type" content="text/html;charset=UTF-8" />
</head>
<body>
<h1>Erro - Link não encontrado</h1>
<em>
<?php
printf('%d - %s', $error->getCode(), $error->getMessage());
?>
</em>
</body>
</html>
Download do código
Para fazer o download do código completo citado, basta clicar no link abaixo:
Olá Caio, muito obrigado pela boa vontade em compartilhar não só o arquivo como o conceito detalhes das informações. Usarei esta classe e suas informações em um projeto de redirecionamento para o twiiter. Eu estava trabalhando em algo que tinha o mesmo conceito, mas certamente não teria as mesmas vantagens de se usar a API do 307.to, sem falar do tempo economizado. Parabés pela iniciativa!
Otimo! o unico problema e que no 307.to não tem como personalizar o link sera q teria como usar API de outro site.. abraços
Boa tarde Caio, ótimo post, parabéns. Tenho uma dúvida e gostaria de tirar se possível a mesma contigo. Para funcionar o encurtador com meu site, primeiramente eu tenho que cadastrar a url no 307.to e em seguida chamar o código http://seusite.com.br/rG que utiliza a minha key, confere? Não tem como cadastrar/gerar direto a url via código sem ter a necessidade de acessar o 307.to ? Obrigado e fico no aguardo.
Gustavo:
A classe faz exatamente isso!
abcs