Agen Terpercaya  
 
 
 
 
Pasang iklan, hanya lewat Contact Us.
Waspada penipuan iklan. Klik di sini untuk melihat daftar penipu.

SHARE LANJUTAN IMAGE HOSTING PART 2

RayMantic

Moderator
Staff member
Moderator
Daftar
4 Oct 1988
Post
×
Like diterima
9.130
Bimabet
[hide][/hide][hide][/hide][hide]

DEMO LINK :

*link diatas tidak permanen/sementara ,jika nubi rasa cukup [server down]
*tidak untuk konten adult/sara .etc 18+ / melanggar hukum
*hanya untuk view tutorial



PART 2

SEBELUMNYA [PART1]
BUAT FOLDER PUBLIC YANG STRUKTUR DIDALAMNYA
PART1

CSS = UPLOAD.CSS
INCLUDE=ACOUNT,CONTACT,FAQ,FOOTER,HEADER,LOGIN,MAIN,MESSAGE,TC,REG,VIEW [CODE MAIN.PHP VIA PM]





SIAPKAN FOLDER JS DAN THUMB
JS : UPLOAD.JS + JQUERY.MIN.JS
THUMB : .HTACCESS,ACOUNT.PHP,BANNED.PHP,COMMON.PHP,CONTACT.PHP,DB.PHP,HAPUS.PHP,FAQ.PHP,INDEX.PHP,LOGIN.PHP,LOGOUT.PHP,REGISTER.PHP,LAPOR.PHP,TC.PHP,UPLOAD.PHP,VIEW.PHP


folder JS
UPLOAD.CSS
Code:
$('#image-input').on('change', function()
{
    var selectImage = $('#select-image');
    var cancelImage = $('#cancel-image');

    selectImage.text('click again to upload ' + $(this).val().replace('C:\\fakepath\\', '')).css({
        'margin-bottom' : '10px',
        'display' : 'block'
    });

    cancelImage.removeClass('hidden');

    selectImage.off();

    selectImage.on('click', function() {
            selectImage.off();
            cancelImage.addClass('hidden');
            $('#upload-form').submit();
            selectImage.text('Your image is uploading, please wait');
        }
    );
});

$('#select-image, #cancel-image').on('click', function()
{
    $('#image-input').click();
});

$('.delete').on('click', function() {
    return confirm('Are you sure? This image WILL BE DELETED');
});

$('#ban').on('click', function() {
    return confirm('Are you sure? This user will be BANNED and ALL OF THEIR IMAGES WILL BE DELETED');
});

$('#links li input').on('click', function()
{
    $(this).select();
});

jquery.min.js
Code:
via PM atau cari jquery yang  /*! jQuery v1.10.2



folder THUMB
.htaccess
Code:
via PM

account.php
Code:
<?php

require('config.php');
require('common.php');

if (!isset($_SESSION['user']))
{
    exit_message('You are no authorised to access this page. Please log in.');
}

$user = $_SESSION['user'];

require('db.php');

$images = mysqli_prepare($db, 'SELECT `id`, `ext`, `time` FROM `images` WHERE `user` = ? AND `removed` = "0" ORDER BY `time` ASC');

mysqli_stmt_bind_param($images, 'i', $user);
mysqli_stmt_execute($images);
++$db_queries;
mysqli_stmt_store_result($images);

if (mysqli_stmt_num_rows($images) === 0)
{
    exit_message('You haven\'t uploaded any images yet!');
}

mysqli_stmt_bind_result($images, $id, $ext, $time);

require('inc/header.php');
require('inc/account.php');
require('inc/footer.php');

banned.php
Code:
<?php

require('config.php');
require('common.php');

// make sure user is logged in (for non-admins, we will verify their ID later)
if (!isset($_SESSION['admin']))
{
    exit_message('You are not authorised to perform this action. Please log in.');
}

// make sure ID is valid
if (!ctype_digit($_GET['id']))
{
    exit_message('Oops, that ID appears to be invalid. User IDs should be numberic');
}

$id = $_GET['id'];

require('db.php');

$exists = mysqli_prepare($db, 'SELECT EXISTS(SELECT 1 FROM `users` WHERE `id` = ?)');

// query DB to see if ID exists
mysqli_stmt_bind_param($exists, 'i', $id);
mysqli_stmt_execute($exists);
++$db_queries;
mysqli_stmt_bind_result($exists, $result);
mysqli_stmt_fetch($exists);
mysqli_stmt_close($exists);

if ($result === 0)
{
    exit_message('No accounts exist with that user ID');
}

// ban user in DB
$ban = mysqli_prepare($db, 'UPDATE `users` SET `banned` = "1" WHERE `id` = ?');
mysqli_stmt_bind_param($ban, 'i', $id);
mysqli_stmt_execute($ban);
++$db_queries;
mysqli_stmt_close($ban);

// get list of images uploaded by that user (so we can delete the files)
$images = mysqli_prepare($db, 'SELECT `id`, `ext` FROM `images` WHERE `user` = ?');
mysqli_stmt_bind_param($images, 'i', $id);
mysqli_stmt_execute($images);
++$db_queries;
mysqli_stmt_bind_result($images, $image_id, $ext);

while (mysqli_stmt_fetch($images))
{
    unlink('images/' . $image_id . '.' . $ext);

    if (file_exists('thumbs/' . $image_id . '.jpg'))
    {
        unlink('thumbs/' . $image_id . '.jpg');
    }
}

mysqli_stmt_close($images);

// delete images in the DB
$delete = mysqli_prepare($db, 'UPDATE `images` SET `removed` = "1" WHERE `user` = ?');
mysqli_stmt_bind_param($delete, 'i', $id);
mysqli_stmt_execute($delete);
++$db_queries;
mysqli_stmt_close($delete);

mysqli_close($db);

exit_message('User has been banned and all data has been removed');

common.php
Code:
<?php

session_start();

$start = microtime();

$db_queries = 0;

define('MAIN_SITE_URL', trim(SITE_URL, '/') . '/');

define('MAIN_SCRIPT_PATH', (SCRIPT_PATH ? trim(SCRIPT_PATH, '/') . '/' : ''));

define('VIEW_PATH', (FRIENDLY_URLS ? '' : 'view.php?id='));

define('VIEW_URL', 'http://' . MAIN_SITE_URL . MAIN_SCRIPT_PATH . VIEW_PATH);

define('IMAGES_URL', 'http://' . (FRIENDLY_URLS ? 'i.' : '') . MAIN_SITE_URL . (FRIENDLY_URLS ? '' : MAIN_SCRIPT_PATH . 'images/'));

define('IN_SCRIPT', true);

function exit_message($message)
{
    require('inc/header.php');
    require('inc/message.php');
    require('inc/footer.php');
    exit;
}

config.php
Code:
via PM

contact.php
Code:
<?php

require('config.php');
require('common.php');
require('inc/header.php');
require('inc/contact.php');
require('inc/footer.php');

db.php
Code:
<?php

$db = mysqli_connect(DB_SERVER, DB_USER, DB_PASS, DB_NAME, DB_PORT);

hapus.php
Code:
<?php

require('config.php');
require('common.php');

// jika id bukan admin
if (!isset($_SESSION['user']))
{
    exit_message('You are not authorised to perform this action. Please log in.');
}

// jika id benar
if (!ctype_alnum($_GET['id']) || (strlen($_GET['id']) !== 5))
{
    exit_message('Oops, that ID appears to be invalid. IDs should have 5 characters and contain letters and numbers only.');
}

$id = $_GET['id'];

require('db.php');

$exists = mysqli_prepare($db, 'SELECT `ext`, `user` FROM `images` WHERE `id` = ?');

// query DB jika ID exists
mysqli_stmt_bind_param($exists, 's', $id);
mysqli_stmt_execute($exists);
++$db_queries;
mysqli_stmt_store_result($exists);

if (mysqli_stmt_num_rows($exists) === 0)
{
    exit_message('Hmm, no image exists with that ID. Maybe it was deleted or you typed in the URL incorrectly?');
}

mysqli_stmt_bind_result($exists, $ext, $user);
mysqli_stmt_fetch($exists);
mysqli_stmt_close($exists);

if (!isset($_SESSION['admin']) && ($_SESSION['user'] !== $user))
{
    exit('You are not authorised to perform this action.');
}

unlink('images/' . $id . '.' . $ext);

$thumb = 'thumbs/' . $id . '.jpg';
if (file_exists($thumb))
{
    unlink($thumb);
}

$delete = mysqli_prepare($db, 'UPDATE `images` SET `removed` = "1" WHERE `id` = ?');
mysqli_stmt_bind_param($delete, 's', $id);
mysqli_stmt_execute($delete);
++$db_queries;
mysqli_stmt_close($delete);

// cek image jika ada report
// action/eksekusi
$reported = mysqli_prepare($db, 'SELECT EXISTS(SELECT 1 FROM `reports` WHERE `id` = ?)');

// query DB jika ID exists
mysqli_stmt_bind_param($reported, 's', $id);
mysqli_stmt_execute($reported);
++$db_queries;
mysqli_stmt_bind_result($reported, $result);
mysqli_stmt_fetch($reported);
mysqli_stmt_close($reported);

// update laporan
if ($result === 1)
{
    $actioned = mysqli_prepare($db, 'UPDATE `reports` SET `actioned` = "1" WHERE `id` = ?');
    mysqli_stmt_bind_param($actioned, 's', $id);
    mysqli_stmt_execute($actioned);
    ++$db_queries;
    mysqli_stmt_close($actioned);
}

mysqli_close($db);

exit_message('The image ' . $_GET['id'] . ' has been removed');

faq.php + index.php sama [cuma di index ganti faq dengan main.php]
Code:
<?php

require('config.php');
require('common.php');
require('inc/header.php');
require('inc/faq.php');
require('inc/footer.php');

login.php
Code:
<?php

require('config.php');
require('common.php');

if (!isset($_POST['submit']))
{
    require('inc/header.php');
    require('inc/login.php');
    require('inc/footer.php');
    exit;
}

if (empty($_POST['email']) || empty($_POST['password']))
{
    exit_message('Please make sure you enter both an email address and password');
}

if (!filter_var($_POST['email'], FILTER_VALIDATE_EMAIL))
{
    exit_message('Please enter a valid email address');
}

//  valid email and a password
$email = $_POST['email'];
$password = $_POST['password'];

require('db.php');

$user = mysqli_prepare($db, 'SELECT `id`, `admin`, `banned` FROM `users` WHERE `email` = ? AND `password` = SHA2(CONCAT(`salt`, ?), 256)');
mysqli_stmt_bind_param($user, 'ss', $email, $password);
mysqli_stmt_execute($user);
++$db_queries;
mysqli_stmt_store_result($user);

if (mysqli_stmt_num_rows($user) ===0)
{
    exit_message('Sorry, no account exists with this email and password');
}

mysqli_stmt_bind_result($user, $id, $admin, $banned);
mysqli_stmt_fetch($user);
mysqli_stmt_close($user);
mysqli_close($db);

if ($banned === '1')
{
    // user is banned ($banned will return 1);
    exit_message('This account has been banned');
}

$_SESSION['user'] = $id;

if ($admin === '1')
{
    // ONLY set this variable if user is an admin ($admin will return 1)
    $_SESSION['admin'] = true;
}

exit_message('You have been logged in');

logout.php
Code:
<?php

require('config.php');
require('common.php');

// destroy user's
session_unset();
session_destroy();

exit_message('You have been logged out');

register.php
Code:
<?php

require('config.php');
require('common.php');

if (!ctype_alnum($_GET['id']) || (strlen($_GET['id']) !== 5))
{
    exit_message('Oops, that ID appears to be invalid. IDs should have 5 characters and contain letters and numbers only.');
}

$id = $_GET['id'];

require('db.php');

$exists = mysqli_prepare($db, 'SELECT EXISTS(SELECT 1 FROM `images` WHERE `id` = ?)');

// query DB to see if ID exists
mysqli_stmt_bind_param($exists, 's', $id);
mysqli_stmt_execute($exists);
++$db_queries;
mysqli_stmt_bind_result($exists, $result);
mysqli_stmt_fetch($exists);
mysqli_stmt_close($exists);

if ($result === 0)
{
    exit_message('Hmm, no image exists with that ID. Maybe it was deleted or you typed in the URL incorrectly?');
}

// check if image has been reported
$reported = mysqli_prepare($db, 'SELECT `actioned` FROM `reports` WHERE `id` = ?');

// query DB to see if ID exists
mysqli_stmt_bind_param($reported, 's', $id);
mysqli_stmt_execute($reported);
++$db_queries;
mysqli_stmt_store_result($reported);

if (mysqli_stmt_num_rows($reported) === 1)
{
    mysqli_stmt_bind_result($reported, $actioned);
    mysqli_stmt_fetch($reported);
    mysqli_stmt_close($reported);

    if ($result === 0)
    {
        exit_message('This image has already been reported and is under review');
    }

    elseif ($result === 1)
    {
        exit_message('This image has already been reported, and after review was deemed to be acceptable.');
    }
}

// mysqli_query($db, 'INSERT INTO `reports` (`id`, `ip`) VALUES ("' . $_GET['id'] . '", "' . $_SERVER['REMOTE_ADDR'] . '")');

$query = mysqli_prepare($db, 'INSERT INTO `reports` (`id`, `ip`) VALUES (?, ?)');
mysqli_stmt_bind_param($query, 'ss', $id, $ip);

// set data for query
$ip = $_SERVER['REMOTE_ADDR'];

// insert data
mysqli_stmt_execute($query);
++$db_queries;
mysqli_stmt_close($query);

// close connection
mysqli_close($db);

mail(REPORT_EMAIL, 'An image has been reported (' . $id . ')', 'The following image has been reported: ' . VIEW_URL . $id, 'FROM: reports <reports@' . SITE_URL . '>');

exit_message('This image has been reported and will be reviewed. Thank you.');

tc.php
Code:
<?php

require('config.php');
require('common.php');
require('inc/header.php');
require('inc/tc.php');
require('inc/footer.php');

upload.php
Code:
<?php

require('config.php');
require('common.php');

// cek jika user login
if (ANON_UPLOADS === false && !isset($_SESSION['user']))
{
    exit_message('Anonymous uploads have been disabled, please register or log in to upload');
}

// submit url/image
if (isset($_FILES['image']) && isset($_POST['url']))
{
    exit_message('Please only choose one image to upload.');
}

// inform user exit
if (!isset($_FILES['image']) && !isset($_POST['url']))
{
    exit_message('Please choose either an image on your computer to upload or a remote image to download.');
}

$allowed_ext = [
    'png',
    'jpg',
    'gif'
];

// submit image or URL
// cek valid
// check for an uploaded image first
if (isset($_FILES['image']))
{
    // user wants to upload via browser
    // set variables - will check after
    $size = $_FILES['image']['size'];
    $ext = pathinfo($_FILES['image']['name'], PATHINFO_EXTENSION);
}

elseif (isset($_POST['url']))
{
    // user download a remote image
    // URL is valid and set variables - will check after
    // is remote downloading enabled in conf.php?
    if (ALLOW_REMOTE !== true)
    {
        // error and exit
        exit_message('Remote downloading is not enabled on this installation');
    }

    // allowed URL schemes
    $allowed_schemes = [
        'http',
        'https'
    ];

    // http/https only
    if (!filter_var($_POST['url'], FILTER_VALIDATE_URL) || (!in_array(parse_url($_POST['url'], PHP_URL_SCHEME), $allowed_schemes)))
    {
        // tidak valid URL
        exit_message('Sorry, this URL is invalid');
    }

    //  allowed domain
    if ((URL_WHITELIST === true) && (!in_array(parse_url($_POST['url'], PHP_URL_HOST), $allowed_urls)))
    {
        exit_message('Sorry, downloads from this domain have not been allowed by the administrator');
    }

    // download valid
    $size = get_headers($_POST['url'], 1)['Content-Length'];
    $ext = end(explode('.',$_POST['url']));
}

// OK, setiap saat cek
// cek besar image
if ($size > ALLOWED_SIZE)
{
    // file is too big
    exit_message('Sorry, this file is too big');
}

// jika ukuran image OK
if (!in_array($ext, $allowed_ext))
{
    // not allowed
    exit_message('Sorry, this extension is not allowed.');
}

// ukuran sesuai
// let's set $image to either $_FILES['image'] or $_POST['url'] and check if they're valid
if (isset($_FILES['image']))
{
    if (!getimagesize($_FILES['image']['tmp_name']))
    {
        exit_message('Sorry, this does not appear to be a valid image');
    }

    $image = $_FILES['image']['tmp_name'];
}

elseif (isset($_POST['url']))
{
    $image = file_get_contents($_POST['url'], NULL, NULL, NULL, $size);

    if (!imagecreatefromstring($image))
    {
        exit_message('Sorry, this does not appear to be a valid image');
    }
}


require('db.php');

// prepare query
$exists = mysqli_prepare($db, 'SELECT EXISTS(SELECT 1 FROM `images` WHERE `id` = ?)');

// create ID DB
do
{
    // create ID
    $id = '';
    $chars = 'ACDEFHJKLMNPQRTUVWXYZabcdefghijkmnopqrstuvwxyz23479';
    for ($i = 0; $i < 5; ++$i)
    {
        $id .= $chars[mt_rand(0, 50)];
    }
    // $id randomly generated ID

    // query DB jika ID exists
    mysqli_stmt_bind_param($exists, "s", $id);
    mysqli_stmt_execute($exists);
    ++$db_queries;
    mysqli_stmt_bind_result($exists, $result);
    mysqli_stmt_fetch($exists);
    mysqli_stmt_close($exists);
}
while ($result === 1);


if (isset($_FILES['image']))
{
    $image_path = 'images/' . $id . '.' . $ext;

    // baca image
    move_uploaded_file($image, $image_path);
}
else if (isset($_POST['url']))
{
    // baca image
    file_put_contents('images/' . $id . '.' . $ext, $image);
}

// buat thumbnail in)
if (isset($_SESSION['user']))
{
    if (isset($_FILES['image']))
    {
 
        switch ($ext)
        {
            case 'jpg':
                $thumb = imagecreatefromjpeg($image_path);
            break;

            case 'png':
                $thumb = imagecreatefrompng($image_path);
            break;

            case 'gif':
                $thumb = imagecreatefromgif($image_path);
            break;
        }
    }
    else if (isset($_POST['url']))
    {
        // setting source untuk thumb
        $thumb = imagecreatefromstring($image);
    }

    $width = imagesx($thumb);
    $height = imagesy($thumb);

    if ($width > 200 || $height > 200)
    {
        if ($width > $height)
        {
            $new_width = 200;
            // 300, don't bother resizing
            $new_height = floor($height * ($new_width / $width));
        }
        else
        {
            $new_height = 200;
   
            $new_width = floor($width * ($new_height / $height));
        }
    }
    else
    {
        $new_height = $height;
        $new_width = $width;
    }

    $new_thumb = imagecreatetruecolor($new_width, $new_height);

    switch ($ext)
    {
        case 'png':
            imagefill($new_thumb, 0, 0, imagecolorallocate($new_thumb, 255, 255, 255));
            imagealphablending($new_thumb, TRUE);
        break;

        case 'gif':
            $new_thumb = imagecolorallocate($thumb, 0, 0, 0);
            imagecolortransparent($thumb, $new_thumb);
        break;
    }
 
    imagecopyresized($new_thumb, $thumb, 0, 0, 0, 0, $new_width, $new_height, $width, $height);
    imagedestroy($thumb);

    imagejpeg($new_thumb, 'thumbs/' . $id . '.jpg', 30);
    imagedestroy($new_thumb);
}


if (!isset($_SESSION['user']))
{
    $query = mysqli_prepare($db, 'INSERT INTO `images` (`id`, `ext`, `ip`) VALUES (?, ?, ?)');
    mysqli_stmt_bind_param($query, 'sss', $id, $ext, $ip);
}
else
{
    $query = mysqli_prepare($db, 'INSERT INTO `images` (`id`, `ext`, `user`, `ip`) VALUES (?, ?, ?, ?)');
    mysqli_stmt_bind_param($query, 'ssis', $id, $ext, $user, $ip);
}

// set data for query
$user = $_SESSION['user'];
$ip = $_SERVER['REMOTE_ADDR'];

// insert data
mysqli_stmt_execute($query);
++$db_queries;
mysqli_stmt_close($query);

// close connection
mysqli_close($db);

header('location: ' . VIEW_URL . $id);

view.php
Code:
<?php

require('config.php');
require('common.php');

if (!ctype_alnum($_GET['id']) || (strlen($_GET['id']) !== 5))
{
    exit_message('Oops, that ID appears to be invalid. IDs should have 5 characters and contain letters and numbers only.');
}

// ID supplied by user is safe (5 chars alphanumeric)
$id = $_GET['id'];

require('db.php');

$image = mysqli_prepare($db, 'SELECT `ext`, `time`, `user`, `ip`, `removed` FROM `images` WHERE `id` = ?');
mysqli_stmt_bind_param($image, 's', $id);
mysqli_stmt_execute($image);
++$db_queries;
mysqli_stmt_store_result($image);

if (mysqli_stmt_num_rows($image) === 0)
{
    exit_message('Hmm, no image exists with that ID. Maybe it was deleted or you typed in the URL incorrectly?');
}

mysqli_stmt_bind_result($image, $ext, $time, $user, $ip, $removed);
mysqli_stmt_fetch($image);

if ($removed === '1')
{
    exit_message('This image has been deleted.');
}

mysqli_stmt_close($image);
mysqli_close($db);

$dimensions = getimagesize('images/' . $id . '.' . $ext);
$size = (filesize('images/' . $id . '.' . $ext) / 1024);

require('inc/header.php');
require('inc/view.php');
require('inc/footer.php');

/* upload.sql
Code:
-- phpMyAdmin SQL Dump
-- version 4.4.8
-- http://www.phpmyadmin.net
--
-- Host: localhost
-- Generation Time: Sep 12, 2018 at 06:15 PM
-- Server version: 5.5.44-0+deb7u1
-- PHP Version: 5.4.41-0+deb7u1

SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO";
SET time_zone = "+00:00";

--
-- tabel struktur image
--

CREATE TABLE IF NOT EXISTS `images` (
  `id` char(5) NOT NULL,
  `ext` char(3) NOT NULL,
  `time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
  `user` smallint(5) unsigned DEFAULT NULL,
  `ip` varchar(39) NOT NULL,
  `removed` enum('0','1') NOT NULL DEFAULT '0'
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

-- --------------------------------------------------------

--
-- table struktur lapor
--

CREATE TABLE IF NOT EXISTS `reports` (
  `id` char(5) NOT NULL,
  `time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
  `ip` varchar(39) NOT NULL,
  `actioned` enum('1','0') NOT NULL DEFAULT '0'
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

-- --------------------------------------------------------

--
-- tabel struktur user
--

CREATE TABLE IF NOT EXISTS `users` (
  `id` smallint(5) unsigned NOT NULL,
  `email` varchar(100) NOT NULL,
  `salt` char(23) NOT NULL,
  `password` char(64) NOT NULL,
  `time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
  `ip` varchar(39) NOT NULL,
  `admin` enum('0','1') NOT NULL DEFAULT '0',
  `banned` enum('0','1') NOT NULL DEFAULT '0'
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

--
-- indek untuk dumbed
--

--
-- indek untuk image
--
ALTER TABLE `images`
  ADD PRIMARY KEY (`id`);

--
-- index untuk lapor
--
ALTER TABLE `reports`
  ADD PRIMARY KEY (`id`);

--
-- index untuk user
--
ALTER TABLE `users`
  ADD PRIMARY KEY (`id`);

--
-- AUTO_INCREMENT untuk dumped
--

--
-- AUTO_INCREMENT untuk table `users`
--
ALTER TABLE `users`
  MODIFY `id` smallint(5) unsigned NOT NULL AUTO_INCREMENT;
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;


struktur folder file lihat pada gambar dibawah ini
public folder



include folder

[/hide]



SELESAI:)

HARGAILAH HASIL KARYA ORANG LAIN...APRESIASILAH.... KARENA BETAPA SUSAHNYA PARA ADMIN YANG SUDAH BERSEDIA MEMBUATKAN RUMAH BERUPA WEB/APLIKASI DLL UNTUK KITA NIKMATI.
 
Terakhir diubah:
Jav Toys
Gaple Online Indonesia
Pasang iklan hanya lewat CONTACT US
Back
Top
We are now part of LS Media Ltd