Menyempatkan diri untuk menulis artikel setelah sekian lama ini disibukkan dengan pekerjaan.
Saya akan berbagi bagaimana caranya membuat User Hotspot Mikrotik menggunakan PHP.Memang selama beberapa bulan belakangan ini hotspot di lingkungan kampus saya tidak menggunakan limit perclient, saya dan rekan saya lebih memilih menggunakan Queue PCQ agar penggunaan bandwidth lebih optimal dan tidak membatasi untuk aktivitas download maupun browsing, saya hanya menambahkan sedikit QoS sederhana. Tapi ternyata hal ini menimbulkan dampak lain, yaitu IDM atau download manager yang terlalu banyak mendominasi bandwidth dan tidak tertibnya penggunaan jaringan internet. Pertimbangan konfigurasi diatas saya buat agar mahasiswa lebih mudah memperoleh akses internet, tinggal terkoneksi lalu on internet.
Dan seperti biasa, kemudahan selalu berdampak lain pada keamanan, yaitu keamanan pengguna lain yang tidak kebagian bandwidth ketika ada yang menggunakan IDM :D.
Akhirnya ada sedikit ide sederhana, menggunakan login hotspot mikrotik yang di kombinasikan dengan database mahasiswa. Jadi setiap orang yang ingin menggunakan jaringan hotspot harus terdaftar dulu sebagai mahasiswa stikom-db. Kesulitan yang jelas adalah saya dan rekan-rekan harus rela untuk repot-repot membuat user hotspot satu persatu melalui mekanisme pendaftaran. Jadi mahasiswa yang ingin menggunakan hotspot harus mendaftar dulu kemudian baru dibuatkan usernya berdasarkan NIM.
Dan teknologi itu ada untuk membantu serta mempermudah pekerjaan manusia :D. Setelah browsing-browsing di internet saya menemukan API (Application Programming Interface) PHP di mikrotik http://wiki.mikrotik.com/wiki/API_PHP_class. Dan saya berpikir untuk tidak menggunakan mekanisme pendaftaran secara manual. Saya cukup membuat link pendaftaran di login hotspot lalu membuat script php sederhana yang berfungsi sebagai tempat pendaftaran, pada proses pendaftaran script php yang saya buat akan melakukan pengecekkan NIM dari mahasiswa apakah sesuai dengan NIM yang ada di bagian akademik, jika sesuai maka script akan menggunakan API untuk membuat user hotspot.
Basa-basinya selesai, masuk ke bagian koding hehehe...
Di login hotspot mikrotik yang sudah saya desain saya tambahkan link pendaftaran sebagai berikut:
<script type="text/javascript">Tentu sebelumnya domain reghotspot.stikom-db.net tersebut saya bypass/allow di bagian Walled Garden hotspot mikrotik dengan tujuan domain tersebut bisa diakses client tanpa harus login terlebih dahulu.
function PopupCenter(pageURL, title,w,h) {
var left = (screen.width/2)-(w/2);
var top = (screen.height/2)-(h/2);
var targetWin = window.open (pageURL, title, 'toolbar=no, location=no, directories=no, status=no, menubar=no, scrollbars=no, resizable=no, copyhistory=no, width='+w+', height='+h+', top='+top+', left='+left);
}
</script>
<a href="javascript:void[0]"><blink>DAFTAR LOGIN HOTSPOT</blink></a>
Untuk index.php sebagai berikut :
<?php
include "config.php";
include "api.php";
$alert = htmlspecialchars($_GET['alert']);
?>
<link rel="stylesheet" type="text/css" href="css/main.css" />
<script type="text/javascript" src="js/jquery-1.5.2.js"></script>
<script type="text/javascript">
$(document).ready(function() {
setInterval (function () {
$("#pesan_error:eq(0)").fadeOut ("slow").next ("#pesan_error");
}, 3000);
$("#fullname").focus();
$("#form1").validate({
messages: {
email: {
required: "E-mail harus diisi",
email: "Masukkan E-mail yang valid"
}
},
errorPlacement: function(error, element) {
error.appendTo(element.parent("td"));
}
});
})
</script>
<?php
if($alert != ""){
echo "<div id=pesan_error>".ucfirst($alert)."</div>";
}
?>
<div id="menu">
<b><font size="3">PENDAFTARAN LOGIN HOTSPOT STIKOM DINAMIKA BANGSA JAMBI</font></b>
<BR /><BR />
<form action="proses.php" method="post" enctype="multipart/form-data" name="form1" id="form1">
<table width="570" border="0">
<tr >
<td width="80" >Nama Lengkap</td>
<td width="260"><input type="text" name="fullname" size="43" value="" id="fullname"/>
</td>
</tr>
<tr>
<td height="33">NIM</td>
<td >
<input type="text" name="nim" id="myInput" size="43" value="" /></td>
</tr>
<tr >
<td>Password</td>
<td>
<input type="password" name="password" style="width:250px;" value="" />
</td>
</tr>
<tr >
<td>Konfirmasi</td>
<td>
<input type="password" name="cpassword" style="width:250px;" value="" />
</td>
</tr>
<tr >
<td>Email</td>
<td><input type="text" name="email" size="43" value="" />
</td>
</tr>
<tr>
<td height="34"><input type="submit" id="submit" name="Submit" value="Daftar" class="button" /></td>
<td> </td>
</tr>
</table>
</form>
</div>
Terdapat 2 file yang saya includekan pada script diatas, file config.php berisi koneksi database biasa, file api.php berisi class API PHP yang bisa didapat disini http://wiki.mikrotik.com/wiki/API_PHP_class
Lalu file proses.php sebagai berikut :
<?phpLalu aktifkan API di mikrotik yang terdapat di bagian
include "config.php";
require('api.php');
$fullname = htmlspecialchars($_POST['fullname']);
$nim = $_POST['nim'];
$passwd = htmlspecialchars($_POST['password']);
$cpasswd = htmlspecialchars($_POST['cpassword']);
$email = htmlspecialchars($_POST['email']);
if($fullname == "" || $nim == "" || $passwd == "" || $cpasswd == "" || $email == ""){
header("location:./index.php?alert=Silahkan diisi dengan benar");
exit;
}
if(!filter_var($email, FILTER_VALIDATE_EMAIL)){
header("location:./index.php?alert=E-mail tidak valid");
exit;
}
if($passwd != $cpasswd){
header("location:./index.php?alert=Password tidak benar");
exit;
}
?>
<script type="text/javascript">
function closeWin(){
window.close();
}
</script>
<?php
//proses pengecekkan nim yang di input mahasiswa apakah sesuai //dengan nim yang ada di database akademik
$cek_real_nim = mysql_query("select *from mahasiswa where nim = '$nim'") or die (mysql_error());
if(mysql_num_rows($cek_real_nim) == 0){
header("location:./index.php?alert=NIM tidak terdaftar");
exit; }
//cek email terdaftar
$cek_email = mysql_query("select *from tuser where email = '$email'") or die (mysql_error());
if(mysql_num_rows($cek_email) != 0){
header("location:./index.php?alert=Email sudah terdaftar");
exit;
}
//cek nim di tabel user, tabel ini berguna untuk melihat daftar //user dimana nanti user di tabel ini bisa diupdate dan di delete //tanpa mengganggu database mahasiswa di akademik
$passwd = MD5($passwd);
$cek_nim = mysql_query("select *from tuser where nim = '$nim'") or die (mysql_error());
if(mysql_num_rows($cek_nim) == 0){
$query = mysql_query("insert into tuser values (0,'$nim','$passwd','$fullname','$email')") or die (mysql_error());
//membuat objek api
$API = new routeros_api();
//jika ingin melihat output dari API di set true
$API->debug = false;
//koneksi ke mikrotik, user disini bukan user hotspot, tapi user login ke mikrotik
if ($API->connect('192.168.5.1', 'UserUntukLoginMikrotik', 'passwordUntukLogin')) { // Change this as necessery
$user = array(1 => array('name' => "$nim", 'password' => "$passwd"),
);
foreach($user as $tmp)
{
$username="=name=";
$username.=$tmp['name'];
$pass="=password=";
$pass.=$tmp['password'];
$server="=server=";
$server.='all';
$profile="=profile=";
$profile.='mahasiswa';
$API->write('/ip/hotspot/user/add',false);
$API->write($username, false);
$API->write($pass, false);
$API->write($server, false);
$API->write($profile);
$ARRAY = $API->read();
}
echo "<center>";
echo "Anda sudah terdaftar di Hotspot STIKOM Dinamika Bangsa Jambi : <br /> Username : $nim <br /> Password : $passwd <br />";
echo "<input type=button name=tutup id=tutup onclick='closeWin()' value=Tutup />";
echo "</center>";
$API->disconnect();
}
}else{
header("location:./index.php?alert=Nim Anda sudah terdaftar");
exit; }
?>
IP -> Services, Aktifkan API.
Selanjutnya tinggal di setting hotspot seperti biasa, pada script API diatas berarti ada user profile untuk mahasiswa.
Dan sekarang tinggal nunggu router baru, agar user hotspot bisa lebih banyak, RB yang saya gunakan level 4, jadi masih terbatas usernya, Mikrotik RoS memang Ok.
Tulisannya sampai disini dulu, ntar disambung lagi....
Salam bro....
BalasHapusterima kasih... Bagaimana untuk dosen dan karyawan yang mau menggunakan hotspot juga....?
kan tinggal buat saja satu user di mikrotik hotspotnya yang bisa di gunakan oleh beberapa dosen dan karyawan (saya rasa nggak perlu regis).
HapusSalam nanya....
BalasHapusyang di jelsakan diataskn penggunaan database tetap menggunakan databasenya mikrotik, fungsi database dari web server hanya mencocokan saja data user bersangkutan, nah klo database mikrotiknya di load dari external mikrotik gmna gan??? mohon petunjuknya gan....
Untuk cara itu mungkin bisa menggunakan radius server mas,.. beberapa hari yang lalu udah coba, server radiusnya menggunakan database MySql di linux ubuntu, cm belum sempat nulis :D
HapusDitunggu gan Tulisanya buat referensi, ngarep.com....
Hapuskalau untuk dipasang di server hosting bagai mana untuk setting koneksi ke miktoik lokalnya mas ?
BalasHapusSaya coba Hasilnya seperti ini
Server Not Found !!
Warning: fclose() expects parameter 1 to be resource, boolean given in /home/sdodads3/public_html/mikrotik/routeros_api.class.php on line 120
terima kasih seblemumnya
salam kenal,,,
BalasHapusmas admin,,,
aku pnnya studi kasus,,,aku da buat Hotspot buat masiswa,,
tapi sekarang aku binggung bagaimana kita bisa buat cara aksesnya menggunakan NIM dan namanya untuk login,,,
apa lagi masiswa banyak,,,
apa gitu buat userx satu persatu????
liat contoh diatas, di kasus saya, setiap mahasiswa mendaftar hotspot menggunakan akun yang ada di database akademik.
Hapussalam kenal mas admin, saya sangat tertarik dengan informasi ini. Kebetulan saya juga mengalami hal serupa di sekolah yang saya kelola saat ini. Saya sangat perlu informasi lengkap mengenai cara implementasi "User Hotspot Mikrotik dengan PHP API" ini. Jika mas admin tidak keberatan, mas admin bisa berbagi informasi via email: sang_penghuni@yahoo.co.id. Terimakasih sebelumnya...
BalasHapusadmin aku mau bayar untuk dibuatkan seperti contoh diatas...ini email ku cesc330@gmail.com
BalasHapusDalam studi kasus ente kan pake database akademik, nah untuk kita sendiri jika ingin mengikuti tutorial diatas bagaimana untuk pengecekan user'nya?
BalasHapusterima kasih untuk postingannya.
salam kenal mas admin,mau tanya dalam kasus ini file api.php dan config.php itu diletakkan dimana ya?apakah di dalam file mikrotik(hotspot)? atau di buatkan server localhost sendiri.
BalasHapusterima kasih
di server local
HapusAdmin ada tutor yg lbih jls utk membuat login page hotspot mnggunkan php klo ada bsa email : edisetiowahono09@gmail.com
BalasHapusNtr sy beli
lha ini untuk config.php ini db nya create di phpmyadmin atau gmn gan?
BalasHapus