Selamat siang agan-agan dan bro-bro sekalian, siang ini saya ingin bagi-bagi tutorial cara membuat shorten url atau cara membuat url pendek seperti punya google dengan php dari pada pakai orang kan bagus pakai domain kita hehehe, contoh dari link yang panjang kita ganti menjadi link yang pendek dan mudah di ingat gt low serta bisa attach domain kita sendiri sebagai linknya. Contoh link : http://mytutorialswebsite.blogspot.com/2014/02/instalasi-laravel-versi-4.html jadi http://www.domainkalian/hfajsj1 oke sekarang kita mulai tutorialnya.
Pastikan buat structure folder seperti berikut sebelum ke-syntac:
Pastikan buat structure folder seperti berikut sebelum ke-syntac:
- Buat file index.php dan copy paste code berikut:
- Buat file global.css untuk keperluan design dari file index.php, kalian bisa copy code berikut:
- Buat database dengan nama db_shorten, Copy sql berikut:
- Buat file Config.php untuk keperluan koneksi, kalian bisa copy syntax berikut:
- Buat file class Shortener.php untuk mengelola koneksi sereta select,update dan generate code, kalian bisa copy syntax berikut:
- Buat file shorten.php untuk menerima data post dari file index, kalian bisa copy syntax berikut:
- Buat file redirect.php untuk menjalankan link pada saat di click, kalian bisa copy syntax berikut:
- Buat file .htaccess untuk memparsing data dari redirect.php, kalian bisa copy syntax berikut:
<?php
session_start();
?>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8" />
<title>URL Shortener</title>
<link rel="stylesheet" href="css/global.css">
</head>
<body>
<div class="container">
<h1 class="title">Shorten a URL</h1>
<?php
//session untuk menampikan url hasil generate
if(isset($_SESSION['feedback'])){
echo"<p>{$_SESSION['feedback']}</p>";
unset($_SESSION['feedback']);
}
?>
<form action="shorten.php" method="post">
<input type="url" name="url" placeholder="Enter a URL here" autocomplete="off" required>
<input type="submit" value="Shorten">
</form>
</div>
<footer>Created by: I Gede Depri Pramana</footer>
</body>
</html>
Ket: pada file index diatas ada Session yang akan digunakan untuk menyimpan data pada saat kita tekan post
body {
font: 0.9em Tahoma, Sans-serif;
}
.title{
font-weight: normal;
}
.container{
width: 100%;
max-width: 600px;
text-align: center;
margin: 0 auto;
margin-top: 15%;
}
input{
padding: 10px;
background-color: #fff;
border: 1px solid #ccc;
margin: 0;
}
input[type="url"]{
width: 300px;
}
footer{
bottom: 0px;
right: 0px;
padding: 20px;
position: fixed;
width: 100%;
z-index: 1000 !important;
text-align: center;
}
CREATE TABLE IF NOT EXISTS `links` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`url` varchar(255) NOT NULL,
`code` varchar(12) NOT NULL,
`created` datetime NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=100000005 ;
<?php
// Define link server
// Shorten adalah nama folder kalau sudah online bisa di hapus jadikan http://'.$_SERVER['SERVER_NAME']
// jadi link yang di hasilkan menjadi http://www.domainkalian.com/ahhskq
define ("SERVER", 'http://'.$_SERVER['SERVER_NAME'].'/shorten');
// Define database server
define("DBSERVER",'localhost');
// Define database username
define("DBUSER",'root');
// Define database password
define("DBPASS",'');
// define database name
define("DBNAME",'db_shorten')
?>
<?php
require_once'class/Config.php';
class Shortener{
protected $db;
public function __construct(){
$this->db = new mysqli(DBSERVER,DBUSER,DBPASS,DBNAME);
}
protected function generateCode($num){
//generate code berjumlah 6 digit.
return base_convert($num, 10, 36);
}
public function makeCode($url){
$url =trim($url);
//Di gunakan untuk memfilter url yang dimasukan
if(!filter_var($url, FILTER_VALIDATE_URL)){
return '';
}
$url = $this->db->escape_string($url);
//check url jika sudah ada
$exists = $this->db->query("SELECT code FROM links WHERE url='{$url}'");
if($exists->num_rows){
return $exists->fetch_object()->code;
}else{
$insert = $this->db->query("INSERT INTO links (url,created) VALUES ('{$url}',NOW())");
//generate code by id
$code = $this->generateCode($this->db->insert_id);
///Update
$this->db->query("UPDATE links SET code ='{$code}' WHERE url='{$url}'");
return $code;
}
}
public function getUrl($code){
$code = $this->db->escape_string($code);
$code = $this->db->query("SELECT url FROM links WHERE code = '{$code}'");
if($code->num_rows){
return $code->fetch_object()->url;
}
return '';
}
}
?>
<?php
session_start();
require_once'class/Shortener.php';
$s = new Shortener;
if(isset($_POST['url'])){
$url = $_POST['url'];
if($code=$s->makeCode($url)){
$_SESSION['feedback']="Generated: Your short URL is:
<a href=\"".SERVER."/{$code}\">".SERVER."/{$code}</a>";
}else{
$_SESSION['feedback'] = "Tolong masukan link URL yang benar !!!";
}
}
header("location: index.php");
?>
<?php
require_once 'class/Shortener.php';
if(isset($_GET['code'])){
$s= new Shortener;
$code= $_GET['code'];
if($url= $s->getUrl($code)){
header("Location: {$url}");
die();
}
}
header("Location: index.php");
?>
RewriteEngine On
RewriteRule ^([a-z0-9]+)$ redirect.php?code=$1
Hasil Akhirnya akan seperti berikut:
- Pertama masukan url contoh : http://www.mytutorialswebsite.com/2014/02/instalasi-laravel-versi-4.html
- Setelah di submit akan mendapatkan link : http://localhost/shorten/1njchx , jika link yang sudah di generate lagi di masukan akan mendapatkan link yang sama pada saat generate pertama
- Data yang sudah dimasukan akan di simpan di dalam database bisa di lihat capture berikut:
Salam Hangat,
Depri Pramana
63 komentar
bagus mas,
keep up :)
Masukan lewat PHPmyadmin nya mas, seperti dengan localhost. di Import.
caranya lengkap banget gan tapi ane masih harus belajar banyak, maklum newbie :D
Ok Gan silakan belajar, Maap belum sempet2 update blog.
ga work ketika di uplod ke hosting.
Not found terus
paadahal .'/shorten' udah dihapus
Oke sory om, sudah bisa.
tapi pertannyaan saya apakah generateCode nya ga bisa bervariasi(Ramdom)?
soalnya code return base_convert($num, 10, 36); cuma blakangnya saja yang berbeda
misal "1jhpllq" link ke dua jadi "1jhpllt" .
mohon pencerahan
<?php
function RandomString()
{
$characters = ’0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ’;
$randstring = '';
for ($i = 0; $i < 10; $i++) {
$randstring = $characters[rand(0, strlen($characters))];
}
return $randstring;
}
RandomString();
echo $randstring;
Silakan pakai kode diatas
Mantap....caranya lengkap banget gan tapi ane masih harus belajar banyak, maklum newbie.
Gan, mau nanya utk email servernya apa bisa digunakan utk receive dan sending Tanpa domain atau email lain...?
Mantap....caranya lengkap banget gan tapi ane masih harus belajar banyak, maklum newbie.
Gan, mau nanya utk email servernya apa bisa digunakan utk receive dan sending Tanpa domain atau email lain...?
mantab kumplit,
Thanks Gan, Selalu kemarin gan
bisa gak kalau email ini di pakai untuk kirim dan menerima ke gmail atau yahoo
Bisa aja Gan, Tinggal Tambah kan perintah
if(isset($_POST['url'])){
$url = $_POST['url'];
if($code=$s->makeCode($url)){
$_SESSION['feedback']="Generated: Your short URL is:
<a href=\"".SERVER."/{$code}\">".SERVER."/{$code}</a>";
$name =$_POST['name'];
$email =$_POST['email'];
$subject ='Generate Short Link';
$to =$email;
$link = <a href=\"".SERVER."/{$code}\">".SERVER."/{$code}</a>";
$headers = "MIME-Version: 1.0" . "\r\n";
$headers .= "Content-type:text/html;charset=iso-8859-1" . "\r\n";
// More headers
$headers .= 'From: mytutorialswebsite.com <noreply@mytutorialswebsite.com>'."\r\n" . 'Reply-To: '.$name.' <'.$email.'>'."\r\n";
$headers .= 'Cc: admin@yourdomain.com' . "\r\n"; //untuk cc lebih dari satu tinggal kasih koma
@mail($to,$subject,$message,$headers);
if(@mail)
{
echo "Email sent successfully !!";
}
}else{
$_SESSION['feedback'] = "Tolong masukan link URL yang benar !!!";
}
}
mysql -u root -p
Password :
Error...
passwordnya yang mana???
123456 sama password root salah
mysql -u root -p
Password :
Error...
passwordnya yang mana???
123456 sama password root salah
// Define database server
define("DBSERVER",'localhost');
// Define database username
define("DBUSER",'root');
// Define database password
define("DBPASS",'');
// define database name
define("DBNAME",'db_shorten')
Di setting dulu user dan password nya di bagian ini.
Terimakasih, sangat bermanfaat.
Gan Kok Pas Bagian shorten.php Error?
Nih SSnya : http://i.imgur.com/0r1YVhq.png
itu error nya di class config nya yang gk ketemu, coba liat struktur dari folder nya.
Mantap gan, thanks untuk bimbingan nya, semoga ilmu ente makin bertambah dengan saling berbagi ilmu ke yang lain.
Mantap gan, thanks untuk bimbingan nya, semoga ilmu ente makin bertambah dengan saling berbagi ilmu ke yang lain.
Extensinnya pakai apa itu
extensinnya pakai apa ya?
Halo Muhammad,
Extensi apa yah? Kali ini tidak extensi cuma pakai oop aja Pak.
Gan kalau panjang karakter bisa di rubah gak jadi 1000000
ane submit contoh :
contohdomain.com/8e7c6yOlGETaB8WWBxdJH_qWaZgxR_2SWAAr5_unqdv2Ym5-NrB4-7mn3dNgX5NwSA7vVJglmskGCS0u3IX52EBV9W1ktjHfv7DZq_baMNn0Frr3HW4cqv8j3k5bS0zNLplG28G3euK8Rx173q0K0LFWefbCNev_YYqZ0W579xvGKlQtXdJlxX66sNyHhXNxvifNm77zgqGGI2sF0yQ176Hlz-gGjRngjy_Hnzs-gtQBUD4G3ad8Xd3XLHT_CdfKs9gmJPzNIlaq0E-jYyO24LZoArF85dkXsEJMtJSCrwfrrWGNuYLONufP_oUy12-8eoZEDMpBEOnEkwIbXhr2MfJWJq34-Dk0rTZlJZ7GldFw0bsRabHvE9pmqYWojt_dO4nRKqd6h04OZRp842yzYk4WggT4o2t68N97qT8MAjIfFTRsmfhABYpGwFpYRCmobrDlODAmRjl4NyjkYfNk6PQWysN17b8gVeRW_JyZt91GYt-cr2Q7pU-MQnvHDlA1M8HA_5sezyZzhLMocLRi9fCFXx2K0QN_R-ALidtirI6nCuMBqPywWQZdbPBWLkW_T0i6QDA9yWhkCwtSEzbFMKAG_ecBIU
itu balik lagi ke index, gimana agar bisa jalan ya ?makasih
protected function generateCode($num){
//generate code berjumlah 6 digit.
return base_convert($num, 10, 36);
}
Bosa aja di modify code ini aja. tapi kalo panjang seperti itu gak short URL dukz namanya
maksud nya link diatas itu source linknya, nah ini mau di short malah balik lagi ke index gan
Itundi database nya di bagian URL kan pakai type data varchar 255 ganti pakai text aja.
sip gan udah bisa thanks ya ,,,,
Sip gan
limitan queue nya mana om.. ?
Limited queue yg bagaimana @riswan
gan, setelah ane short dan upload ke hosting. shorten.php blank dari short index
Ada Screen shot nya gk gan. Seharusnya sih gk blank gan
Nanya bro, ane udah setting parentnya tapi di winbox kok gak keliatan nestednya ya ?
Nanya bro, udah ane setting parentnya kok gak keliatan nestednya di winboxnya ?
Thx
Ntaps jiwa dah bang keren abis blognya semoga tmbh keren dh
gan ini gak support php versi 5.6 ya ? waktu nyoba malah blank pas generate url nya
elum sempat coba di versi 5.6 gan, biasanya ada error kalo gk support. coba di inspect element.
Materi Arsitektur Komputer terlengkap, dapat dijumpai disini http://mycomputerarchitecture.blogspot.co.id/
Ini sangat membantu saya dalam belajar
Masih not found bang :(
Ini untuk mangle nya mana gan? Thanks atas blesannya
Maksudnya buat apa bagi banwid lokal dan internasional segala yaa?? Bukanya cukup itu bagi banwid brwosing dan game saja
mantull nih min
alat pemisah lcd
makasih min
solder
makasih banyak mkin
power supply hp
Hahaha ending yg bagus wkekwkw
ok min, makasih
solder uap
makasih banyak sudah share min, makasih banyak ilmunya
alat pemisah lcd
maaf, msih newbie.. itu settingnya harus per/client? ga bisa misal targetnya 192.168.1.2 sampai 192.168.1.253? saolnya IP di warnet saya ngacak.
Ip yg dimagsud apa? kalo access nya buat IP server nya saja mas
mantap gan, makaish banyak sudah share
pemotong sim cut
makasih banyak ilmunya min
solder uap
siap min
makasih min
Alat pemisah lcd
mantap min
Terima kasih
:)
8-) x-) (h)
Silakan Berikan Komentar anda yang bisa mendukung blog ini, komentar anda saya harapkan, terima kasih
EmoticonEmoticon