Good Night,
Here I will show you how to create your own url shortener.
First of all you need to create a table like this:
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`)
);
This code was taken from Abhise in this post “Create your own tinyurl with php and mySQL” that was my bigest reference, from it I took some functions and update other ones to be more efficient. For an example I changed the field to BINARY so it be CASE SENSITIVE (aaaa different from AAAA)
The Abhise says to create many files, I particularly, created one file with all functions where I add all the functions and just called the functions in the files.
We need a fucntion to connect/disconnect to mysql
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
}
After this I created a function to redirect to the URL.
function redirect($url) {
header(“Location:”.$url); // Redireciona para a url.
}
Than I used the function from Abhise to generate the char sequence. (I add some chars to elevate the number of combinations
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; }
Created a function to verify if the key is unique.
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;
}
}
And other to verify if the URL is in DB
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;
}
}
Function to create
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.
}
}
Looking to the code I thought to create a function to get the url.
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;
}
Created the file “functions-little-url.php” with these functions.
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(); ?>
We need to add some lines do .htaccess and enable mod_rewrite.
RewriteEngine On
RewriteRule ^([1-9a-zA-Z]*)$ index.php\?u=$1 [L]
I did this in my system that uses wordpress (that already uses mod_rewrite) so it work a little bit different. This is my .htaccess
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]
(my URL shortener is inside /lurl/ directory but the redirect was done in matbra.com/XXXXXXX so it redirects to /lurl/
To create URLs acess create.php?u=ADDRESS
If you have any problem feel free to contact me.
Best Regards,
Matheus Bratfisch
References:
—- “Tiny Url”:
www.php.net
Wynia.org
htmlCenter
—- “Mod Rewrite”:
Apache Mod Rewrite
Информация об обращении не передается третьим лицам, а детали лечения обсуждаются только с пациентом.
Выяснить больше – kapelnica-ot-zapoya-srochno
Vengo jugando como cinco meses en 888starz y para que mentir tenia dudas al principio, porque aqui en Espana te cansas de casinos que prometen mucho. Abrir la cuenta fue cosa de un rato minimo, correo y contrasena y ya esta, y el minimo para depositar esta en 1 euro, que para probar viene de lujo.
De slots van sobrados — creo que pasan de unos 10.000 juegos de proveedores como Pragmatic Play, NetEnt, Play’n GO, Betsoft y Yggdrasil. Yo tiro mucho de Sweet Bonanza y Book of Dead, eso si tambien le he dado a cosas de Big Time Gaming. La pega es que encontrar un juego concreto es un lio cuando el catalogo es tan bestia.
La zona en vivo esta llevada por Evolution y se nota la diferencia: ruletas con crupieres de verdad, Crazy Time que enganchan una barbaridad. El bono de bienvenida ronda el 100% hasta 300€ y unas 100 tiradas gratis, con un rollover de x35, que no es regalado pero tampoco un robo. Suele haber alguna promo sin deposito, conviene revisar lo que hay vigente desde 888starz download latest version antes de registrarte.
Las retiradas va bastante fino. Retire hace poco por Skrill y me llego en menos de una hora. Con Visa se va a dos o tres dias, como en todos lados. Van con Neteller, cripto y ahi es donde vuela de verdad.
Desde el movil funciona bien, tienen app para Android pero yo uso el navegador y me sobra. La atencion al cliente esta en espanol, me atendieron rapido cuando pregunte por el KYC. Licencia de Curazao, que no es la DGOJ y hay que saberlo antes de entrar. Por ahora no me ha fallado, pero ojo con el rollover de las promos.
Здорова, народ Муж просто потерял себя Соседи стучат в стену В больницу тащить страшно Короче, врачи приехали и поставили систему — вывод из запоя на дому недорого с гарантией Поставили капельницу с детоксикационным раствором В общем, вся инфа по ссылке — вывод из запоя на дому недорого вывод из запоя на дому недорого Вывод из запоя на дому — это реальный выход Перешлите тем кто в такой же ситуации
В статье по вопросам здоровья мы рассматриваем актуальные проблемы, с которыми сталкивается общество. Обсуждаются заболевания, факторы риска и важные аспекты профилактики. Читатели получат полезные советы о том, как сохранить здоровье и улучшить качество жизни.
Давай разберёмся досконально – наркологическая клиника «Трезвая жизнь»
В данном обзоре представлены основные направления и тренды в области медицины. Мы обсудим актуальные проблемы здравоохранения, свежие открытия и новые подходы, которые меняют представление о лечении и профилактике заболеваний. Эта информация будет полезна как специалистам, так и широкой публике.
Не упусти шанс – http://www.zapoy-voronezh.ru
Информация об обращении не передается третьим лицам, а детали лечения обсуждаются только с пациентом.
Подробнее – снятие ломки цена подольск
Слушайте кто знает Отец не выходит из штопора Родственники не знают что делать Таблетки не помогают Короче, единственное что вытащило из запоя — выведение из запоя под контролем врачей Положили в палату В общем, вся инфа по ссылке — вывод из запоя с выездом вывод из запоя с выездом Звоните прямо сейчас Перешлите тем кто в такой же ситуации
Этот документ охватывает важные аспекты медицинской науки, сосредотачиваясь на ключевых вопросах, касающихся здоровья населения. Мы рассматриваем свежие исследования, клинические рекомендации и лучшие практики, которые помогут улучшить качество лечения и профилактики заболеваний. Читатели получат возможность углубиться в различные медицинские дисциплины.
Ознакомиться с деталями – аффективный психоз лечение
طيب بقالي تقريبًا نص سنة بجرب على المنصة دي وقلت أكتب تجربتي بما إن الموضوع بيتكرر هنا. أكتر حاجة عجبتني إن عدد الألعاب كبير بشكل مش طبيعي — أكتر من 6000 لعبة بالتقريب، ومش كلها زبالة زي بعض المواقع. Pragmatic Play موجودة بقوة ووطبعًا NetEnt وPlay’n GO.
أنا شخصيًا بقعد أطحن في سويت بونانزا، وزميلي عايش على Book of Dead. اللي جربته الفترة اللي فاتت كان حاجات Microgaming ومش بطالة. لكن اللي مش عاجبني إن السيرش مش دقيق لما تدور على لعبة بالاسم.
جزئية الـlive اللي بيشد فعلًا — إيفوليوشن شغالة عليه، ناس حقيقية قدامك والستريم مستقر حتى لما النت بيبوظ شوية. كريزي تايم بالذات مسلية جدًا، وكمان فيه روليت وبلاك جاك عربي وده مريح. بالنسبة لـ البونص بيكون مضاعفة أول شحن و 150 لفة مجانية مش كلها مرة واحدة، وشرط التدوير 35x وده معقول. تقدر تشوف آخر العروض والأكواد من تنزيل برنامج 888starz قبل ما تودع أي حاجة لأن الأرقام بتتبدل كل فترة.
إنشاء الحساب أخد مني دقيقتين، والحد الأدنى للإيداع بسيط — مبلغ رمزي. طرق الشحن فيه كروت البنوك، Skrill وNeteller، وعملات رقمية وده اللي بستخدمه أنا. السحبة اللي فاتت جالي في نفس اليوم بالـبيتكوين، إنما بالكارت بياخد وقت أطول.
على الموبايل الوضع كويس — تنزيل التطبيق من الموقع الرسمي وده طبيعي في مواقع الرهان. النسخة الجديدة بينزل تلقائي ومفيش لخبطة. خدمة العملاء شات مباشر 24 ساعة بس الرد العربي بياخد وقت أطول شوية. الترخيص من كوراساو ومعروف إنه مش صارم زي مالطا، فاعتبرها نصيحة: العب بفلوس تقدر تخسرها.