Membuat Aplikasi Penyingkat URL Dengan Laravel

JS NEWS Database Di Framework Laravel datang dengan fitur pengolaan database yang lengkap. Ia membungkus perbedaan sistem manajemen database sehingga transparan dari sisi developer.

Anda dapat menggunakan mysql, postgreSQL, sqlite,mssql dan lain – lain. Satu sistem manajemen database kadang membuat perintah sql yang tidak ada perintah sql baku guna menyulitkan developer ketika membuat sistem yang mampu mendukung bnayak sistem manajemen database laravel.

Eloquent ORM

Eloquent adalah object – relational mapping ( orm ). Ia memetakan record pada sebuah tabel seolah – olah sebuah objek. Meski banyak yang mendapatkan apakah orm benar – benar mengacu pada praktik pemrograman oop yang baik, tetapi tetap saja fitur ini cukup menarik. Orm memungkinkan anda manipulasi record di databasa tanpa menentuh perintah sql secara langsunng.

Desain Aplikasi Penyingkat URL Tentang Aplikasi

Aplikasi ini adalah aplikasi web serupa dengan aplikasi penyingkat url seperti https://goo.gl atau https://bit.ly. Anda akan menggunakan alamat http://short.url untuk aplikasi ini. namun domain ini tidak benar – benar terdaftar dan hana digunakan selama pengembangan. Aplikasi ini mempunyai dua tugas, yaitu :

  1. Menghasilkan url singkat dari url aktual yang diberikan Jika url aktual ternyata sudah tersimpan di database, url singkat diambil dari database.
  2. Menerjemahka url singkat yang sebelumnya dihasilkan di no. 1 kembali menjadi url aktual.

Jika aplikasi diakses dengan alamat url http://short.url maka aplikasi akan menampilkan halaman utama berisi form untukmenyingkat url. Bila aplikasi diakses dengan alamat http://short.url/[6 karakter kode] ( misal http://short.url/k1ckes ) maka aplikasi akan menerjemahkan 6 karakter kode tersebut menjadi alamat url aktual, dan selanjutnya mengarahkan request ke url aktual tersebut.

Route

Anda akan membutuhkan tiga route, yakni :

  • Router get untuk alamat http://short.url yang berfungsi menampilkan halaman utama dan form isian untuk menyingkat
  • Router post untuk alamat http://short.url berfungsi untuk memproses form isian permintaan url yang singkat.
  • Router get untuk alamat http://short.url[6 karakter kode] yang berfungsi menerjemahkan url singkat menjadi url aktual.

Controllers

Siapkan dua controller, yaitu :

  • Shorten url controller yang berfungsi untuk menampilkan halaman utama dan form isian dan memproses form isian permintaan pembuatan url
  • Translate url controller berfungsi untuk menerjemahkan url singkat menjadi url aktual.

Struktur Database dan Tabel

Anda akan menggunakan mysql untuk mengelola database. Anda akan membuat sebuah user bernama urlshort. Database ini berisi sebuah tabel bernama urls yang akan menyimpan catatan url aktual dan url singkat. Tabel urls akan terdiri atas tiga buah field, yakni :

Short_url

Field ini adalah primary key bertipe VARCHAR dengan panjang 6 karakter alfabet ( huruf besar + huruf kecil ) dan numerik. Total permutasi yang mungkn dihasilkan adalah 62!(62-6)!=44, 261, 653, 680 atau dengan kata lain sekitar 44 miliar lebih url dapat disimpan. Jika anda bingung, angka 62 berasal dari 26 karakter huruf kecil + 26 karakter huruf besar + 10 karakter numerik 0-9. Jadi kode aaaaaa akan berbeda dari AAAAAA.

url_hash

field ini adalah indeks unik bertipe VARCHAR dengan 32 karakter yang akan mencatat MD5 hash url aktual. Anda akan menggunakan nilai hash untuk membandingkan apakah url sudah ada di tabel atau belum.

Actual_url

Field ini mencatat url aktual bertipe TEXT.

Listing 1 berisi perintah sql untuk menciptakan tabel urls dengan struktur seperti yang sudah disebuatkan di atas.

Listing 1

CREATE TABLE urls (

Short_url VARCHAR ( 6 ) NOT NULL PRIMARY KEY,

url_hash VARCHAR ( 32 ) NOT NULL UNIQUE KEY,

actual_url TEXT NOT NULL

Mungkin anda bertanya, kenapa harus repot menyimpan nilai hash url? Kenapa tidak menjadikan url sebagai indeks lalu menggunakannya untuk membandingkan url? Mysql membatasi ukuran indeks. Pada tabel berjenis myisam batasannya adalah 1000 byte, sedangkan pada innoDB sebesarr 767 byte. Data url bisa lebih dari 1000 atau 767 karakter.

Jika kolom menggunakan karakter satu byte seperti latin 1 ini sudah sama dengan maksimum ukuran indeks maka indeks harus dibatasi agar indeks dapat dibuat. Jika indeks dibatasi, ada peluang hasil perbandingan menjadi tidak akurat. Dengan menggunakan md5 hash, url panjang dapat dibandingkan dengan menggunakan 32 karakter indeks.

Model

Anda akan membuat sebuah model bernama ul yang akan mengacu pada record pada tabel urls. Jika nama tabel tidak ditentukan, eloquent orm mengasumsikan nama tabel adalah bentuj jamak dalam bahasa inggris dari nama model. Jadi, bila nama model adalah url maka nama tabel yang terkait adalah urls.

Validasi

Input dari user diberikan pada saat meminta pembuatan url singkat dan menjadi url aktual. Anda akan membuat dua turunan form request ( App\Http\Requests\Request) dan mengerjakan validasi di sana. Form request anda, yaitu:

  • ShortenUrlRequest berfungsi melakukan validasi data masukan dari user ketika memproses form isian pembuatan url Url aktual akan divalidasi dengan aturan validasi bawaan laravel, yakni url. Aturan validasi ini menggunakan fungsi filter _var ( ) yang akan memeriksa keabsahan url berdasarkan sintaks yang ditentukan oleh rfc 2396. Oleh karena itu, pengecekan url yang menggunakan karakter internasional akan gagal meskipun sejatinya url tersebut valid. Ini bisa diatasi dengan membuat aturan validasi sendiri. Namun, untuk menyederhanakan masalah, anda hanya fokus pada url dengan karakter huruf alfabet latin.
  • TranslateUrlRequest ini berfungsi untuk melakukan balidasi kode url secara singkat. Kode url singkat merupakan kode alfa numerik sebanyak 6 karakter.

View

Anda hnaya akan membutuhkan satu view untuk menmapilkan halaman utama yang beris form isian pembuatan url singkat. Anda akan menggunakann bootstrap ( http://getbootstrap.com )

Hal – Hal Yang Diperlukan

  • PHP > 5.5.9
  • Laravel 5.2
  • Bootsrap 3.3.6

 

Instalasi Laravel

Buka shell dari dalam home directory user, jalankan perintah seperti pada Listing 2.

Listing 2

$ composer create-project laravel / laravel .

Perhatikan apabila karakter titik pada perintah di atas menyebabkan laravel akan di – install pada directory yang sedang aktif. Jadi, pastikan koneksi internet anda bekerja dan tunggu sampai proses instalasi seleseai.

Mengatur Virtual Host

Jika anda menggunakan apache, tambahkan < virtualhost >ke dalam konfigurasi apache seperti contoh listing 3 berikut. Jika anda menggunakan ubuntu, masuk sebagai root dan buat sebuah file baru pada directory / etc/ apache2/sites-available misal, bernama urlshort.conf lalu isi dengan kode seperti pada listing 3. Kemudian buat symlink / etc/ apache2/sites-enabled/urlshort.conf yang mengacu ke file urlshort.conf tersebut atau menggunakan program bantuan a2ensite. Selanjutnya restart ulang apache.

Listing 3

<VirtualHost * .80>

ServerName short .url

ServerAlias www.short.url

DocumentRoot /home/ urlshort/ public

 ErrorLong $ {APACHE_LOG_DIR }/urlshort-error.log

CustomLog ${APACHE_LOG_DIR }/urlshort-access .log combined

<Directory “/home/ urlshoort/ public”>

Options indexes FollowSymlinks

AllowOverride All

Require all granted

</Directory>

</VirtualHost>

 

Mengatur Alamat IP Domain

Selama pengembangan anda akan menggunakan alamat http://short.url. Domain ini tidak benar – benar terdaftar sehingga untuk menggunakannya, tambahkan ip untuk domain tersebut di file hosts. Jika anda menggunakan linux biasanya lokasinya di / etc/ host atau bila menggunakan windows ada di %windir\ system32\ drivers\ etc\ hosts. Tambahkan baris berikut ( listing 4 ) pada file hosts dan atur ip sesuai mesin di mana lokasi aplikasi web diletakkan.

Listing 4

127.0.0.1 short.url

 

Mengatur Konfigurasi Database

Ketika anda meng – install laravel, pada directory aplikasi akan diciptakan file konfigurasi bernama .env. Jika anda tidak menemukan file ini copy dan namai ulang file bernama .env.example yang ada pada directory yang sama. Ubah nilai DB_HOST, DB_USER-NAME, DB_PASSWORD dan DB_DATABASENAME sesuai konfigurasi yang anda miliki.

Implementasi Struktur Database dan Tabel

Sebenarnya struktur tabel bisa diciptakan tanpa bantuan tool dari laravel. Namun , untuk memudahkan pengembangan, anda akan menggunakan fitur database migration laravel. Anda dapat menggunakan tool artisan ( listing 5)

Listing 5

Php artisan make :migration create_urls_table

 Perintah pada listing 5 menyebabkan artisan menciptakan file bernama create_urls_table.php dalam directory [direktori aplikasi ] / database / migrations. Dalam file ini terdapat deklarasi kelas bernama createrUrlsTable. Anda tidak harus menggunakan artisan karena dapat saja menciptakan file create_urls_table.php ini secara manual dan melektakkannya dalam directory [ direktori aplikasi ]/ database/migrations lalu memanggil composer dumpautoload. Cara pertama menggunakan artisan jauh lebih mudah karena file autoload otomatis dibuat.

Buka file create_urls_table.php dan lengkapi kodenya sehingga menjadi seperti listing 6. Kode pada metode up ( ) akan dipanggil ketika migrasi dikerjakan dan down ( ) dipanggil ketika migrasi dibatalkan ( rollback ).

Dalam metode up ( ), panggil schema : : create ( ) untuk menciptakan tabel bernama urls dengan struktur tabel sesuai rancangan. Pada metode down ( ), anda kembalikan komdisi struktur tabel seperti sebelumnya up ( ) dipnaggil, yakni menghapus tabel urls.

Listing 6

<?php

 Use Illuminate \ Database \ Schema \

Blueprint ;

Use Illuminate \ Database \ Migrations \

Migrations ; 

Class CreateUrlsTable extends Migration

{

      /**

            * run the migrations.

            *

            *@return void

            */

            Public function up ( )

            {

                        Schema : :create ( ‘urls’ , function ( Blueprint $table ) {

                                    $table – >string ( ‘short_url’ , 6 ) – >primary ( ) ;

                                    $table – >string ( ‘ url_hash ‘ , 32 ) – >unique ( ) ;

                                    $table – >text ( ‘ actual_url ‘);

                        } )

            }

 

            /**

            * reverse the migrations .

            *

            *@return void

            */

            Public function down ( )

            {

                        Schema ::drop ( ‘urls’) ;

            }

}

 

Implemtasi Model

Hanya dibutuhkan satu model yang anda namakan url, dan diturunkan dari tipe model ( listing 7 ). Anda akan mengunakan namespace App \ Models untuk kelas url. Karena nama tabel adalah bentuk jamak nama kelas url maka anda tidak perlu menentukan secara eksplisit nama tabel yang anda kaitkan dengan model ini.

Jika tidak ditentukan, primary key siamsumsikan bernama id bertipe integer yang otomatis bertambah nilainya ( auto increment ). Karena nama field primary key tabel urls bukan id, anda perlu memberitahukan dengan mengatur $prima-ryKey sama dengan short_url. Anda juga tidak menggunakan timestamp sehingga perlu mengeset $timestamp = false. Anda juga harus mengatur $incrementing =false untuk memberitahukan bahwa foeld primary key bukan auto increment.

Listing 7

<?php namespace App\ Models;

 Use Illuminate\Database|Eloquent\Model;

Class Url extends Model

{

Protected $primaryKey+’short_url’ ;

            Public $timestamps = false ;

Public $incrementing = false ;

}

 

Implementasi Route

Ubah isi file app\Http\routes.php sehingga menjadi seperti listing 8. Laravel 5.2 mengenalkan apa yang disebut sebagai grup middleware ( istilah middleware di laravel adalah kode program yang dapat digunakan untuk menyaring http request ). Grup middleware adalah serangkaian middleware yang diterapkan terhadap satu atau lebih router.

Sebelum laravel 5.2, anda menerapkan satu atau lebih middleware terhadap masing – masing route. Laravel 5.2 mengelompokkan middleware untuk session, cookie dan perlindungan csrf ( cross – site request forgery ) menjadi satu grup middleware bernama web ( lihat app\\Http\Kernel.php).

Untuk route/ anda membutuhkan session , cookie dan perlindungan crsf sehingga kedua route anda letakkan dalam grup middleware web. Route ini beri nama home. Untuk route/ {short_url} sebenarnya tidak membutuhkan session maupun crsf namun agar mudah maka dimasukkan juga.

Listing 8

<?php

 Route ::group ( [‘middleware’ = > [‘web ‘ ] ] , function ( ) {

            Route ::get ( ‘ / ‘ , [ ‘as’ = > ‘ home ‘ , ‘uses’ = > ‘shortenUrlController@index’] );

            Route ::post(‘ / ‘ , [‘as’ = > ‘home’, ‘uses’ = > ‘shortenUrlController@addurl’] );

            Route ::get (‘ / { short_url }’ , ‘translateUrlController@index’);

} );

 Implementasi Kontroler

Kontroler ShortenUrlController

Source code kontroler shortenUrl – controller dapat anda temukan dalam direktori app\ http \ controllers. Ia memiliki dua metode publik yakni index ( ) dan addUrl ( ).

Metode index ( ) milik kontroller shortenUrlController ( litsing 9 )akan dipanggil ketika user membuka alamat http://short.url ( lihat listing 8) dengan http get. Di metode ini, kita muat view bernama shortenurl ( / home / urlshort / resources / view / shortenurl.blade.php ) dan mengisi variabel $short_url dan $actual_url bila ada di session. Selanjutnya view tersebut menjadi output aplikasi.

Listing 9

Public function index (request $request )

{

            Return view ( ‘ shortenurl ‘ ,

                        [

                        ‘ short_url ‘ => $request ->session ( ) ->get (‘short_url’),

                        ‘ actual_url ‘ =>$request ->session ( ) ->get ( ‘actual _url’)

                        ] ) ;

}

 

Metode addurl ( ) milik shortenurl – controller ( listing 10 ) dipanggil ketika alamat http://short.url diminta dengan http post yakni ketika user mengirim permintaan pembuatan url singkat. Kita baca isi variabel url yang dikirim dari form isian. Lalu kita uji apakah md5 hash dari url aktual ada di database. Jika ada, data dari database kita kembalikan ke halaman utama melalui session. Jika tidak ada ( $a_url bernilai null ), kita panggil metode addurltodb ( ) untuk menambhakna url aktual ke database. Lalu mengembalikan record yang baru ditambahkan ke halaman utama.

Listing 10

Public function

Addurl ( shortenUrlRequest $request ) {

            $actual_url = $request – >get ( ‘ url ‘ ) ;

            $a_url = url : :where ( ‘ url _ hash’, md5 ( $actual _url ) )

                        ->select (‘short_url’)

                        ->first ( );

            If ( !$a_url ) {

                        $a_url = $this – > addurltodb ($actual _url );

            }

  Return redirect ::route (‘home’) – > with ( ‘short_url’ , $a_url ->short_url )

                                                                   – > with ( ‘$actual_url’ , $actual _url );

            }

 

Metode addurltodb ( ) milik shortenurl controller ( listing 11 ) membuat instance url baru, mengisinya primary key dengan data string random sebanyak 6 karakter, mengisi field url _hash dengan nilai hash md5 url aktual dan mengisi actual _url dengan data url aktual dan menyimpannya ke database. Selanjutnya mengembalikan instance url sebagai nilai kembali metode.

Listing 11

Private function addurltodb ( $actual_url ) {

            $url = new url ( );

            $url – >short_url = $this – >generateran domstring ( 6 ) ;

            $url – > url_hash = md5 ( $actual _url ) ;

            $url – >actual_url = $actual _url;

            $url – >save ( ) ;

            Return $url;

}

 

Metode generaterandomstring ( ) ( listing 12 ) yang dipanggil dalam metode addurltodb ( ) pada dasarnya hanya memilih 6 karakter secara acak darai sederetan karakter yang tersedia.

Listing 12

Private function generaterandomstring ( $length = 10 ) {

            $characters = ‘0123456789’ .

                                    ‘abcdefghijklmnopqrstuvwxyz’ .

                                    ‘ABCDEFGHIJKLMNOPQRSTUVWXYZ’ ;

            $characterslength = strlen ( $characters ) ;

            $randomstring = ‘ ‘ ;

            For ( $i = 0 ; $i < $length ; $i++ ) {

                        $randomstring .=

            $characters [ rand ( 0 , $characterslength – 1 ) ] ;

            }

            Return $randomstring ;

}

 

Output ControllerShorten urlController adalah seperti Gambar 2.

Controller TranslateUrlController

Controller TranslateUrlController ( listing 13 ) hanya terdiri atas satu metode publik bernama index ( ) yang akan dipanggil ketika alamat http://short.url/[short_url] diminta dengan http get. Kode url singkat ( short_url ) yang dilewatkan, anda ambil dan gunakn untuk memcari url aktual yang tersimpan di database. Bila tidak ditemukan kecocokan, metode findOr-fail ( ) akan membandingkan model Not – foundException yang selanjutnya akan menghasilkan pesan kesalahan http 404. Jika ditemukan maka arahkan request menuju url aktual.

Listing 13

<?php namespace App\Http\Controllers;

 

Use App \ Models \ Url ;

Use App \ Http \ Requests \

TranslateUrlController extends Controller

{

            Public function index (TranslateUrl Requests $requests , short_url   ) {

                        $url = url : :select ( ‘actual _url’ ) – >findorfail ($short_url   ) ;

                        //sampai disini url sudah pasti ada return redirect ( $url – >actual_url );

                        }

}

Implemtasi Validasi

Validasi dikerjakan menggunakan form request. Oleh karena itu, data yang diterima dan dimanupulasi oleh kode pada controller diasumsikan telah tervalidasi dan aman.

Validasi Data URL Aktual

Ketika memproses permintaan pembuatan url singkat, anda hanya butuh satu data masukan, yakni url aktual. Data iniwajib ada dan berbentuk url. Untuk menyederhanakan masalah, anda hanya mengunakan aturan validasi bawaan laravel, yakni url. Aturan validasi ini hanya mampu mendeteksi url yang menggunakan karakter latin. Url dengan karakter internasional akan gagal divalidasi meskipun url-nya benar.

Pada listing 10, anda melewatkan form request bertipe shortenurlrequest ( di directory app\ http \ request ). Fitur dependency injection milik laravel akan menyisipkan eksekusi kode kelas shortenUrlRequest sebelum masuk ke metode addUrl ( ) milik shortenUrlController. Pada listing `14, lengkapi metode authorize ( ) dengan kode yang mengembalikan nilai booleantrue agar request dapat diteruskan. Selanjutnya, metode rules ( ) anda inginkan, yakni untuk memvalidasi url aktual.

Bila data url aktual tidak ada atau tidak berupa url, addurl ( ) tidak akan pernah dipanggil dan request akan diarahkan ke halaman sebelumnya dengan pesan kesalahan seperti Gambar 3.

Listing 14

<?php namespace App\Http|Requests;

 

Use App\Http|Requests\Request;

/**

*Request untuk controller

shortenUrlController

*

*@author zamrony P. Juhara

*/

Class shortenUrlRequest extends Request

{

            /**

            *tentukan apakah user boleh akses ,

            *

            *@return bool

            */

            Public function authorize ( )

            {

                        Return true;

            }

 

            /**

            *Ambil aturan validasi

            *

            *@return array

            */

            Public function rules ( )

            {

                        Return [

                                    ‘url’ = > ‘ required | url ‘

                        ] ;

            }

}

 

Validasi Kode URL Singkat

Metode index ( ) milik translateUrl-Controller juga akan anda sisipkan kode untuk melakukan validasi kode url singkat menggunakan form request translateUrlRegust ( listing 15 ). Kode url singkat adalah 6 karakter alfabet numerik. Laravel sebenarnya juga menyediakan aturan validasi bawaan untuk mneguki apakah kode url singkat ada di database aturan exists. Sengaja hal tersebut tidak anda gunakan karena tetap dibutuhkan data url aktual. Jika digunakan, anda akan mengerjakan dua buah request ke database untuk record yang sama, dan semestinya cukup satu kali, yakni pengujian apakah kode url singkat ada ( dengan aturan validasi exists ). Apabila ada, anda akankembali melakukan request ke database untuk mengambil data url aktual.

Listing 15

<?php namespace App\Http|Requests;

 

Use App\Http|Requests\Request;

//use input ;

Use illuminate\ Support \ Facades \ Input;

 

/**

            *request untuk controller

translateUrlController

            *

            *@author administrator

            */

Class translateUrlRequest extends

Request

{

                        /**

                        *kita butuh override all ( ) karena isu

                        *terkait validasi parameter route

                        *parameter route / { short _ url }

Tidak akan tersedia dalam

                        *request secara otomatis sehingga harus diisi manual

                        *@return type

                        */

                        Public function all ( )

                        {

                                    $request = input : :all ( );

                                    $request [‘ short_url ‘] = $this – >route (‘ short_url ‘) ;

                                    Return $request ;

                        }

 

                        /**

                        *Determine if the user is authorized to make this request .

                        *

                        *@return bool

                        */

                        Public function authorize ( )

                        {

                                    Return true ;

                        }

 

                        /**

                        *ambil aturan validasi

                        *

                        *@return array

                        */

                        Public function rules ( )

                        {

                                    Return [

                                                ‘short_url’ = > ‘required | string | alpha_num | size :6’ ] ;

                        }

}

 

Implemtasi View

Anda hanya perlu sebuah view, yakni bernama shortenurl.blade.php pada directory resources / views. View ini akan dimuat dalam metode index ( ) milik shortenUrlController ( Listing 9 ).

Sementara bootsrap digunakan untuk memoles tampilan aplikasi. Oleh sebab itu, tambahkan file css milik bootstrap di bagi < head > ( listing 16 ) dan file javaScript bootstrap dan jquery sebelum </body> ( listing 17 ).

Listing 16

< meta name= “ viewport”

Content =”width=device-width, initial-scale=1”>

<linkrel=“stylesheet”href=http://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css”>

 

Listing 17

< script src=https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js> </script>

<scriptsrc=http://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/js/bootstrap.min.js> </script>

 

Sisipkan juga kode untuk menampilkan pesan kesalahan validasi dan status keberhasilan yang mungkin ada ketika memproses pembuatan url singkat ( listing 18 ). Perhatikan bahwa { { . .} }, @if, @endif, @foreach maupun @end-foreach adalah perintah untuk blade templating engine yang akan diterjemahkan menjadi kode php echo, if, endif, foreach dan endforeach. Anda tidak wajib mengggunakan blade.

Jika tidak ingin menggunakan blade dan hanya kode php, namai ulang file shortenurl.blade.php menjadi shortenurl.php. Setiap view yang menggunakan nama blade.php diasumsikan sebagai template blade yang akan di terjemahkan menjadi kode php. Kemudian hasilnya disimpan di storage/framework/views. File yang ada di sini adalah file view yang akan dimuat. Penerjemahan dari template blade ke kode php hanya dikerjakan ketika file view berubah.

Listing 18

@if (count ( $errors ) > 0 )

            <div class =”alert alert – danger “>

<ul>

@foreach ( $errors – > all ( ) as $error )

            < li > { { $errors } } < / li >

@endforeach

</ul >

            < / div >

@endif

@if ( isset ( $short_url ) & & isset ( $actual_url ) )

            < div class = “ alert alert – success “>

            Selamat ! Anda berhasil menyingkat

URL < strong > { { substr ( $actual_url, 0, 100 ) } } { {   ( strlen ( $actual_url )>100 ) ? ‘ . . . ‘ : ‘ ‘ } } < / strong >

Menjadi < strong > { { url ( ‘ / ‘ ) } } / { { $short_url } } < / strong >

            < / div >

@endif

 Bagian selanjutnya adalah menampilkan form isian pembuatan url singkat ( listing 19 ). Anda perlu menambahkan data form bernama _ token dengan nilai yang diambil dari fungsi bantuan csrf_token ( ) untuk melindungi aplikasi dari serangan cross – site request forgery. Tanpa file bernama _ token, middleware csrf verify akan membatalkan request. Teks masukan wajib diberi nama url agar sesuai dengan aturan validasi yang sudah anda siapkan ( listing 14 ).

Listing 19

<form role =” form”

            Action=” { {

Action ( ‘ shortenUrlController@addUrl ‘ ) } }”

            Method=”post”>

            <input type=”hidden” name=”_token” value=” { { crsf_token ( ) } }” >

                <div class =”form-group”>

            <label for =”url”> URL: </label>

            < input

            Type=”text”

            Class=”form-control”

Id=”url”

Name=”url”

Placeholder=”Contoh: http://juhara.com

            Value=”{ { old ( ‘url’ ) } } “ >

            < / div >

            < button >

                        Type= “submit”

                        Class=”btn btn – primary”>Persingkat < / button >

< / form >

 

Isu Yang Perlu Dipikirkan

Proses membuat kode url singkat dikerjakan dengan menghasilkan string 6karakter yang masing – masing dipilih secara acak ( listing 12 ). Tidak menutup kemungkinan bahwa kode url singkat yang dihasilkan ternyata sudah digunakan. Di aplikasi ini, kejadian duplikat primary key belum dicek.

Aplikasi uga tidak melakukan pengecekan apakah yang melakukan permintaan pembuatan url singkat adalah benar – benar manusia atau program bot.

Penutup

Di tulis ini, anda telah belajar penggunaan fitur database pada framework laravel menggunakan eloquent orm, cara menambah dan mencari record di database menggunakan model termasuk juga cara membuat migrasi database yang selanjutnya menerapkan pengetahuan tersebut menjadi sebuah aplikasi penyingkat url.

 

Sumber : PCMedia 

Share Is Cool

4 thoughts on “Membuat Aplikasi Penyingkat URL Dengan Laravel

  • Pingback: Drug Rehab Near Me

  • 04/10/2020 at 05:35
    Permalink

    Your style is unique compared to ⲟther folks I have
    reɑԁ stuff fгom. Thannks for posting ѡhen yߋu’ѵe
    got the opportunity, Guess Ӏ wiⅼl just book mark this web site.

  • Pingback: generic levitra

  • Pingback: viagra

Leave a Reply

Your email address will not be published.