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:

Download