session_start();
srand(time());
###########################################################
# ตัวแปรสำคัญที่ต้องแก้ไข คือ $web_url, $admin_password และ $title
# $web_url = "http://127.0.0.1/"; // สำหรับเครื่องบริการที่ยังไม่มีชื่อโดเมน
# $web_url = "http://localhost/"; // สำหรับเครื่องบริการที่ไม่ต้องการใช้หมายเลขไอพี
# $web_url = "http://www.weblampang.com/"; // สำหรับเครื่องบริการที่มีโดเมนเนมของตนเอง
# $web_url = ""; // สำหรับ ใช้ชื่อเดิมของเครื่อง เช่น http://127.0.0.1/ เป็นต้น
# $web_url = "http://www.thainame.net/weblampang/"; // สำหรับการใช้ใน subdirectory
$web_url = "http://www.weblampang.com/";
# Admin Password for Delete User
$admin_password = "thqVWqAnSaA8c";
# ค่าที่จะกรอกให้ตัวแปรนี้ ต้องเข้ารหัสมาแล้ว โดยมีขั้นตอนดังนี้
# 1. กดลิงค์ คำถาม-คำตอบ หรือ index.php?action=faqs
# 2. ไปที่หัวข้อ 99 ใน IE จะมีช่อง textbox
# 3. นำรหัส 13 หลักที่พบใน IE มาใส่แทนที่ค่าของตัวแปร $admin_password
# Information on Title bar of Internet Explorer
$title = "ฟรีโฮมเพจ ด้วยระบบ File Manager รุ่น 2.5a (June 10,2551)";
###########################################################
# filemanager.php (ปรับปรุงโดย webmaster@thaiall.com)
# โปรแกรมบริหารสมาชิกเว็บโฮสติ้ง : เพื่อให้นักพัฒนาถึงจุดหมายได้เร็วที่สุด
# ระบบนี้ออกแบบให้ผู้ดูแลแก้ไขค่าได้เอง
# ผู้สนับสนุนการสร้างโปรแกรมนี้รุ่น 1.0 คือ อ.มาลี สุวรรณอัตถ์
###
# Version 2.5 (2551-06-10)
# - แก้ไขการแสดงผล delete_user 2 ครั้ง
# - ทำให้ลบผู้ใช้ได้ง่ายขึ้น
# - ย้ายตัวแปรสำคัญ 3 ตัวแปรขึ้นมาไว้ด้านบนสุด ให้แก้ไขได้โดยสะดวก
# Version 2.4 (2549-11-19)
# - แก้ไข folder_listing
# - ทำให้คนหาได้ทั้งสถาบัน และชื่อ
# - สร้าง index.html ในห้องของผู้ใช้ให้อัตโนมัติ
# - ป้องกันการกรอกชื่อ user ด้วยรหัสที่ไม่เหมาะสม
# Version 2.3 (2549-04-01)
# - แก้ไขข้อผิดพลาดจากที่พึ่งเปลี่ยนเป็น function เมื่อทดสอบในโปรแกรม thaiabc4a.zip
# - แก้ปัญหาการ upload เพียงครั้งละแฟ้ม จากการ reset securekey เร็วเกินไป
# - แก้ปัญหาการไม่ใช้ closedir ในการลบ user ทำให้ลบ Directory ไม่ได้
# - แก้ปัญหาการเปลี่ยนชื่อ filemanager.php เป็นชื่ออื่น เช่น index.php ให้ไม่เกิดปัญหา
# Version 2.2 (2549-03-26)
# - กำหนดชื่อเป็น index.php แทน filemanager.php เพื่อเตรียมใช้กับ thainame.net thaiabc.net และ weblampang.com
# - กำหนดตัวแปรเปิดปิดการแสดง Source Code
# - แก้ไข Source Code ให้อยู่ใน Function เพื่อการแก้ไขในอนาคต
# - เริ่มบันทึกวันที่ปรับปรุงก่อนเผยแพร่ใน thainame.net
# Version 2.1
# - ย้ายโปรแกรม แต่ไม่พา user ไปเลย เริ่มต้นกันใหม่
# - แก้ไขคำอธิบายในการใช้งานครั้งแรก กับ Linux เพราะใน Windows ใช้ได้เลย
# - ล้าง $vip_user เดิมออก
# - แก้ไขการลบผู้ใช้ ให้ลบ Directory ของผู้ใช้ได้
# - รหัสสุ่ม ได้จากการ Random และเก็บใน Session ทำให้รองรับผู้ใช้พร้อมกันหลายคน
# - ทำให้ ?action=folder_listing กลับมาใช้ได้อีกครั้ง
# - เพิ่มการแสดงภาพ secure แทนตัวเลข ทั้งสมัคร และ upload
# Version 2.0
# - เพิ่มระบบ Directory สำหรับเตรียมสอน Template
# - แก้ปัญหารหัสสุ่มอีกครั้ง
# - ยกเลิกรหัส 999999 สำหรับการไม่มีแฟ้ม user.php ในครั้งแรก เพราะมีปัญหากับ Linux
# Version 1.5
# - เพิ่ม .pdf ใน $allow_extension
# - เพิ่มขนาดของ $max_webspace[0] (Standard) เป็น 3 MB
# - เพิ่ม $max_file_size เป็น 5 แสน 102400 * 5;
# - เปลี่ยนวิธีการ random ของ Secure Code ตาม IP และการเลื่อนเวลาอีก 1 หลัก
# - แก้ไขให้ใช้งานกับ Fedora Core 4
# Version 1.4
# - ทำให้ผู้ใช้สมัครพร้อมกันได้
# - เพิ่มจำนวนแฟ้มที่ upload ต่อครั้ง
# - เพิ่มตัวแปร $create_user
# - แสดงรายชื่อ folder ถ้าไม่พบแฟ้ม user.php เมื่อเรียก ?action=folder_listing
# - ปรับระบบแสดง file listing
# - ไม่ load truehits.net ถ้าไม่ใช้ weblampang.com
# - เพิ่มภาษาอังกฤษ และคำอธิบายเรื่อง security code
# - แก้ปัญหา luser session ใน check_password และ unregist ขณะ login
# - ปรับตัวแปร $web_url ให้กำหนด default เป็น $_SERVER['REDIRECT_SCRIPT_URI']
# Version 1.3
# - ปรับให้ใช้กับจอขนาดเกิน 800 แล้วไม่มีปัญหาการแสดงผล
# - แสดงสถานะของสมาชิก แบบ Standard, Silver, Gold และ Diamon และอธิบายในส่วน FAQs
# - ปรับส่วนแสดงผล เพื่อเลือกเรียงเวลาเข้าใช้แบบ ascending หรือ descending
# แบบ 1. จัดเรียงตามเวลาสมัคร เรียงตามแบบมาตรฐาน เหมือน stack
# แบบ 2. Ascending เรียงเวลาเข้าใช้แบบ ไม่ใช้แสดงก่อน
# แบบ 3. Descending เรียงเวลาเข้าใช้แบบ พึ่งใช้แสดงก่อน
# - เพิ่มการแสดง phpinfo() ถ้ารหัสของ admin ถูกต้อง ในส่วน 99 แสดงรหัส admin_password
# - เปลี่ยนการเก็บ ip วัน เวลาใน lastlog.log เป็นวัน เวลา และ IP เพื่อประโยชน์ในการจัดเรียง
# Version 1.2
# - เก็บ ip วัน เวลา ใน lastlog.log
# - เพิ่มตัวเลือกการแสดงข้อมูลสมาชิก ทำให้ลบสมาชิกได้ง่ายขึ้น
# - รายงานการใช้พื้นที่ของสมาชิก
# Version 1.1
# - เพิ่มคำอธิบาย และเปลี่ยนข้อความเป็นภาษาไทยมากขึ้น
# - แก้การแสดงผลให้แสดงรายชื่อสมาชิกทั้งปกติ และแสดงเวลา login ล่าสุดให้ถูกต้อง
# - เพิ่มตัวแปร เพื่อให้ทำการ configuration สมาชิก และระบบง่ายขึ้น
###
## รายชื่อ Module แบ่งตามหน้าที่
## 00 : Default value. You can make your configuration
## 01 : Start session
## 02 : Function Controller
## 03 : Regist for new user 1/2
## 04 : Regist for new user 2/2
## 05 : User listing
## 06 : User login 1/2
## 07 : User login 2/2
## 08 : User logout
## 09 : Upload file
## 10 : Delete file
## 11 : Edit user profile 1/2
## 12 : Edit user profile 2/2
## 13 : Edit html file 1/2
## 14 : Edit html file 2/2
## 81 : folder listing
## 82 : delete user account
## 83 : create admin_password value
## 84 : view source of filemanager.php
## 90 : function : write image
## 91 : function : Get user web space
## 92 : function : Check password and get user information
## 93 : function : File listing
## 94 : function : Upload file sub
## 98 : FAQs
## 99 : User name writing
## 100 : Footer Writing
###
## 00 : Default value. You can make your configuration ###
# Create User
# 0: ไม่สามารถสร้างสมาชิก เพียงแต่แสดงข้อมูล file และ directory (System Closed)
# 1: สามารถสร้างสมาชิกใหม่ได้
$create_user = "1";
# Folder listing lock
# ถ้า $create_user = "0";
# 0: ไม่ต้องใช้รหัสผ่านของ $admin_password
# 1: ต้องใช้ $admin_password
$folder_listing_lock = "1";
# Kewords and Description
$keywords = "free,web,hosting,education,student,webmaster,sysadmin,perl,php,omni,pws";
$description = "Free Web Hosting 1 MB with filemanager by webmaster@thaiall.com";
# View Source Code
# 0: ไม่อนุญาตให้แสดง Source Code
# 1: อนุญาตให้แสดง Source Code
$view_source = "1";
# View FAQs
# 0: ไม่อนุญาตให้แสดง FAQs
# 1: อนุญาตให้แสดง FAQs
$view_faqs = "1";
# ถ้าต้องการรักษาความลับของสมาชิก ควรเปลี่ยนชื่อแฟ้มเก็บข้อมูลเป็นแฟ้มอื่น เช่น user.exe เป็นต้น
$user_file = "user.php";
# นามสกุลที่ยอมให้สมาชิก upload เข้ามาได้
$allow_extension = "html,htm,gif,jpg,jpeg,png,txt,dbf,dat,class,swf,rar,zip,ppt,doc,xls,mdb,pdf,java,js";
# ปกติสมาชิกที่สมัครใหม่จะเป็น Standard คือมีเลข 0 ใน Column ที่ 4
# ถ้าต้องการเพิ่มพื้นที่ให้สมาชิก ก็เปิดแฟ้ม user.php มาแก้เลข 0 เป็นเลขอื่นตามต้องการ
$max_webspace[0] = 1048576 * 1; $type_webspace[0] = "Standard";
$max_webspace[1] = 1048576 * 5; $type_webspace[1] = "Silver";
$max_webspace[2] = 1048576 * 10; $type_webspace[2] = "Gold";
$max_webspace[3] = 1048576 * 20; $type_webspace[3] = "Diamon";
$line_userlisting = 30;
# จำกัดขนาดแฟ้มไม่เกิน 200 KB เพราะถ้าเกินกว่านี้ ผู้มาเปิดเว็บจะใช้เวลามาก
$max_file_size = 102400 * 2;
# ผู้เป็น vip_user จะ upload แล้วแบบใดก็ได้ อยู่นอกเหนือกฎของ $allow_extension
# $vip_user = "tom,dang,sombat,gordonman,science001";
$vip_user = "";
## 01 : Start session ##
# ค่าของ $nutforcrypt มีผลต่อการเข้ารหัส ถ้าเปลี่ยนไป สมาชิกเก่าอาจเข้าระบบไม่ได้
$nutforcrypt = "thaiabc.com"; // ค่านี้ใช้เข้ารหัสให้ซับซ้อนเท่านั้น ไม่เปลี่ยนก็ได้
$msg = ""; // เก็บผลการ upload ไว้ในนี้ว่า error อะไรในแต่ละแฟ้ม ตัวแปรนี้ประกาศเป็น global
$session_timeout = 300; // หากท่านทิ้งเครื่องเกินเป็นวินาที สมาชิกต้อง login ใหม่
#
$ar = split("/",$_SERVER['PHP_SELF']);
$scriptname = $ar[count($ar) - 1];
#
if (isset($_POST['action']))
if ($_POST['action'] == "เข้าใช้บริการ") {
$_SESSION['luser'] = $_POST['luser'];
$_SESSION['lpassword'] = trim(crypt($_POST['lpassword'],$nutforcrypt));
}
if (strlen($web_url) == 0) {
if (isset($_SERVER['SCRIPT_NAME'])) $web_url = $_SERVER['SCRIPT_NAME'];
if (isset($_SERVER['REDIRECT_SCRIPT_URI'])) $web_url = $_SERVER['REDIRECT_SCRIPT_URI'];
$tmp = split($scriptname,$web_url);
$web_url = $tmp[0];
}
#
if (!isset($_SESSION['securekey'])) $_SESSION['securekey'] = 100000 - (rand() % 99999);
if ($_SESSION['securekey'] == 0) $_SESSION['securekey'] = 100000 - (rand() % 99999);
#
$login_page = "
";
#
if (isset($_REQUEST["user"])) $user = $_REQUEST["user"]; else $user = "";
$getadmin = "";
if (isset($_POST["admin_password"])) {
$getadmin = $_POST["admin_password"];
$_SESSION["getadmin"] = $getadmin;
} elseif (isset($_SESSION["getadmin"])) $getadmin = $_SESSION["getadmin"];
$tb_delete = "";
#
$header = "$title
";
#
$ip = explode(".",$_SERVER['REMOTE_ADDR']);
## 02 : Function Controller ##
if (isset($_GET['secure'])) write_secret_image();
echo $header;
if ($create_user == "1")
echo $create_user_menu;
echo $user_menu;
if (isset($_GET['action'])) {
if ($_GET['action'] == "faqs" && $view_faqs == "1") faqs();
if ($_GET['action'] == "source" && $view_source == "1") view_source();
if ($_GET['action'] == "folder_listing") folder_listing();
if ($_GET['action'] == "User_listing" && file_exists($user_file)) user_listing();
if ($_GET['action'] == "User_login") user_login1();
if ($_GET['action'] == "delete_user") echo $tb_delete;
if ($_GET['action'] == "Regist") regist_user1();
}
if (isset($_POST['action'])) {
if ($_POST['action'] == "admin_password") create_admin_password();
if (isset($_POST['admin_password'])) delete_user();
if ($_POST['action'] == "Create Folder" && isset($_SESSION['luser'])) create_folder();
if ($_POST['action'] == "แก้" && $_SESSION['luser'] != "ยังไม่มี") edit_html1();
if ($_POST['action'] == "save_file" && $_POST['keepaction'] == "แก้" && $_SESSION['luser'] != "ยังไม่มี") edit_html2();
if ($_POST['action'] == "แก้ไขข้อมูลสมาชิก" && $_SESSION['luser'] != "ยังไม่มี") edit_user1();
if ($_POST['action'] == "แก้ไขข้อมูลสมาชิก" && isset($_POST['p0']) && trim(crypt($_POST['p0'],$nutforcrypt)) == $_SESSION['lpassword'] && $_SESSION['luser'] != "ยังไม่มี") edit_user2();
if ($_POST['action'] == "ลบ" && $_SESSION['luser'] != "ยังไม่มี") delete_file();
if ($_POST['action'] == "upload") upload_file();
if ($_POST['action'] == "เลิกการทำงาน") user_logout();
if ($_POST['action'] == "เข้าใช้บริการ" || $_POST['action'] == "เข้าจัดการแฟ้ม") user_login2();
}
if (!isset($_GET['action']) && !isset($_POST['action'])) regist_user1();
if (isset($_POST['user'])) {
if ($_SESSION['securekey'] == $_POST['secure']) {
regist_user2();
} else {
echo "ท่านกรอกรหัสสุ่มไม่ถูกต้อง ";
echo "[" . $securekey ."!=". $_POST['secure'] . "]";
echo "สมัครสมาชิกใหม่ ";
}
}
user_functions();
footer();
## 03 : Regist for new user 1/2 ##
function regist_user1() {
global $user_file,$web_url,$login_page,$create_user;
if ($create_user == "0") exit;
if (!file_exists($user_file)) {
$file = fopen($user_file,"a");
fputs($file, "");
fclose($file);
if (!file_exists($user_file)) {
echo "ถ้าโปรแกรมนี้สร้างแฟ้ม $user_file ให้ท่านไม่ได้
ท่านต้องเปลี่ยนระดับสิทธิ์ของ Folder ที่ใช้เก็บโปรแกรมนี้
เพราะปัจจุบันเป็นแบบ Read Only เท่านั้น";
} else {
echo "ระบบสร้างแฟ้ม $user_file ให้ท่านเรียบร้อยแล้ว";
}
exit;
}
$_SESSION['luser'] = "ยังไม่มี";
$securekey = $_SESSION['securekey'];
?>
=$login_page?>
เป้าหมายหลัก (รวมลิงค์เว็บนักเรียนในไทย )
ศึกษา พัฒนา และเผยแพร่โค้ด สำหรับเปิดบริการฟรีเว็บโฮสติ้ง ด้วย Script เพียงแฟ้มเดียว
ทำให้ง่ายสำหรับนักเรียน ครู หรือข้าราชการ ที่จะนำไปเปิดบริการในสถาบัน หรือองค์กรของตนเอง
นโยบายที่กำหนดใน Default Script
1. ให้พื้นที่เพียง 1 MB สำหรับสมาชิก Standard
2. ไม่อนุญาต Server-Side Script เช่น Perl, PHP หรือ ASP
3. แฟ้มที่ upload เข้า Server ต้องไม่เกิน 200 KB
4. Free Web Hosting ของเราเป็นเพียงกรณีศึกษา
การคัดลอก Script หรือ Source Code ไปใช้
1. เครื่องของท่าน ต้องเป็น Web Server ถ้าไม่เป็น ก็ต้องติดตั้งเพิ่ม
2. เครื่องของท่านต้องบริการภาษา PHP
3. โปรแกรมนี้ไม่ใช้ MySQL แต่ใช้ Text File เก็บข้อมูล
4. ถ้าผมพบข้อผิดพลาดจะแก้ไข ให้ท่านกลับมาคัดลอกรุ่นใหม่
การใช้บริการ Free Web Hosting
1. เข้า thainame.net เพื่อใช้บริการ หรือเลือกเข้าชุมชน
2. เข้า weblampang.com เป็นตัวอย่างชุมชนย่อย .. ชุมชนหนึ่ง
3. เข้า thaiabc.net เป็นชุมชนย่อย ที่สมาชิกเป็นเจ้าของโดเมน แล้วสั่งชี้มา
4. คัดลอก Source Code ไปเปิดบริการใน Web Hosting ของตนเอง
}
## 04 : Regist for new user 2/2 ##
function regist_user2() {
global $nutforcrypt,$user_file,$web_url;
$_SESSION['securekey'] = 0;
$have = 0;
$ar = file($user_file);
for ($i=0;$i');
$ur = $_POST['user'];
$ur = str_replace($non, '', $ur);
if ($ur != $_POST['user']) $have = 1;
#
if ($have == 0 && (strlen($_POST['user'])> 2) && (strlen($_POST['user']) < 12) && (strlen($_POST['p1'])> 2) && ($_POST['p1'] == $_POST['p2']) && (strlen($_POST['namesurn'])> 2) && (substr($_POST['user'],0,4) <> "http") && (substr($_POST['user'],0,3) <> "www")) {
$_SESSION['luser'] = $_POST['user'];
$_SESSION['lpassword'] = trim(crypt($_POST['p1'],$nutforcrypt));
$crypt = trim(crypt($_POST['p1'],$nutforcrypt));
$file = fopen($user_file,"a");
fputs($file, $_POST['user'] . ",$crypt,". date("d/m/Y H:i:s") .",0," . $_POST['namesurn'] . "," . $_POST['email'] ."," . $_POST['org'] .",\n");
fclose($file);
$d = $_POST['user'];
mkdir("$d",0777);
$file = fopen("$d"."/index.html","a");
fputs($file,"ขณะนี้ท่านมีพื้นที่ใน Server ตัวนี้เป็นของท่านแล้ว ");
fputs($file,"ขั้นตอนต่อไป คือ สร้างแฟ้ม index.html แล้ว Upload เข้ามาทับแฟ้มเดิม ");
fputs($file,"ถ้า Upload แฟ้ม index.html เข้ามาทับของเดิมแล้ว เว็บเพจที่ท่านเห็นอยู่นี้จะหายไป ");
// fputs($file," ");
fclose($file);
echo "สมัครสมาชิกเรียบร้อย : Completely ";
echo "";
echo "$web_url". $_POST['user'] . " ";
filelisting();
} else {
echo " ";
if ($have> 0) "มีสมาชิกคนนี้อยู่แล้ว ";
if (strlen($_POST['user']) <= 2) "รหัสผู้ใช้สั้นเกินไป ";
if (strlen($_POST['user'])>= 12) "รหัสผู้ใช้ยาวเกินไป ";
if (strlen($_POST['namesurn']) <= 2) "ชื่อ-สกุล มีอย่างน้อย 2 ตัวอักษร ";
if (strlen($_POST['p1']) <= 2) "รหัสผ่านต้องมากกว่า 2 ตัวอักษร ";
if ($_POST['p1'] <> $_POST['p2']) "กรอกรหัสผ่าน 2 ครั้งไม่ตรงกัน ";
echo "ผลการสมัคร ผิดพลาด ให้ท่านกลับไปตรวจสอบข้อมูลใหม่";
if ($have == 1) { echo "รหัสสมาชิก " . $_POST['user'] . " ถูกจองไปแล้ว "; }
echo "สมัครสมาชิกใหม่ ";
}
}
## 05 : User listing ##
function user_listing() {
global $user_file,$line_userlisting,$admin_password,$web_url,$type_webspace;
$utype = "";
if (isset($_GET['utype'])) { $utype = "&utype=" . $_GET['utype']; }
echo "หน้าที่ ";
$ar = file($user_file);
$total_page = round(count($ar)/$line_userlisting);
if ((count($ar) / $line_userlisting)> $total_page) { $total_page++; }
if (!isset($_GET['page'])) { $_GET['page'] = 1; }
$last=count($ar) - $line_userlisting * ($_GET['page'] - 1);
$first=count($ar) - $line_userlisting * $_GET['page'];
if (isset($_GET["q"])) {
$last=count($ar) - 1;
$first=0;
}
if ($first < 0) { $first = 0; }
for ($i=1;$i<=$total_page;$i++) {
echo "$i . ";
if (($i % 30) == 0) echo " ";
}
echo " ". count($ar). " สมาชิก";
echo "
";
echo "รายชื่อสมาชิก ";
echo "ลำดับ เว็บของสมาชิก ";
if (isset($_SESSION['getadmin'])) $getadmin = $_SESSION['getadmin']; else $getadmin ="";
$bg_index = "";
if (!isset($_GET["q"])) $_GET["q"] = "";
if (!isset($_GET['utype'])) {
echo "ชื่อสมาชิก ชื่อสถาบันการศึกษา หรือองค์การ ประเภท เวลาที่สมัคร ";
for ($i=$last-1;$i>=$first;$i--){
$arr = explode(",",$ar[$i]);
$k = count($ar) - $i;
$last = "";
if (file_exists($arr[0] ."/lastlog.log")) {
$arl = file($arr[0] ."/lastlog.log");
if (count($arl)> 0) {
$last = $arl[count($arl)-1];
}
}
if ($bg_index == "") $bg_index = "bgcolor=#ffffaa"; else $bg_index = "";
# type none
$found = 0;
if (strlen($_GET["q"])> 0) {
if ($_GET["key"] == "ค้นชื่อ") { $usefield = $arr[4].$arr[0]; } else { $usefield = $arr[6]; }
if (stristr(strtolower($usefield),strtolower($_GET["q"]))) $found = 1;
}
if ($found == 1 || strlen($_GET["q"]) == 0) {
if (isset($_SESSION['admin_password_login']) && $_SESSION['admin_password_login'] == $admin_password) $del = "# "; else $del = "";
echo "";
echo "$k $arr[0] $del$arr[4] $arr[6] " . $type_webspace[$arr[3]] . " $arr[2] ";
}
}
} else {
if ($_GET['utype'] == "last") {
echo "e-mailข้อมูลการ Sing in ล่าสุด (ถ้ามี) ";
for ($i=$last-1;$i>=$first;$i--){
$arr = explode(",",$ar[$i]);
$k = count($ar) - $i;
$last = "";
if (file_exists($arr[0] ."/lastlog.log")) {
$arl = file($arr[0] ."/lastlog.log");
if (count($arl)> 0) {
$last = $arl[count($arl)-1];
}
}
# type last
$found = 0;
if (isset($_SESSION['admin_password_login']) && $_SESSION['admin_password_login'] == $admin_password) $del = "# "; else $del = "";
if (strlen($_GET["q"])> 0) {
if ($_GET["key"] == "ค้นชื่อ") { $usefield = $arr[4].$arr[0]; } else { $usefield = $arr[6]; }
if (stristr(strtolower($usefield),strtolower($_GET["q"]))) $found = 1;
}
if ($found == 1 || strlen($_GET["q"]) == 0)
$datalast[$i] = "$k $arr[0] $del$arr[5] $last ";
}
if (isset($_GET['direct'])) {
if ($_GET['direct'] == "asc") asort($datalast);
if ($_GET['direct'] == "des") rsort($datalast);
reset($datalast);
}
foreach ($datalast as $v) echo "$v";
} else {
if ($_GET['utype'] == "totfile") {
echo "e-mailจำนวนแฟ้มใน Home Directory ";
for ($i=$last-1;$i>=$first;$i--){
$arr = explode(",",$ar[$i]);
$k = count($ar) - $i;
$totfile = 0;
$dir = "./" . $arr[0];
$dir_handle=opendir($dir);
$retVal[] = "";
while ($file = readdir($dir_handle)) {
if ($file != "." && $file != ".." && $file != "lastlog.log") {
$totfile = $totfile + 1;
$filetypes = filetype($dir."/".$file);
if ($filetypes == "dir") {
$dir_handles=opendir($dir."/".$file);
while ($files = readdir($dir_handles)) {
if ($files != "." && $files != "..")
$totfile = $totfile + 1;
}
}
}
}
closedir($dir_handle);
if ($bg_index == "") $bg_index = "bgcolor=#ffffaa"; else $bg_index = "";
# type totfile
$found = 0;
if (isset($_SESSION['admin_password_login']) && $_SESSION['admin_password_login'] == $admin_password) $del = "# "; else $del = "";
if (strlen($_GET["q"])> 0)
if (stristr(strtolower($arr[6]),strtolower($_GET["q"]))) $found = 1;
if ($found == 1 || strlen($_GET["q"]) == 0) {
echo "";
echo "$k $arr[0] $del$arr[5] $totfile ";
}
}
}}}
echo "
";
}
## 06 : User login 1/2 ##
function user_login1() {
global $login_page;
if (isset($_SESSION['luser'])) session_unregister('luser');
$_SESSION['luser'] = "ยังไม่มี";
echo $login_page;
}
## 07 : User login 2/2 ##
function user_login2() {
$found = check_password();
if ($_POST['action'] == "เข้าใช้บริการ" && $found == 1) {
$file = fopen($_SESSION['luser']."/lastlog.log","a");
fputs($file, date("Y/m/d H:i:s"). "," . $_SERVER['REMOTE_ADDR'] .",\n");
fclose($file);
}
filelisting();
}
## 08 : User logout ##
function user_logout() {
$_SESSION['luser'] = "ยังไม่มี";
echo " ท่าน Sign Out ออกไปเรียบร้อย ขอบคุณที่เข้ามาใช้บริการ";
}
## 09 : Upload file ##
function upload_file() {
global $msg;
for ($i=1;$i<=12;$i++) {
if ($_FILES['upload'.$i]['size']> 0) upload_file_sub($i);
}
if (strlen($msg)> 1) {
echo "ผลการ Upload แฟ้ม : $msg";
echo "ถ้าท่านไม่พบคำว่า Completely ท้ายแฟ้มที่ upload อาจเป็นไปได้ว่าแฟ้มของท่านมีปัญหา หรือ ติดต่อ webmaster เพื่อขอคำปรึกษา
";
}
filelisting();
if (isset($_SESSION['securekey'])) $_SESSION['securekey'] = 100000 - (rand() % 99999);
}
## 10 : Delete file ##
function delete_file() {
$found = check_password();
$thisfile = $_POST['thisfile'];
if ($found == 1) {
$filetype = filetype($thisfile);
if ($filetype == "dir") {
@rmdir($thisfile);
} else {
unlink($thisfile);
}
}
filelisting();
}
## 11 : Edit user profile 1/2 ##
function edit_user1() {
$found = check_password();
global $web_url,$mem_namesurn,$mem_email,$mem_org;
if ($found == 1) {
if (isset($_POST["namesurn"])) $mem_namesurn = $_POST["namesurn"];
if (isset($_POST["email"])) $mem_email = $_POST["email"];
if (isset($_POST["org"])) $mem_org = $_POST["org"];
?>
}
}
## 12 : Edit user profile 2/2 ##
function edit_user2() {
global $user_file,$nutforcrypt;
$found = check_password();
if ($found == 1) {
$ar = file($user_file);
$have = 0;
for ($i=0;$i 2) { $passwd = trim(crypt($_POST['p1'],$nutforcrypt)); }
for ($i=0;$iแก้ไขข้อมูลสมาชิก : completely ";
footer();
}
} else {
echo "ยังไม่มีการปรับปรุงข้อมูล : not update anything ";
echo "เป็นไปได้ว่า รหัสผ่านเก่า ไม่ถูกต้อง ";
}
}
## 13 : Edit html file 1/2 ##
function edit_html1() {
$found = check_password();
if ($found == 1) {
$thisfile = $_POST['thisfile'];
echo "แก้ไขแฟ้ม :: $thisfile ";
echo " ";
echo "";
}
}
## 14 : Edit html file 2/2 ##
function edit_html2() {
$found = check_password();
if ($found == 1) {
$file = fopen($_POST['thisfile'],"w");
fputs ($file,stripslashes($_POST['txt']));
fclose($file);
}
filelisting();
}
## 71 : Create Folder ##
function create_folder() {
global $scriptname;
$found_folder = 0;
$chkfolder = split('[ /,]',$_POST['folder']);
if (count($chkfolder)> 1) $found_folder = 1;
$dir_handle=opendir("./".$_SESSION['luser']);
while ($file = readdir($dir_handle)) {
if ($file != "." && $file != ".." && $file != $scriptname && $file != "index.html" && strlen($_POST['folder'])> 0) {
if (strtolower($_POST['folder']) == strtolower($file)) $found_folder = 1;
}
}
closedir($dir_handle);
if ($found_folder == 0 && strlen($_POST['folder'])> 0) {
mkdir($_SESSION['luser']."/".$_POST['folder'],0777);
filelisting();
} else {
echo " มี Folder หรือ File นี้แล้ว หรือ ชื่อ Folder ไม่ถูกต้อง จึงสร้าง Folder นี้ไม่ได้ ";
}
}
## 81 : folder listing ##
function folder_listing() {
global $user_file,$create_user,$admin_password,$folder_listing_lock;
if ($folder_listing_lock == "1") {
if (!isset($_SESSION['admin_password_login']) || $_SESSION['admin_password_login'] != $admin_password) {
echo "
Admin Password :
";
exit;
} else {
echo "
Sign Out :
";
}
}
if (!file_exists($user_file) || $create_user == "0" || (isset($_SESSION['admin_password_login']) && $_SESSION['admin_password_login'] == $admin_password)) {
$dir_handle=opendir(".");
echo "";
while ($file = readdir($dir_handle)) {
if ($file != "." && $file != "..") {
$filetype = filetype($file);
if ($filetype == "dir") $flist = "Dir :"; else $flist = "File :";
echo "$flist $file ";
}
}
echo "
";
closedir($dir_handle);
} else {
echo "
ตัวแปร \$create_user ต้องเท่ากับ '0' จึงจะมีสิทธิ์ดูรายชื่อ folder ได้ครับ
";
}
}
## 82 : delete user account ##
function delete_user() {
global $nutforcrypt,$admin_password,$user_file,$tb_delete;
$ap = crypt($_POST['admin_password'],$nutforcrypt);
if ($_SESSION['securekey'] == $_POST["secure"] && $ap == $admin_password) {
$ar = file($user_file);
$found = 0;
for ($i=0;$iDelete in ".$user_file." : complete ";
} else {
fputs($file, $ar[$i]);
}
}
fclose($file);
$dir = "./" . $_POST['luser'];
$dir_handle=opendir($dir);
$retVal[] = "";
$retVald[] = "";
while ($file = readdir($dir_handle)) {
if ($file != "." && $file != "..") {
$filetype = filetype("$dir/$file");
$retVal[count($retVal)] = $file;
if ($filetype == "dir") $retVald[count($retVal)] = $file;
}
}
closedir($dir_handle);
# ลบแฟ้มใน Sub
while (list($key, $list) = each($retVald)) {
if ($list != "." && $list != ".." && strlen($list)> 0) {
$retVals[] = "";
if ($dir_handles=opendir("$dir/$list")) {
while ($file = readdir($dir_handles)) {
if ($file != "." && $file != "..") unlink("$dir/$list/$file");
}
closedir($dir_handles);
rmdir("$dir/$list");
}
}
}
# ลบแฟ้มใน Root
while (list($key, $list) = each($retVal)) {
if ($list != "." && $list != ".." && strlen($list)> 0 && file_exists("$dir/$list")) {
$filetype = filetype("$dir/$list");
if ($filetype == "dir") rmdir("$dir/$list"); else unlink("$dir/$list");
}
}
rmdir($_POST['luser']);
}
echo $tb_delete;
} else {
echo "
อาจเพราะ \$admin_password หรือ Secure Code หรือ รหัสสมาชิก
อย่างใด อย่างหนึ่ง ไม่ถูกต้อง " . $tb_delete;
$_SESSION['securekey'] = 0;
}
}
## 83 : create admin_password for $admin_password ##
function create_admin_password() {
global $nutforcrypt,$admin_password;
$x = trim(crypt($_POST['adminpassword'],$nutforcrypt));
if ($x == $admin_password) {
echo "Admin Password : Verified ";
$_SESSION['admin_password_login'] = $x;
echo " ";
footer();
} else {
$_SESSION['admin_password_login'] = $x;
echo "". $_SESSION['admin_password_login'];
echo ' นำรหัสที่ถูกแปลงนี้ ไปกำหนดให้ $admin_password ได้ ';
footer();
}
}
## 84 : view source of filemanager.php ##
# ยกเลิกชื่อ filemanager.php เป็น index.php เมื่อ 2549-03-26
function view_source() {
global $scriptname;
echo "
เพียงแต่คัดลอกโปรแกรมนี้ไปไว้ใน Web Server ของท่าน ก็สามารถเปิดบริการ Free Web Hosting ได้แล้ว
โปรแกรมนี้ใช้ Text File เก็บข้อมูล และทดสอบเปิดบริการใน se-ed.net ยังใช้ได้เลยครับ ";
echo "";
$ar = file($scriptname);
for ($i=0;$i";
echo " ใช้ Mouse Click ในกรอบที่มี Source Code แล้วกด CTRL-A บนแป้นพิมพ์ แล้วกดปุ่ม CTRL-C ไปเปิด Notepad แล้วกดปุ่ม CTRL-V หลังแก้ไขค่าต่าง ๆ ให้ Save As เป็น $scriptname ";
echo ' เมื่อได้โปรแกรมไป ควรแก้ตัวแปร $web_url ในแฟ้ม $scriptname เป็นชื่อเว็บไซต์ของท่าน เพียงเท่านี้ก็เปิดบริการ Free Web Hosting อย่างง่าย ๆ ถ้าเครื่องท่านเป็น Web server และบริการ PHP';
echo "
";
}
## 90 : function : write image ##
function write_secret_image() {
header("Content-type: image/png");
$string = $_SESSION['securekey']; // 6 Numbers
$width = 70;
$height = 15;
$im = @imagecreate ($width,$height);
$text_color = imagecolorallocate ($im, 255, 255, 255);
$text_color2 = imagecolorallocate ($im, 200, 0, 0);
$l = ImageColorAllocate($im, 200, 100, 100);
$red = ImageColorAllocate($im, 255, 0, 0);
imagefill($im, 0, 0, $red);
$col = (rand() % 10) + 3;
$font = (rand() % 2) + 4;
imagestring ($im, $font, $col + 1, 1, $string, $text_color2);
imagestring ($im, $font, $col, 0, $string, $text_color);
imageinterlace($im, 1);
imageline($im, 2, 4, 65, 4, $l);
imageline($im, 2, 11, 65, 11, $l);
imagepng ($im);
imagedestroy($im);
exit;
}
## 91 : function : Get user web space ##
function space_used() {
$total = 0;
$dir = "./" . $_SESSION['luser'];
$dir_handle=opendir($dir);
while ($file = readdir($dir_handle)) {
if ($file != "." && $file != "..") {
$filesize = filesize("$dir/$file");
$total = $total + $filesize;
}
}
closedir($dir_handle);
return $total;
}
## 92 : function : Check password and get user information ##
function check_password() {
global $user_file,$mem_type,$mem_namesurn,$mem_email,$mem_org;
$found = 0;
if ($_POST['action'] <> "เข้าใช้บริการ") {
if (isset($_POST['luser'])) $_SESSION['luser'] = $_POST['luser'];
if (isset($_POST['lpassword'])) $_SESSION['lpassword'] = $_POST['lpassword'];
}
if (!isset($_SESSION['luser'])) {
$_SESSION['luser'] ="";
} else {
$ar = file($user_file);
for ($i=0;$i";
echo "";
echo '' . "\n";
echo ' ';
echo ' ';
echo 'นามสกุลของแฟ้มที่อนุญาต คือ $allow_extension และขนาดแฟ้มต้องไม่เกิน $max_file_size Byte
";
echo "";
echo "";
} else {
// check $found
$_SESSION['luser'] = "ยังไม่มี";
echo "รหัสผู้ใช้ หรือรหัสผ่าน ไม่ถูกต้อง $login_pageBACK ";
}
}
## 94 : function : Upload file sub ##
function upload_file_sub($up) {
global $max_webspace,$mem_type,$allow_extension,$max_file_size,$vip_user,$msg;
$found = check_password();
if ($_SESSION['securekey'] == $_POST["secure"]) {
# check extension of file
$ar_last_ext = explode(".",$_FILES['upload'.$up]['name']);
$last_ext = $ar_last_ext[count($ar_last_ext) - 1];
$ar = explode(",",$allow_extension);
$found_ext = 0;
for ($i=0;$i 0 && $size < $max_file_size && $size < $rest) {
$name = $_FILES['upload'.$up]['name'];
// $copypath = $_SESSION['luser'];
$copypath = $_POST['folder'];
copy($_FILES['upload'.$up]['tmp_name'],"$copypath/$name");
$msg = $msg . "แฟ้ม " . $_FILES['upload'.$up]['name'] . " : Completely ";
} else {
$msg = $msg . "แฟ้ม " . $_FILES['upload'.$up]['name'] . " : ขนาดแฟ้มมีปัญหา หรือพื้นที่ไม่พอ ขนาดแฟ้ม $size byte เหลือ $rest byte ";
}
} else {
$msg = $msg . "แฟ้ม " . $_FILES['upload'.$up]['name'] . " : สกุลของแฟ้มนี้ ไม่ถูกอนุญาต ";
}
}
}
## 98 : FAQs ##
# เคยไม่กำหนดอะไร ก็เข้า FAQs แล้ว ด้วย if (!isset($_GET['action']) && !isset($_POST['action'])) {
#
function faqs() {
global $tb_delete,$user_file,$scriptname;
print "
1. แนะนำบริการ ของเพื่อนร่วมอุดมการณ์ (Free Web Hosting)
1.1 แนะนำ free Web Hosting มืออาชีพ ที่ยังเปิดให้บริการอยู่
1.2 เหตุที่เว็บนี้ หรือเว็บโฮสติ้งต่าง ๆ ต้องจำกัดบริการ
1.2.1 ไม่สามารถรองรับ Data transfer หรือ Bandwidth ที่มีปริมาณสูงมาก เพราะรายรับไม่สูงตามปริมาณสมาชิก
1.2.2 ไม่สามารถให้ web space ได้มาก ถ้าอนุญาตให้ใช้พื้นที่มาก ๆ จำนวนสมาชิกก็จะต้องน้อยลง เพราะกำแพงเรื่องขนาด Harddisk ไม่สูง
1.2.3 เครื่องคอมพิวเตอร์ที่ใช้มีความเร็วไม่สูง เพราะไม่ใช่มืออาชีพ และไม่สามารถลงทุนให้ทันกับเทคโนโลยีที่เปลี่ยนทุกเดือน
1.2.4 ทั้งหมดทำเป็นกรณีศึกษา ให้เยาวชนไทยศึกษา หรือภาคธุรกิจ นำไปพัฒนาจนเปิด free Web Hosting
2. ใครมีสิทธิ์ใช้บริการ บริการอะไร และใครมีสิทธิ์ถูกลบจากระบบ
2.1 Server ตัวนี้ให้บริการ แก่ใครบ้าง และอย่างไร
2.1.1 ชาวลำปาง ที่เป็น นักเรียน นักศึกษา ภาคธุรกิจ นักวิชาการ ข้าราชการ และทุกคน ที่ต้องการพื้นที่พัฒนาเว็บในเชิงสร้างสรรค์
2.1.2 บริการที่เพิ่มขึ้น มีให้กับผู้ที่ต้องการใช้บริการจริงจัง ด้วยการโทรมาคุย เช่น ชื่อที่สั้นขึ้นโดยไม่มีคำว่า home เช่น http://www.weblampang.com/burin02
2.1.3 บริการ php, asp, perl, ftp เปิดให้ชาวลำปาง มีสามารถอ้างอิงที่อยู่ เบอร์โทรศัพท์ และรักการพัฒนาเชิงสร้างสรรค์ เพราะอาจทำให้ server ล่มได้โดยง่าย
2.1.4 ผู้ใช้บริการ จะต้อง backup ข้อมูลของตนเองไว้อย่างดีที่บ้าน และต้องไม่ส่งข้อมูลสำคัญเข้า server เพราะข้อมูลอาจหาย หรือถูก hack ไปได้ในอนาคต
2.2 Account ที่อาจถูกลบ
2.2.1 ไม่มีข้อมูล หรือข้อมูลไม่สมบูรณ์ เช่น ทำเว็บไม่เสร็จ และไม่เข้ามาพัฒนาต่อเป็นเวลานาน เป็นต้น
2.2.2 ห้ามขายยาลดความอ้วน หรือบริการใด ๆ แบบ work at home หรือชวนทำงานที่บ้าน
2.2.3 ห้ามเก็บภาพผิดกฏหมาย หรือล่อแหลม หรือ MP3 หรือ Hack software เป็นต้น
2.2.4 มีปริมาณการเข้าใช้บริการมากผิดปกติ
2.2.5 ตามที่ทีมงานเห็นสมควร
3. เปลี่ยนระดับสิทธิ์ของผู้ใช้จาก Standard เป็นระดับสูงขึ้นอย่างไร
โปรแกรมเตรียมระดับผู้ใช้ไว้ 4 ระดับ คือ Standard:0, Silver:1, Gold:2 หรือ Diamon:3
ผู้เขียนยังไม่เขียนโปรแกรมปรับปรุงส่วนนี้ให้สะดวก การเปลี่ยนสิทธิ์ต้องใช้ notepad หรือ vi เปิดแฟ้ม $user_file
มาแก้เลข 0 เป็นเลข 1 ถึง 3 ตามต้องการ สำหรับค่าสถานะคือเลขที่อยู่ข้างหน้าชื่อในแฟ้ม $user_file นั่นเอง
ส่วนสถานะจะมีผลต่อการให้พื้นที่สมาชิกโดยตรง และสามารถเพิ่มลดได้ผ่านตัวแปร \$max_webspace
97. รายชื่อ folder ใน current directory
เรียกใช้ ?action=folder_listing
เช่น http://127.0.0.1/". $scriptname ."?action=folder_listing
- แสดงรายชื่อ Directory ถ้าไม่มีพบแฟ้ม $user_file
- เพิ่ม Option เพื่อแสดงรายชื่อแฟ้มใน Directory สำหรับ Web Server ที่ปิดการแสดงรายชื่อแฟ้ม
- ถ้า Sign in เป็น Admin จะแสดงรายชื่อ Directory ได้
98. ผู้ดูแลที่ได้โปรแกรมนี้ไปใช้ จะลบผู้ใช้ในระบบตนได้อย่างไร
เพื่ออำนวยความสะดวกให้กับผู้ดูแลในการลบผู้ใช้ จึงมีบริการลบรหัสผู้ใช้ และแฟ้มทั้งหมดของผู้ใช้ ด้วยการกดปุ่มครั้งเดียว
แต่ผู้ที่จะลบ จะต้องทราบรหัสผ่านของผู้ดูแล ซึ่งถูกเข้ารหัส และเก็บไว้ในตัวแปร \$admin_password หากผู้ดูแลยังไม่มีรหัสนี้ให้ดูจากข้อ 99
จึงจะมีสิทธิ์ และลบผู้ใช้ที่ต้องการได้
$tb_delete
99. วิธีสร้างรหัส ของ admin เพื่อนำไปแก้ Code
ส่วนนี้ถูกใช้โดยผู้ดูแลระบบ ที่ต้องการนำรหัส ที่ถูกเข้ารหัสแล้วไปแทนที่ในตัวแปร \$admin_password เพื่อใช้สำหรับลบสมาชิก
ด้วยการกรอกรหัสผ่านใหม่ลงในช่องด้านล่าง แล้วกดปุ่ม admin_password จากนั้นก็นำรหัส 13 ตัวอักษร เช่น peKJaPFsM79Kw
ไปแทนที่ในตัวแปร \$admin_password ซึ่งอยู่ในแฟ้ม ".$scriptname." และในกรณีที่ท่านลืมรหัสผ่าน ก็สามารถกำหนดใหม่ แล้วนำรหัส 13 ตัวอักษร
ชุดใหม่ ไปแทนที่ในตัวแปร \$admin_password อีกครั้ง .. ถ้ารหัสที่ท่านกรอกตรงกับรหัสเดิมก็จะแสดงคำว่า Verified
เพื่อให้รหัสถูกต้อง และบันทึกเข้า Session ทำให้ท่านมีสิทธิ ลบรหัสสมาชิกได้โดยง่าย
ถ้ากรอกรหัสที่ถูกต้อง แล้วกดปุ่ม admin_password เมื่อเข้าไปแสดงรายชื่อสมาชิกจะพบเครื่องหมาย # หลัง User Name
ซึ่งช่วยให้เลือกลบข้อมูลสมาชิกได้ง่ายขึ้น แต่การลบก็ต้องใช้ admin_password อีกครั้ง
";
}
## 99 : User name writing ##
function user_functions() {
global $web_url;
if (isset($_SESSION['luser'])) {
echo '";
}
}
## 100 : Footer Writing ##
function footer() {
global $title;
?>
exit; } ?>