Boa noite a todos,
Ontem pela madrugada estava pensando no Twitter e que ele reduz urls grandes automaticamente para um sistema escolhidos por eles. Então, estava a pensar em como fazer o meu próprio sistema criação de urls pequenas (tiny url) e pesquisei um pouco no Google. Achei várias referências que utilizei como base para elaboração do meu e os links das mesmas você poderá encontrar no final deste post.
Primeiramente você deve criar uma tabela em seu banco de dados com as seguintes características:
# CREATE TABLE IF NOT EXISTS `urls` (
# `uid` int(11) NOT NULL auto_increment,
# `url` text default NULL,
# `unique_chars` varchar(25) BINARY NOT NULL,
# PRIMARY KEY (`uid`),
# UNIQUE KEY `unique_chars` (`unique_chars`)
# );
Este código foi pego do Abhise no seu post “Create your own tinyurl with php and mySQL” que foi minha maior referência, da mesma peguei várias funções mas realizei algumas alterações para melhor eficiência e também tradução para você. Como no código acima foi adicionado o ‘BINARY’ para o unique reconhecer diferença entre AAAA e aaaa, por exemplo.
O Abhise diz para criarmos tais e tais arquivos, eu particularmente, criei um arquivo de funções onde adicionei as diversas funções utilizadas e simplesmente chamei as mesmas nos seus respectivos arquivos.
—- Para ler o artigo inteiro acesse o link abaixo.
Inicialmente precisamos de uma função para conectar/desconectar do mysql e também adicionei algumas variáveis e “diretivas”
error_reporting(E_ALL);
$link;
$config;
function connect_db_lurl() {
global $link;
global $config;
$hostname = “localhost”;
$username = “USUARIO”;
$password = “SENHA”;
$dbname = “DATABASE”;
$link = mysql_connect($hostname, $username, $password); // Conecta ao mysql.
mysql_select_db($dbname) or die(“Unknown database!”); // Seleciona o Banco de dados.
$config[“domain”] = “http://seudominio.com”; // Define a configuração da URL inicial
}function close_db_lurl() {
mysql_close(); // Fecha a conexão com o banco de dados
}
Segundo passo foi criar uma função para redirecionamento, ou seja, uma função que redirecionasse para URL original
function redirect($url) {
header(“Location:”.$url); // Redireciona para a url.
}
Logo em seguida utilizei a função já criada por Abhise para gerar a sequencia de caracteres. (Adicionei algumas letras que ele não estava utilizando elevando assim muito a quantidade de combinações possíveis)
function generate_chars() {
$num_chars = 6; // Tamanho que você deseja as strings
$i = 0;
$my_keys = “123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ”; // Caracteres que valem para formação de endereço
$keys_length = strlen($my_keys);
$url = “”;
while($i<$num_chars) { // Gera sequencia aleatoria $rand_num = mt_rand(1, $keys_length-1); $url .= $my_keys[$rand_num]; $i++; } return $url; }
Utilizamos também um método para verificar se a chave é única:
function isUnique($chars) {
global $link;
$q = “SELECT * FROM `urls` WHERE `unique_chars`='”.$chars.”‘”;
$r = mysql_query($q, $link); // Verifica se a chave é unica.
if( mysql_num_rows($r)>0 ) {
return false;
} else {
return true;
}
}
E outro para verificar se a URL já existe no banco de dados:
function isThere($url) {
global $link;
$q = “SELECT * FROM `urls` WHERE `url`='”.$url.”‘”;
$r = mysql_query($q); // Verifica se já existe a url
if(mysql_num_rows($r)>0) {
return true;
} else {
return false;
}
}
Por fim, a função para gerar as urls:
function create() {
global $link;
global $config;
$chars = generate_chars(); // Gera sequencia de caracteres.while(!isUnique($chars)){ // Verifica se é unico, se não for gera denovo.
$chars = generate_chars();
}$url = $_GET[“u”]; // Pega o endereço que está em ?u=endereço
$url = trim($url); // Retira espaços em branco do inicio e do fim
$url = mysql_real_escape_string($url);if(!isThere($url)) { // Caso não exista o endereço no banco.
$q = “INSERT INTO `urls` (url, unique_chars) VALUES (‘”.$url.”‘, ‘”.$chars.”‘)”;
$r = mysql_query($q, $link); // Insere o endereço
if(mysql_affected_rows()) {
$q = “SELECT * FROM `urls` WHERE `url`='”.$url.”‘”;
$r = mysql_query($q);
$row = mysql_fetch_row($r);
echo $config[“domain”].”/”.$row[2]; // Imprime endereço para acesso da nova url
} else {
echo “Desculpe, problemas com o banco de dados.”;
}
} else { // Caso já exista
$q = “SELECT * FROM `urls` WHERE `url` = ‘”.$url.”‘”;
$r = mysql_query($q); // Seleciona endereço para URL
$row = mysql_fetch_row($r);
echo $config[“domain”].”/”.$row[2]; // Imprime endereço para acesso da url.
}
}
Olhando o código algum tempo depois resolvi criar outra função para Pegar o endereço:
function take_lurl($lurl) {
global $link;
$q = “SELECT url FROM `urls` WHERE `unique_chars` = ‘”.$lurl.”‘”;
$r = mysql_query($q, $link); // Pega endereço original para tal string.
if(mysql_num_rows($r)>0) {
$info = mysql_fetch_array($r);
$url = $info[“url”];
} else {
echo “Sorry, link not found!”;
}
return $url;
}
Criei o arquivo “functions-little-url.php” com os códigos anteriores e os demais arquivos dessa maneira:
index.php:
ob_start(); //Inicia Buffer de saida include("functions-little-url.php"); connect_db_lurl(); $lurl = $_GET["u"]; //Sequencia de caracteres $url = take_lurl($lurl); redirect($url); close_db_lurl(); ob_end_flush(); // Fecha buffer de saida ?>
create.php:
include("functions-little-url.php"); connect_db_lurl(); create(); close_db_lurl(); ?>
Até aqui tranquilo, logo em seguida devemos adicionar o Mod_Rewrite no Apache e adicionar as seguintes linhas no .htaccess
RewriteEngine On
RewriteRule ^([1-9a-zA-Z]*)$ index.php\?u=$1 [L]
Eu fiz o meu dessa maneira, como foi descrito nas referências, realizando algumas modificações. Tudo funcionou bem.
Como eu utilizo o sistema wordpress e gostaria de utilizar o mesmo (que já usava mod_rewrite) junto dessa minha nova funcionalidade tive que pesquisar mais sobre este módulo para apache. Então caso você deseje utilizar este sistema junto ao seu sistema WordPress faça da seguinte maneira:
RewriteEngine On
RewriteBase /RewriteCond %{REQUEST_FILENAME} !-f # Verifica se a página acessada não é um arquivo real
RewriteCond %{REQUEST_FILENAME} !-d# Verifica se a página acessada não é um diretório
RewriteRule ^([A-Za-z0-9]{6})$ /lurl/index.php?u=$1 [L] # Caso coincida com a expressão regular redirecione para /lurl/index.php?u=$1 onde /lurl/ é o diretório que está os meus arquivos de tiny-url e [L] indica que é a ultima instrução a ser executada.# Caso não feche com a parte em cima continua nas regras “padrões” do WordPress
RewriteCond %{REQUEST_FILENAME} !-f # Verifica se a página acessada não é um arquivo real
RewriteCond %{REQUEST_FILENAME} !-d# Verifica se a página acessada não é um diretório
RewriteRule . /index.php [L]
Para criar URLs acesse o endereço create.php?u=ENDEREÇO_DO_SITE
Para acessar URLs o arquivo index.php cuidara disso para você.
Você pode baixar estes arquivos de Como criar seu proprio sistema de TinyURL aqui.
Qualquer dúvida, sinta-se a vontade para entrar em contato comigo. E em breve estou pensando em disponibilizar esse “compressor” de URL como um serviço do meu blog. Lembrando que você não deve ter pastas com nomes do mesmo tamanho que o utilizado pelo L-Url.
Abraço a todos,
Matheus Bratfisch
PS: Eu tinha feito algo mais bonito, com Objetos e tudo mais, porém após ter feito os códigos e tentar testar descobri que o meu PHP não estava atualizado, então assim que eu atualizar o mesmo eu testo e posto as modificações para você.
Referências:
—- “Tiny Url”:
www.php.net
Wynia.org
htmlCenter
—- “Mod Rewrite”:
Apache Mod Rewrite
Продать авто в Приднестровье Продать авто в Приднестровье .
Быстрая профессиональная монтаж видеонаблюдения для квартир, домов, офисов и коммерческих объектов. Проектирование, монтаж и настройка систем безопасности, удалённый доступ, запись видео и контроль в реальном времени. Надёжные решения для защиты имущества и контроля территории.
Unlock incredible rewards today with true fortune casino ndb and maximize your winning potential at True Fortune Casino!
The casino ensures a safe and fair environment for all players.
Your point of view caught my eye and was very interesting. Thanks. I have a question for you.
88 starz 88 starz .
8starz 8starz .
888starz casino официальный сайт 888starz casino официальный сайт .
888starx https://eg888starz-bet.com/
888staz 888staz .
Vavada to znane kasyno online, które działa również w Polsce. Strona przyciąga graczy szeroką ofertą gier, przejrzystymi warunkami i obsługą w PLN (zł). Bonus powitalny oraz intuicyjna obsługa sprawiają, że platforma zdobyła popularność wśród polskich użytkowników. Opierając się na naszym doświadczeniu, platforma wyróżnia się szybkim działaniem i różnorodnością treści. Vavada Polska jest chętnie wybierana w Polsce przez szeroki wybór gier i bonusów.
888stazr https://888starz-eg-egypt4.com/
Вывод из запоя в Казани требуется, когда человек не может самостоятельно остановиться, пьет несколько дней подряд, теряет сон, аппетит, силы и нормальное самочувствие. Запой опасен не только похмельем: длительное употребление алкоголя нарушает работу печени, сердца, сосудистой системы, желудка, головного мозга и нервного состояния. В такой ситуации важно быстро вызвать врача нарколога на дому, чтобы получить медицинскую помощь, провести осмотр пациента и начать безопасное лечение.
Узнать больше – нарколог на дом вывод из запоя в казани
Вывод запоя в клинике Сочи: лечение алкогольной интоксикации, капельница, детоксикация, помощь нарколога на дому и в стационаре круглосуточно, анонимно
Выяснить больше – вывод из запоя недорого
Важное преимущество услуги — анонимность. Информация о пациента, обращении, адрес, диагноз, лечение, консультация, стоимость, препараты и другие данные не передаются третьим лицам. Нажимая кнопку «отправить заявку», вы соглашаетесь с пользовательским соглашением, политикой обработки персональных данных и политикой конфиденциальности сайта.
Получить дополнительные сведения – нарколог на дом цена в казани
true fortune casino avis https://www.truefortune-50-free-spins.com .
true fortune casino no deposit bonus codes 2026 true-fortunecasino.uk .
true fortune casino opiniones http://truefortune-50-free-spins.com .
Обратиться к врачу-наркологу стоит в случаях, когда больного сложно доставить в клинику, человек отказывается ехать в стационар, находится в состоянии длительного запоя, употреблял алкоголь несколько дней, испытывает тяжелое похмелье, тревогу, тремор, тошноту, нарушение сна или признаки алкогольной интоксикации. В таких условиях выездной нарколог помогает быстро оценить состояние пациента и подобрать безопасное лечение на дом.
Разобраться лучше – нарколог на дом анонимно казань
Have you ever thought about adding a little bit more than just your articles? I mean, what you say is valuable and everything. But imagine if you added some great images or videos to give your posts more, “pop”! Your content is excellent but with images and videos, this site could definitely be one of the best in its niche. Amazing blog!
В данной публикации мы поговорим о процессе восстановления от зависимости, о том, как вернуть себе нормальную жизнь. Мы обсудим преодоление трудностей, значимость поддержки и наличие программ реабилитации. Читатели смогут узнать о ключевых шагах к успешному восстановлению.
Наши рекомендации — тут – Наркологическая клиника «Похмельная служба» в Краснодаре.
Вызов нарколога на дом подходит в ситуации, когда человек находится в состоянии запоя, тяжелой похмельная интоксикации, абстинентный синдрома, наркотической ломки, сильной тревоги, агрессии, депрессии или физические симптомы не позволяют самостоятельно прийти на прием. Важно не ждать осложнения: длительного употребления алкоголя может привести к нарушению работы сердца, печени, нервной системы и других органов.
Получить дополнительные сведения – нарколог на дом вывод казань
true fortune no deposit bonus codes 2026 http://true-fortune-casino4.com .
true fortune casino reviews true fortune casino reviews .
true fortune casino free true fortune casino free .
Вывод из запоя на дому подходит не только при запойном употреблении алкоголя, но и при отравлении алкоголем, похмельной интоксикации, бессоннице, панических атаках, потере сил, повышенной тревожности, нарушении пищеварения и общем ухудшении самочувствия. Врач нарколог объясняет родственникам, что делать после процедуры, как соблюдать режим, какие лекарства принимать и когда стоит продолжить лечение алкоголизма в клинике.
Выяснить больше – вывод из запоя капельница в казани
siti crazy time https://crazy-time-italy.it/
crazy time now https://crazy-time8.com/
crazy time analysis [url=https://crazy-time-slot.it]https://crazy-time-slot.it/[/url]
Рекомендации по прохождению
секс лесбиянок с игрушками
Thank you for another informative site. Where else could I get that kind of info written in such an ideal way? I’ve a project that I’m just now working on, and I have been on the look out for such information.
Вы получаете не просто капельницу, а комплекс медицинской помощи: осмотр пациента, подбор растворов, применение седативных средств при необходимости, витамины, противорвотные, обезболивающие, препараты для нормализации давления, поддержки печени и нервного состояния. Такой подход помогает не только прервать запой, но и начать путь к лечению алкоголизма, если пациент готов продолжить восстановление.
Изучить вопрос глубже – вывод из запоя капельница
WONDERFUL Post.thanks for share..more wait .. ?
monopoly live app scaricare https://imonopoly.live/
monopoly big baller live score monopoly big baller live score.
crazy time cos\’è https://crazytimeee.com/
track casino crazy time https://crazy-timez.com/
crazy time stati https://crazy-time-rome.com/
Adult content site offers a range of videos for adult entertainment.
Select trusted porn hubs for a safe experience.
Feel free to surf to my blog buy cialis online
Steam Desktop Authenticator https://authenticatorsteamdesktop.com is a PC app that lets you use the Steam Mobile Authenticator on your computer. It supports trade confirmation, account security, and managing two-factor authentication codes without using your smartphone.
monopoly pronunciation https://monopoly-live-bangladesh.com/
khelo bet 24 monopoly https://imonopoly.live/
monopoly guy https://monopoly-live-bd.com/
monopoly board https://imonopoly.live/
sol casino solana https://solanagxy.com/
monopoly live play https://monopoly-live-bd.com/
vulkan casino. https://play24-vulkan.com/
Steam Desktop Authenticator https://steamdesktopauthenticator.net is a popular solution for Steam users who need access to Steam Guard features on their computer. It conveniently verifies actions, protects your account, and manages authentication in a single app.
betfinal apk https://betfinalafrica.com/
Content for adults can be accessed through secure and reputable
websites. Explore safe adult sites for quality content.
Here is my web-site: BUY XANAX WITHOUT PRESCRITION
вывод usdt в наличные онлайн http://www.crypto-obmen-online.net