Home > Menengah > Web Development > Tutorial PHP > Membuat Subdomain dengan PHP

.

8 Komentar Untuk Artikel Ini BYAdmin Ilmuwebsite

Anda pernah membuat blog di wordpress.com atau blogger.com? Ketika melakukan register satu buah blog misalkan lokadwiartara, maka otomatis menghasilkan satu subdomain wordpress tersendiri menjadi lokadwiartara.wordpress.com, uniknya lokadwiartara.wordpress.com ini secara otomatis langsung berisi blog yang kosong. Bagaimana wordpress atau blogger melakukan hal ini tanpa harus masuk ke server dengan directadmin atau cpanel di dalamnya dan tanpa secara manual membuat subdomain?
Ada dua cara untuk melakukan hal ini. Cara yang pertama biasanya saya menggunakan curl untuk membuat satu aplikasi yang secara otomatis login kedalam cpanel atau directadmin, lalu mengcreate subdomain berdasarkan data yang diinputkan ke dalam form. Cara alternatif adalah menggunakan php socket yang memanfaatkan port 2082 (cpanel). Cara alternatif ini jauh lebih menghemat resource ketimbang menggunakan curl.
Pada dasarnya curl memang mengasyikan, namun, cara alternatif jauh lebih baik.
Berikut adalah script lengkapnya :

<?php

// cpanel user
define(‘CPANELUSER’,’user’);

// cpanel password
define(‘CPANELPASS’,’pass’);

// name of the subdomains list file.
// file format may be 1 column or 2 columns divided with semicilon (;)
// Example for two columns:
//?? rootdomain1;subdomain1
//?? rootdomain1;subdomain2
// Example for one columns:
//?? subdomain1
//?? subdomain2
define(‘INPUT_FILE’,’domains.txt’);

// cPanel skin (mainly “x3”)
// to know it for sure
define(‘CPANEL_SKIN’,’x3′);

// Default domain (subdomains will be created for this domain)
// Will be used if not passed via parameter and not set in subdomains file
define(‘DOMAIN’,”);

/////////////// END OF INITIAL SETTINGS ////////////////////////

function getVar($name, $def = ”) {
if (isset($_REQUEST[$name]) && ($_REQUEST[$name] != ”))
return $_REQUEST[$name];
else
return $def;
}

$cpaneluser=getVar(‘cpaneluser’, CPANELUSER);
$cpanelpass=getVar(‘cpanelpass’, CPANELPASS);
$cpanel_skin = getVar(‘cpanelskin’, CPANEL_SKIN);

if (isset($_REQUEST[“subdomain”])) {
// get parameters passed via URL or form, emulate string from file
$doms = array( getVar(‘domain’, DOMAIN) . “;” . $_REQUEST[“subdomain”]);
if (getVar(‘domain’, DOMAIN) == ”) die(“You must specify domain name”);
}
else {
// open file with domains list
$doms = @file(INPUT_FILE);
if (!$doms) {
// file does not exist, show input form
echo ”
Cannot find input file with subdomains information. It is ok if you are not creating subdomains from file.<br>
Tip: leave field empty to use default value you have specified in the script’s code.<br>
<form method=’post’>
Subdomain:<input name=’subdomain’><br>
Domain:<input name=’domain’><br>
cPanel User:<input name=’cpaneluser’><br>
cPanel Password:<input name=’cpanelpass’><br>
cPanel Skin:<input name=’cpanelskin’><br>
<input type=’submit’ value=’Create Subdomain’ style=’border:1px solid black’>
</form>”;
die();
}
}

// create subdomain
function subd($host,$port,$ownername,$passw,$request) {

$sock = fsockopen(‘localhost’,2082);
if(!$sock) {
print(‘Socket error’);
exit();
}

$authstr = “$ownername:$passw”;
$pass = base64_encode($authstr);
$in = “GET $requestrn”;
$in .= “HTTP/1.0rn”;
$in .= “Host:$hostrn”;
$in .= “Authorization: Basic $passrn”;
$in .= “rn”;

fputs($sock, $in);
while (!feof($sock)) {
$result .= fgets ($sock,128);
}
fclose( $sock );

return $result;
}

foreach($doms as $dom) {
$lines = explode(‘;’,$dom);
if (count($lines) == 2) {
// domain and subdomain passed
$domain = trim($lines[0]);
$subd = trim($lines[1]);
}
else {
// only subdomain passed
$domain = getVar(‘domain’, DOMAIN);
$subd = trim($lines[0]);
}
/* http://[domainhere]:2082/frontend/x/subdomain/doadddomain.html?domain=[subdomain here]&rootdomain=[domain here] */
$request = “/frontend/$cpanel_skin/subdomain/doadddomain.html?rootdomain=$domain&domain=$subd”;
$result = subd(‘localhost’,2082,$cpaneluser,$cpanelpass,$request);
$show = strip_tags($result);
echo $show;
}

?>

Sebetulnya apa yang terjadi pada script alternatif pembuat subdomain ini? Bagaimana bisa sampai membuat sub domain sendiri tanpa melakukan login ke dalam cpanel lalu membuat sub domain?? Saya akan coba jelaskan sedikit, lihat pada baris ini, karena script selebihnya cuma menginialisasi data yang diinputkan oleh user ke dalam form :

function subd($host,$port,$ownername,$passw,$request) {

$sock = fsockopen(‘localhost’,2082);
if(!$sock) {
print(‘Socket error’);
exit();
}

$authstr = “$ownername:$passw”;
$pass = base64_encode($authstr);
$in = “GET $requestrn”;
$in .= “HTTP/1.0rn”;
$in .= “Host:$hostrn”;
$in .= “Authorization: Basic $passrn”;
$in .= “rn”;

fputs($sock, $in);
while (!feof($sock)) {
$result .= fgets ($sock,128);
}
fclose( $sock );

return $result;
}

barisan kode disini berfungsi untuk :

$sock = fsockopen(‘localhost’,2082);
if(!$sock) {
print(‘Socket error’);
exit();
}

1. Melakukan koneksi ke port lain, dalam hal ini 2082, 2082 merupakan port yang digunakan untuk mengakses cpanel.

$authstr = “$ownername:$passw”;
$pass = base64_encode($authstr);

2. Masuk ke dalam halaman dengan menggunakan basic authentication. Basic authentication sendiri sebetulnya cuma kotak dialog yang tampil ketika anda masuk ke dalam cpanel anda, yang meminta anda untuk memasukkan username dan password, dan script pada baris ini mewakili anda yang menginputkan username dan password cpanel milik anda.

fputs($sock, $in);
while (!feof($sock)) {
$result .= fgets ($sock,128);
}

3. Ketika kondisinya sudah benar, maka gunakan url yang variable nya di dapatkan dari function subd($host,$port,$ownername,$passw,$request) untuk membuat subdomain.

Secara sederhananya bagaimana membuat sub domain, dengan memanfaatkan url? seperti ini :
http://[domainhere]:2082/frontend/x/subdomain/doadddomain.html?domain=[subdomain here]&rootdomain=[domain here]
namun setelah sebelumnya melakukan basic authentication.
Lihat tanda x pada url di atas, ini bisa diganti dengan bentuk lain, karena sebetulnya x disini mewakili skin yang digunakan oleh pihak hosting, untuk hosting yang sering saya gunakan biasanya skinnya itu menggunakan bentuk x3, sehingga saya cukup mengganti x menjadi x3. Oke, saya rasa penjelasannya sudah mencukupi. Jika masih ada pertanyaan silahkan kirimkan ke lokadwiartara@ilmuwebsite.com.

Silahkan download skrip tersebut di sini? :
http://www.ilmuwebsite.com/file_tutorial/cpanel_subdomains.rar

Sumber :
http://www.zubrag.com/scripts/cpanel-subdomains-creator.php

DVD Video Tutorial : Kursus Web Development Komplit Bangun 5 Project Aplikasi Website - Membuat CMS Sendiri Dari Nol, Blog, Portal Berita, Ecommerce, Web Komunitas dengan CodeIgniter 3 JQuery AJAX Bootstrap

Video Tutorial Kursus Web Development Komplit Bangun 5 Project Website ini merupakan ‘penunjuk arah’ agar Anda yang sedang maupun baru akan terjun ke dalam dunia web development yang lebih mendalam memiliki peta perjalanan pembelajaran yang lebih terarah menuju web developer professional. (Disertai pembelajaran dasar HTML CSS, JQuery, PHP & MySQL, CodeIgniter) Dibuat oleh praktisi yang memiliki pengalaman lebih dari 10 tahun di bidang web development (Pemesanan bisa SMS/WA ke 0813 1167 5785, atau bisa pesan secara online di sini)



8 Response untuk Artikel Ini

  1. kandar

    Atau cara lainnya dengan menggunakan routing subdomain. Umumnya cara ini menggunakan htacces file untuk web server apache. Contoh isi htacessnya kurang lebeh seperti ini:


  2. kandar

    uppss.. ga sengaja ud ke submit!

    RewriteCond %{HTTP_HOST} !^www\.nama_domain.com
    RewriteCond %{HTTP_HOST} ([^.]+)\.nama_domain.com
    RewriteRule ^(.*)$ subdoamin.php?name=%1 [L,QSA]

    kondisi ini akan me-routing semua nama subdomain menjadi nilai untuk parameter “name” di file subdomain.php. Nah tinggal utak-atiknya di file subdomain aja deh…

    Thanks,
    Kandar


  3. Admin

    wah, mas kandar memang the master, trims info nya mas. B-)


  4. membuat blog

    uugh! bahasa program? langsung pusing bacanya.
    tapi kayaknya kalo pengen website yang bagus musti bisa bahasa PHP ya…
    masih newbie banget neh..


  5. dika

    bagus sekali,,,
    saya tertarik bagt,,,
    trims


  6. peterpanz

    Salam,

    ahaha mantap, Viva indonesian IT

    tengkyu-


  7. Fadilz A.k.A pedox

    @kandar : bentar DUlu mas kandar !!
    Kalo pake htaccess Kita harus buat Wildcard tanda * di awal Domain kita !
    sperti *.ilmuwebsite.com Biar subdomain nya bekerja !
    kalo tidak nanti Muncul Internal Server error ! sperti itu lah ! :p


  8. samsul

    salam kenal…saya salah satu staf admin sebuah sekolah swasta, mencoba mengembangkan(membuat) web site local sekolah…walaupun hanya dari tamplate2 yang ada di internet…kita pakai wordpress.

    kita punya masalah…yaitu kehilangan password admin web local….kalau ingin lihat data base password di folder apa, dan filenya namanya apa biasanya???

    OS kita pakai ubuntu , terima kasih sebelumnya


eXTReMe Tracker