|
<?php 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://www.thainame.net/weblampang/"; // สำหรับการใช้ใน subdirectory #$web_url = "http://www.weblampang.com/"; $web_url = ""; // สำหรับ ใช้ชื่อเดิมของเครื่อง เช่น http://127.0.0.1/ เป็นต้น # Admin Password for Delete User $admin_password = "thqVWqAnSaA8c"; // (do not โด นอต ช่วยจำ) # ค่าที่จะกรอกให้ตัวแปรนี้ ต้องเข้ารหัสมาแล้ว โดยมีขั้นตอนดังนี้ # 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.6a (September 13,2551)"; $title = "ฟรีโฮมเพจ ด้วยระบบ File Manager รุ่น 3.0 (October 5,2563)"; ########################################################### /* filemanager.php (ปรับปรุงโดย webmaster@thaiall.com) โปรแกรมบริหารสมาชิกเว็บโฮสติ้ง : เพื่อให้นักพัฒนาถึงจุดหมายได้เร็วที่สุด ระบบนี้ออกแบบให้ผู้ดูแลแก้ไขค่าได้เอง ผู้สนับสนุนการสร้างโปรแกรมนี้รุ่น 1.0 คือ ดร.มาลี สุวรรณอัตถ์ /malee/ Version 3.0 (2563-10-05) - ปรับให้รองรับ php version 5 - เปลี่ยนให้แฟ้มชื่อ index.php ทำงานบน xampp ได้ เปิดเฉพาะ apache ก็ใช้งานได้ - รุ่น 3.0 - 2562 ถึง 2563 ได้รับการสนับสนุนจาก http://ttpcargo.com/ ขอบคุณมากครับ Version 2.6 (2551-09-13) - แก้การ hack ผ่าน $cmd = `ls`; ใน create, update ปัญหาคือถูก hack ผ่าน organization name ได้รับแจ้งจาก admin@thaiwake.com 2551-09-10 ป้องกันการ Post ชื่อแฟ้มผ่านการแก้ไขแฟ้ม Html - แก้ไขให้ Folder Listing แสดงชื่อ และขนาด Folder - การสร้างแฟ้ม user.php ครั้งแรกเพิ่ม exit ไปที่ต้นแฟ้ม 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 95 : function : Remove special character 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']); $ar = preg_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 = preg_split("$scriptname",$web_url); // $web_url = $tmp[0]; $tmp = strpos($web_url, $scriptname); if ($tmp !== false) { $web_url = substr($web_url,0,$tmp); } } # if (!isset($_SESSION['securekey'])) $_SESSION['securekey'] = 100000 - (rand() % 99999); if ($_SESSION['securekey'] == 0) $_SESSION['securekey'] = 100000 - (rand() % 99999); # $login_page = "<br/><table width=400 align=center bgcolor=#dddddd><form action=? method=post> <tr><td colspan=2 align=center bgcolor=black><font color=white> เข้าจัดการแฟ้ม (File Manager)</td></tr> <tr><td align=right>รหัสสมาชิก :</td><td><input name=luser size=16> เช่น romeo</td></tr> <tr><td align=right>รหัสผ่าน :</td><td><input name=lpassword size=16 type=password> เช่น thelover</td></tr> <tr><td></td><td colspan=2><input type=submit name=action value=เข้าใช้บริการ> <-- click to <b>Sign in</b> <br/><font color=red>ถ้าเข้า Sign in ได้สำเร็จ อย่ากดปุ่ม Back <br/>เพราะสถานะการเข้าใช้จะหมดอายุ</font></td></tr> </form></table>"; # 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 = "<table align=center bgcolor=#404040> <form action=? method=post target=_top><td align=right><font color=white> <img src='?secure=yes'> => <input name=secure size=20><br/> รหัสสมาชิก : <input name=luser size=20 value='$user'><br/> Admin Password : <input name=admin_password size=20 type=password value='$getadmin'><br/> <center><input type=submit value=delete_user name=action> </td></form></table>"; # $header = "<html><head><title>$title</title> <meta http-equiv=content-type content='text/html; charset=utf-8'> <meta name=keywords content='$keywords'> <meta name=description content='$description'> <style type='text/css'> body{scrollbar-base-color:red;scrollbar-arrow-color:white;font-family:microsoft sans serif;font-size:10pt;color:black;} td{font-size:10pt;font-family:microsoft sans serif;} a:link{COLOR:#0000ff;TEXT-DECORATION:none;font-family:microsoft sans serif} a:visited{COLOR:#000080;TEXT-DECORATION:none;font-family:microsoft sans serif} a:hover{COLOR:#008080;TEXT-DECORATION:underline;font-family:microsoft sans serif} input{font-family:microsoft sans serif;font-size:12px;color:blue;background:#ffffdd;} textarea{font-family:microsoft sans serif;font-size:12px;color:blue;scrollbar-base-color:red;scrollbar-arrow-color:white;background:#fffffd;} </style></head><body topmargin=0 leftmargin=0><base target=_top> <table height=55 width=760 bgcolor=#ffffdd align=center><tr align=center> <td valign=top><font color=white><a href=$web_url target=_top style={color:white;}>หน้าหลัก<br/>Home</a>"; # $create_user_menu = "<td valign=top><a href=?action=Regist style={color:#ffffdd;}>สมัครสมาชิกใหม่<br/>Sign up</a> <td valign=top><a href=?action=User_listing style={color:#ffffdd;}>แสดงรายชื่อสมาชิก<br/>Members Listing</a> <td valign=top><a href=?action=User_login style={color:#ffffdd;}>เข้าใช้ เพิ่ม ลบแฟ้ม<br/>Sign in + Upload</a>"; # $user_menu = "<td valign=top><a href=?action=source style={color:#ffffdd;}>รหัสต้นฉบับ<br/>Source Code</a> <td valign=top><a href=?action=faqs style={color:#ffffdd;}>คำถาม & คำตอบ<br/>Questions & Answers</a> </td></tr></table>"; # $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; user_functions(); if (isset($_GET['action'])) { if ($_GET['action'] == "faqs" && $view_faqs == "1") faqs(); if ($_GET['action'] == "source" && $view_source == "1") view_source(); if (isset($_GET['dir'])) $d = $_GET['dir']; else $d = ""; if ($_GET['action'] == "folder_listing") folder_listing($d); 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 "<font size=6><center>ท่านกรอกรหัสสุ่มไม่ถูกต้อง "; echo "[" . $securekey ."!=". $_POST['secure'] . "]"; echo "<br/><a href=?action=Regist>สมัครสมาชิกใหม่</a>"; } } 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, chr(60).'?php echo "not allow to view"; exit; ?'.chr(62)."\n"); fclose($file); if (!file_exists($user_file)) echo "ถ้าโปรแกรมนี้สร้างแฟ้ม $user_file ให้ท่านไม่ได้<br/>ท่านต้องเปลี่ยนระดับสิทธิ์ของ Folder ที่ใช้เก็บโปรแกรมนี้<br/>เพราะปัจจุบันเป็นแบบ Read Only เท่านั้น"; else { echo "<center>โปรแกรมนี้สร้างแฟ้ม $user_file สำหรับเก็บข้อมูลสมาชิกให้ท่านเรียบร้อยแล้ว"; echo "<meta http-equiv=refresh content='3;url=?action=Regist'>"; } exit; } $_SESSION['luser'] = "ยังไม่มี"; $securekey = $_SESSION['securekey']; ?> <table bgcolor=white width=760 align=center><td valign=top> <table align=center bgcolor=#dddddd width=400><form action=? method=post> <tr><td colspan=2 align=right bgcolor=black><font color=white> ตัวอย่างเว็บที่จะได้รับ <font color=yellow><?php echo $web_url; ?><b>ชื่อภาษาอังกฤษ</b></td></tr> <tr><td align=right>รหัสสุ่ม (Random Code) <img src=?secure=yes></td><td><input name=secure size=20>1*</td></tr> <tr><td align=right bgcolor=#808080 colspan=2><font color=#ddffdd>ให้เปลี่ยนคำว่า your_english_name เป็น ชื่อเว็บภาษาอังกฤษที่ท่านต้องการ <br/>ข้อมูลทั้งหมดที่กรอกต้องเป็นจริง มิเช่นนั้นเว็บของท่านอาจถูกลบ</td></tr> <tr><td align=right><?php echo $web_url; ?></td><td><input name=user size=20 value=your_english_name>2*</td></tr> <tr><td align=right>รหัสผ่านที่ต้องการ (Password)</td><td><input name=p1 size=20 type=password>3*</td></tr> <tr><td align=right>ยืนยันรหัสผ่านอีกครั้ง (Password Again)</td><td><input name=p2 size=20 type=password>4*</td></tr> <tr><td align=right>ชื่อ-สกุลภาษาไทย (Name Surname)</td><td><input name=namesurn size=20>5*</td></tr> <tr><td align=right>e-mail (เช่น boy@thaiall.com)</td><td><input name=email size=20>6</td></tr> <tr><td align=right>สถาบันการศึกษา(School Name)</td><td><input name=org size=20>7</td></tr> <tr><td></td><td colspan=2 align=center><input type=submit value=สมัครสมาชิกใหม่ name=action></td></tr></form></table> <?php echo $login_page; ?> </td><td valign=top bgcolor=#dddddd> <table bgcolor=#ddffdd width=100%><td> <b>เป้าหมายหลัก</b> (<a href=http://www.thaiall.com/student>รวมลิงค์เว็บนักเรียนในไทย</a>) <br/>ศึกษา พัฒนา และเผยแพร่โค้ด สำหรับเปิดบริการฟรีเว็บโฮสติ้ง ด้วย Script เพียงแฟ้มเดียว ทำให้ง่ายสำหรับนักเรียน ครู หรือข้าราชการ ที่จะนำไปเปิดบริการในสถาบัน หรือองค์กรของตนเอง </td></table> <table bgcolor=#ddffff width=100%><td> <b>นโยบายที่กำหนดใน Default Script</b> <br/>1. ให้พื้นที่เพียง 1 MB สำหรับสมาชิก Standard <br/>2. ไม่อนุญาต Server-Side Script เช่น Perl, PHP หรือ ASP <br/>3. แฟ้มที่ upload เข้า Server ต้องไม่เกิน 200 KB <br/>4. Free Web Hosting ของเราเป็นเพียงกรณีศึกษา </td></table> <table bgcolor=#ddffdd width=100%><td> <b>การคัดลอก Script หรือ Source Code ไปใช้</b> <br/>1. เครื่องของท่าน ต้องเป็น Web Server ถ้าไม่เป็น ก็ต้องติดตั้งเพิ่ม <br/>2. เครื่องของท่านต้องบริการภาษา PHP <br/>3. โปรแกรมนี้ไม่ใช้ MySQL แต่ใช้ Text File เก็บข้อมูล <br/>4. ถ้าผมพบข้อผิดพลาดจะแก้ไข ให้ท่านกลับมาคัดลอกรุ่นใหม่ </td></table> <table bgcolor=#ddffff width=100%><td> <b>การใช้บริการ Free Web Hosting</b> <br/>1. เข้า thainame.net เพื่อใช้บริการ หรือเลือกเข้าชุมชน <br/>2. เข้า weblampang.com เป็นตัวอย่างชุมชนย่อย .. ชุมชนหนึ่ง <br/>3. เข้า thaiabc.net เป็นชุมชนย่อย ที่สมาชิกเป็นเจ้าของโดเมน แล้วสั่งชี้มา <br/>4. คัดลอก Source Code ไปเปิดบริการใน Web Hosting ของตนเอง </td></table> </td></table> <?php } ## 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<count($ar);$i++) { $arr = explode(",",$ar[$i]); if ($arr[0] == $_POST['user']) $have = 1; } $u1 = $_POST['user'] . $_POST['p1'] . $_POST['namesurn'] . $_POST['email'] . $_POST['org']; $u2 = chkstr($u1); if ($u1 != $u2) $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,"<meta http-equiv=content-type content='text/html; charset=utf-8'><body bgcolor=#ffffdd><br/><center>ขณะนี้ท่านมีพื้นที่ใน Server ตัวนี้เป็นของท่านแล้ว<br/>"); fputs($file,"ขั้นตอนต่อไป คือ สร้างแฟ้ม index.html แล้ว Upload เข้ามาทับแฟ้มเดิม<br/>"); fputs($file,"ถ้า Upload แฟ้ม index.html เข้ามาทับของเดิมแล้ว เว็บเพจที่ท่านเห็นอยู่นี้จะหายไป<br/>"); fclose($file); echo "<center><font face=impact size=6>สมัครสมาชิกเรียบร้อย : <font color=red>Completely</font>"; echo "<br/><font face=fixedsys><a href="; echo "$web_url". $_POST['user'] . ">"; echo "$web_url". $_POST['user'] . "</a></font>"; filelisting(); } else { echo "<center><font size=6 color=red>"; if ($have> 0) "มีสมาชิกคนนี้อยู่แล้ว<br/>"; if (strlen($_POST['user']) <= 2) "รหัสผู้ใช้สั้นเกินไป<br/>"; if (strlen($_POST['user'])>= 12) "รหัสผู้ใช้ยาวเกินไป<br/>"; if (strlen($_POST['namesurn']) <= 2) "ชื่อ-สกุล มีอย่างน้อย 2 ตัวอักษร<br/>"; if (strlen($_POST['p1']) <= 2) "รหัสผ่านต้องมากกว่า 2 ตัวอักษร<br/>"; if ($_POST['p1'] <> $_POST['p2']) "กรอกรหัสผ่าน 2 ครั้งไม่ตรงกัน<br/>"; echo "ผลการสมัคร ผิดพลาด<br/>ให้ท่านกลับไปตรวจสอบข้อมูลใหม่"; if ($have == 1) { echo "<br/><font color=blue>รหัสสมาชิก " . $_POST['user'] . " ถูกจองไปแล้ว</font>"; } echo "<br/><a href=?action=Regist>สมัครสมาชิกใหม่</a>"; } } ## 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 "<base target=_blank><table width=760 align=center><td valign=top width=30>หน้าที่<td valign=top>"; $ar = file($user_file); $cntf = count($ar); $total_page = round($cntf/$line_userlisting); if (($cntf / $line_userlisting)> $total_page) { $total_page++; } if (!isset($_GET['page'])) $_GET['page'] = 1; $clast = $cntf - $line_userlisting * ($_GET['page'] - 1); $cfirst = $cntf - $line_userlisting * $_GET['page']; if (isset($_GET["q"])) { $clast = $cntf - 1; $cfirst = 0; } if ($cfirst < 0) $cfirst = 0; for ($i=1;$i<=$total_page;$i++) { echo "<a href=?action=User_listing&page=$i" . $utype . " target=_self>$i</a> . "; if (($i % 30) == 0) echo "<br/>"; } echo "<td bgcolor=#dddddd width=1> <td valign=top align=center width=30>". ($cntf - 1) . "<br/>สมาชิก"; echo "</table><table width=760 align=center><tr bgcolor=#ddffdd><form action=? method=get target=_self><input type=hidden name=action value=User_listing>"; if (isset($_GET['utype'])) echo "<input type=hidden name=utype value=". $_GET['utype'] .">"; echo "<td><b>คำค้น :</b> <input name=q size=10> <input type=submit value=ค้นชื่อสมาชิก name=key> <input type=submit value=ค้นสถาบัน name=key> <b>แสดงผล</b> <a href=?action=User_listing target=_self>มาตรฐาน</a> , <a href=?action=User_listing&utype=last target=_self >แสดงเวลา</a> , <a href=?action=User_listing&utype=totfile target=_self>จำนวนแฟ้ม</a> | <b>เรียงแบบ</b> <a href=?action=User_listing&utype=last&direct=asc target=_self>a-z</a> , <a href=?action=User_listing&utype=last&direct=des target=_self>z-a</a> | <a href=?action=delete_user>ลบสมาชิก</a>"; echo "</td></form></table>"; echo "<table width=760 border=1 bordercolor=white bgcolor=#ffffdd align=center><tr bgcolor=#aaaaaa><td colspan=6><b>รายชื่อสมาชิก</b></td></tr>"; echo "<tr bgcolor=#dddddd><td>ลำดับ</td><td>เว็บของสมาชิก</td><td>"; if (isset($_SESSION['getadmin'])) $getadmin = $_SESSION['getadmin']; else $getadmin =""; $bg_index = ""; if (!isset($_GET["q"])) $_GET["q"] = ""; if (!isset($_GET['utype'])) { echo "ชื่อสมาชิก</td><td>ชื่อสถาบันการศึกษา หรือองค์การ</td><td>ประเภท</td><td>เวลาที่สมัคร</td></tr>"; for ($i=$clast;$i>=$cfirst;$i--){ if (!isset($ar[$i])) continue; $arr = explode(",",$ar[$i]); if (count($arr) < 8) continue; $k = $cntf - $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) && count($arr) > 5) { if (isset($_SESSION['admin_password_login']) && $_SESSION['admin_password_login'] == $admin_password) $del = "<a href='?action=delete_user&admin_password=$getadmin&user=$arr[0]' target=_self>#</a>"; else $del = ""; echo "<tr ". $bg_index .">"; echo "<td>$k</td><td><a href=$web_url$arr[0]>$arr[0]</a> $del</td><td><a title='$arr[5] " . $type_webspace[$arr[3]] . " [".$last."]'>$arr[4]</a></td><td>$arr[6]</td><td>" . $type_webspace[$arr[3]] . "</td><td>$arr[2]</td></tr>"; } } } else { if ($_GET['utype'] == "last") { echo "e-mail</td><td>ข้อมูลการ Sign in ล่าสุด (ถ้ามี)</td></tr>"; for ($i=$clast - 1;$i>=$cfirst;$i--){ if (!isset($ar[$i])) continue; $arr = explode(",",$ar[$i]); if (count($arr) < 8) continue; $k = $cntf - $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 = "<a href='?action=delete_user&admin_password=$getadmin&user=$arr[0]' target=_self>#</a>"; 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) && count($arr) > 5) $datalast[$i] = "<! $last><tr><td>$k</td><td><a href=$web_url$arr[0]>$arr[0]</a> $del</td><td>$arr[5]</td><td>$last </td></tr>"; } 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</td><td>จำนวนแฟ้มใน Home Directory</td></tr>"; for ($i=$clast;$i>=$cfirst;$i--){ if (!isset($ar[$i])) continue; $arr = explode(",",$ar[$i]); if (count($arr) < 8) continue; $k = $cntf - $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 = "<a href='?action=delete_user&admin_password=$getadmin&user=$arr[0]' target=_self>#</a>"; else $del = ""; if (strlen($_GET["q"])> 0) if (stristr(strtolower($arr[6]),strtolower($_GET["q"]))) $found = 1; if (($found == 1 || strlen($_GET["q"]) == 0) && count($arr) > 5) { echo "<tr ". $bg_index .">"; echo "<td>$k</td><td><a href=$web_url$arr[0]>$arr[0]</a> $del</td><td>$arr[5]</td><td>$totfile</td></tr>"; } } } } } echo "</table>"; } ## 06 : User login 1/2 ## function user_login1() { global $login_page; // if (isset($_SESSION['luser'])) session_unregister('luser'); if (isset($_SESSION['luser'])) unset($_SESSION['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 "<font size=6><center>ท่าน Sign Out ออกไปเรียบร้อย<br/>ขอบคุณที่เข้ามาใช้บริการ"; } ## 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 "<table width=760 bgcolor=yellow align=center><td><b>ผลการ Upload แฟ้ม :</b>$msg"; echo "<br/><font color=red>ถ้าท่านไม่พบคำว่า <b>Completely</b> ท้ายแฟ้มที่ upload อาจเป็นไปได้ว่าแฟ้มของท่านมีปัญหา หรือ <b>ติดต่อ webmaster</b> เพื่อขอคำปรึกษา</td></table>"; } 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"]; ?> <br/><table width=760 bgcolor=#dddddd align=center><form action=? method=post> <tr><td align=right><?php echo $web_url; ?></td><td><input type=hidden name=euser size=20 value=<?php echo $_SESSION['luser']; ?>><b><?php echo $_SESSION['luser']; ?></b></td></tr> <tr bgcolor=black><td align=right><font color=white>รหัสผ่านเดิม</td><td><input name=p0 size=20 type=password><font color=white> รหัสนี้สำคัญท่านต้องกรอกรหัสเดิมให้ถูกต้อง (Required)</td></tr> <tr bgcolor=#ffdddd><td align=right>รหัสผ่านที่ต้องการ</td><td><input name=p1 size=20 type=password> ถ้าไม่เปลี่ยนรหัสก็ไม่ต้องกรอก (Option)</td></tr> <tr bgcolor=#ffdddd><td align=right>ยืนยันรหัสผ่านอีกครั้ง</td><td><input name=p2 size=20 type=password> ถ้าไม่เปลี่ยนรหัสก็ไม่ต้องกรอก (Option)</td></tr> <tr><td align=right>ชื่อ-สกุลภาษาไทย (เช่น สมคิด เกาะคา)</td><td><input name=namesurn size=50 value='<?php echo $mem_namesurn; ?>'></td></tr> <tr><td align=right>e-mail (เช่น webmaster@thaiall.com)</td><td><input name=email size=50 value='<?php echo $mem_email; ?>'></td></tr> <tr><td align=right>ชื่อ สถาบันการศึกษา หรือองค์การ</td><td><input name=org size=50 value='<?php echo $mem_org; ?>'></td></tr> <tr><td></td><td colspan=2><input type=submit value=แก้ไขข้อมูลสมาชิก name=action></td></tr> </form></table> <?php } } ## 12 : Edit user profile 2/2 ## function edit_user2() { global $user_file,$nutforcrypt; $no_msg = "<center><font size=6 color=red>ยังไม่มีการปรับปรุงข้อมูล : not update anything<br/>เป็นไปได้ว่า รหัสผ่านเก่าไม่ถูกต้อง หรือรูปแบบข้อมูลไม่ถูกต้อง</font>"; $found = check_password(); if ($found == 1) { $ar = file($user_file); $have = 0; for ($i=0;$i<count($ar);$i++){ $arr = explode(",",$ar[$i]); if ($arr[0] == $_SESSION['luser']) $have = 1; } $u1 = $_POST['euser'] . $_POST['namesurn'] . $_POST['email'] . $_POST['org']; $u2 = chkstr($u1); if ($u1 != $u2) $have = 0; if ($have == 1) { $file = fopen($user_file,"w"); $passwd = trim(crypt($_POST['p0'],$nutforcrypt)); if ($_POST['p1'] == $_POST['p2'] && strlen($_POST['p1'])> 2) $passwd = trim(crypt($_POST['p1'],$nutforcrypt)); for ($i=0;$i<count($ar);$i++){ $arr = explode(",",$ar[$i]); if ($arr[0] == $_POST['euser']) { fputs($file, $_POST['euser'].",".$passwd.",".$arr[2].",".$arr[3].",".$_POST['namesurn'].",".$_POST['email'].",".$_POST['org'].",\n"); } else { fputs($file, $ar[$i]); } } fclose($file); echo "<center><font size=6 color=red>แก้ไขข้อมูลสมาชิก : completely</font>"; footer(); } else echo $no_msg; } else echo $no_msg; } ## 13 : Edit html file 1/2 ## function edit_html1() { $found = check_password(); if ($found == 1) { $thisfile = $_POST['thisfile']; echo "<center><br/><font size=6>แก้ไขแฟ้ม :: <font color=red>$thisfile</font>"; echo "<table bgcolor=gray border=3><form action=? method=post>"; echo "<input type=hidden name=thisfile value=".$thisfile.">"; echo "<input type=hidden name=keepaction value=".$_POST['action'].">"; echo "<td><textarea name=txt rows=20 cols=120 wrap=off>"; $ar = file($thisfile); for ($j=0;$j<count($ar);$j++) echo "$ar[$j]"; echo "</textarea></td></table><input type=submit value=save_file name=action>"; echo "</form>"; } } ## 14 : Edit html file 2/2 ## function edit_html2() { $found = check_password(); // Protect file name post difference from old file if ($found == 1 && file_exists($_POST['thisfile'])) { $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 = preg_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 && chkstr($chkfolder) == $chkfolder) { mkdir($_SESSION['luser']."/".$_POST['folder'],0777); filelisting(); } else { echo "<br/><br/><center><font size=6>มี Folder หรือ File นี้แล้ว<br/>หรือ ชื่อ Folder ไม่ถูกต้อง<br/>จึงสร้าง Folder นี้ไม่ได้</font>"; } } ## 81 : folder listing ## function folder_listing($dir) { 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 "<center><form action=? method=post target=_self><td align=center> Admin Password :<input name=adminpassword value='' size=30> <input type=submit value=admin_password name=action> </td></form>"; exit; } else { echo "<center><form action=? method=post target=_self><center> Sign Out : <input type=hidden name=adminpassword value='Logout' size=30> <input type=submit value=admin_password name=action> </center></form>"; } } if (!file_exists($user_file) || $create_user == "0" || (isset($_SESSION['admin_password_login']) && $_SESSION['admin_password_login'] == $admin_password)) { if (strlen($dir) > 0) $dir_handle=opendir("./".$dir); else $dir_handle=opendir("."); if (strlen($dir) > 0 && chkstr($dir) == $dir) $dir = "$dir/"; echo "<table width=760 align=center><td><font face='courier new' color=gray><ol>"; while ($file = readdir($dir_handle)) { if ($file != "." && $file != "..") { $filetype = filetype($dir . $file); if ($filetype == "dir") { $flist = "Dir :"; echo "<li>$flist <a href='?action=folder_listing&dir=$file'>$file</a>"; $dir_handle_sub = opendir($dir . $file); $c_sub = 0; while ($file_sub = readdir($dir_handle_sub)) { $c_sub++; if (substr($file_sub,-4) == ".php") echo "<br/>- $file_sub"; } echo " $c_sub"; } else { $flist = "File :"; echo "<li>$flist <a href='$file'>$file</a> " . filesize($dir . $file); } } } echo "</ol></td></table>"; closedir($dir_handle); } else { echo "<table width=760 align=center><td align=center><font color=red>ตัวแปร \$create_user ต้องเท่ากับ '0' จึงจะมีสิทธิ์ดูรายชื่อ folder ได้ครับ</td></table>"; } } ## 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;$i<count($ar);$i++){ $arr = explode(",",$ar[$i]); if ($arr[0] == $_POST['luser']) $found = 1; } if ($found == 1) { $file = fopen($user_file,"w"); for ($i=0;$i<count($ar);$i++){ $arr = explode(",",$ar[$i]); if ($arr[0] == $_POST['luser']) { echo "<center><font size=6>Delete in ".$user_file." : complete<br/>"; } 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 "<center><font color=red size=6> <font size=4>อาจเพราะ \$admin_password หรือ Secure Code หรือ รหัสสมาชิก</font><br/> อย่างใด อย่างหนึ่ง <b>ไม่ถูกต้อง</b></font>" . $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 "<font size=6><center>Admin Password : Verified<br/>"; $_SESSION['admin_password_login'] = $x; echo "<meta http-equiv=refresh content='3;url=?action=folder_listing'>"; footer(); } else { $_SESSION['admin_password_login'] = $x; echo "<center><font size=6 color=red>". $_SESSION['admin_password_login']; echo '<br/>นำรหัสที่ถูกแปลงนี้ ไปกำหนดให้ $admin_password ได้<br/>'; footer(); } } ## 84 : view source of filemanager.php ## # ยกเลิกชื่อ filemanager.php เป็น index.php เมื่อ 2549-03-26 function view_source() { global $scriptname; echo "<table width=760 bgcolor=#ffffdd align=center><td align=center> เพียงแต่คัดลอกโปรแกรมนี้ไปไว้ใน Web Server ของท่าน ก็สามารถเปิดบริการ Free Web Hosting ได้แล้ว<br/> โปรแกรมนี้ใช้ Text File เก็บข้อมูล และทดสอบเปิดบริการใน se-ed.net ยังใช้ได้เลยครับ<br/>"; echo "<textarea rows=15 cols=120 wrap=off>"; $ar = file($scriptname); for ($i=0;$i<count($ar);$i++) echo htmlspecialchars($ar[$i]); echo "</textarea>"; echo "<br/>ใช้ Mouse Click ในกรอบที่มี Source Code แล้วกด <b>CTRL-A</b> บนแป้นพิมพ์ แล้วกดปุ่ม <b>CTRL-C</b><br/>ไปเปิด Notepad แล้วกดปุ่ม <b>CTRL-V</b> หลังแก้ไขค่าต่าง ๆ ให้ Save As เป็น <b>$scriptname</b>"; echo '<br/>เมื่อได้โปรแกรมไป ควรแก้ตัวแปร <b>$web_url</b> ในแฟ้ม <b>$scriptname</b> เป็นชื่อเว็บไซต์ของท่าน<br/>เพียงเท่านี้ก็เปิดบริการ Free Web Hosting อย่างง่าย ๆ ถ้าเครื่องท่านเป็น Web server และบริการ PHP'; echo "</td></table>"; } ## 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<count($ar);$i++){ $arr = explode(",",$ar[$i]); $k = $i + 1; if (($arr[0] == $_SESSION['luser']) && ($arr[1] == $_SESSION['lpassword'])) { $found = 1; $mem_type = $arr[3]; $mem_namesurn = $arr[4]; $mem_email = $arr[5]; $mem_org = $arr[6]; } } } return $found; } ## 93 : function : File listing ## function filelisting() { global $max_webspace,$mem_type,$allow_extension,$max_file_size,$login_page; $found = check_password(); if ($found == 1) { echo "<base target=_blank>"; echo "<table width=760 bgcolor=black align=center>"; echo '<form enctype="multipart/form-data" action=? method=post target=_self><td>' . "\n"; echo '<input type=hidden name=luser value='. $_SESSION['luser'] . '>'; echo '<input type=hidden name=lpassword value='.$_SESSION['lpassword'] . '>'; echo '<table width=100%><td><table align=center><tr><td align=center><font size=0 color=white>ส่งแฟ้มเข้า Server<br/>พร้อมกันได้ครั้งละ 12 แฟ้ม</td></tr><tr><td align=center bgcolor=#dddddd>'; echo '<font color=black><img src=?secure=yes><br/><input name=secure size=8><br/>กรอกเลขความปลอดภัย</td></tr><tr><td align=center>'; $i = 0; $total = 0; $dir = "./" . $_SESSION['luser']; $dir_handle=opendir($dir); $retVal[] = ""; while ($file = readdir($dir_handle)) { if ($file != "." && $file != "..") { $filetype = filetype("$dir/$file"); if ($filetype == "file") { $retVal[count($retVal)] = "$dir/$file"; } else { $retVal[count($retVal)] = "$dir/$file"; $dir_handles=opendir("$dir/$file"); while ($filesub = readdir($dir_handles)) { if ($filesub != "." && $filesub != "..") { $retVal[count($retVal)] = "$dir/$file/$filesub"; } } closedir($dir_handles); } } } closedir($dir_handle); sort($retVal); echo "<select name=folder><option value='$dir'>$dir"; while (list($key, $list) = each($retVal)) { $filetype = filetype("$list"); if ($filetype == "dir") echo "<option value=$list>$list"; } echo "</select><br/>"; sort($retVal); echo '<input type=submit value=upload name=action></td></tr></table></td>'; echo '<td align=right><font color=yellow>1:<input type=file name=upload1><br/>2:<input type=file name=upload2><br/>3:<input type=file name=upload3><br/>4:<input type=file name=upload4><br/>5:<input type=file name=upload5><br/>6:<input type=file name=upload6></td>'; echo '<td align=right><font color=yellow>6:<input type=file name=upload7><br/>7:<input type=file name=upload8><br/>8:<input type=file name=upload9><br/>9:<input type=file name=upload10><br/>11:<input type=file name=upload11><br/>12:<input type=file name=upload12></td>'; echo "</table><center><font size=0 color=white>นามสกุลของแฟ้มที่อนุญาต คือ <font color=yellow>$allow_extension และขนาดแฟ้มต้องไม่เกิน $max_file_size Byte</center></td></form></table>"; echo "<table width=760 bgcolor=#ddffdd align=center><form action=? method=post target=_self>"; echo "<tr><td align=right>สร้าง Folder ใน ./".$_SESSION['luser']." / </td><td><input name=folder><input type=submit value='Create Folder' name=action> ให้กรอกเฉพาะชื่อ Folder เช่น img หรือ images เป็นต้น</td></tr>"; echo "</form></table>"; echo "<table width=760 bgcolor=#dddddd align=center>"; echo "<tr bgcolor=black height=1><td colspan=3></td><td colspan=2 width=300></td></tr>"; while (list($key, $list) = each($retVal)) { if ($list != "." && $list != ".." && strlen($list)> 0) { $i = $i + 1; $filesize = filesize("$list"); $filetype = filetype("$list"); $total = $total + $filesize; echo "<tr bgcolor=#ffffdd><form action=? method=post target=_self>"; echo "<td width=50 bgcolor=#dddddd><input type=submit value='ลบ' name=action>"; if (substr($list,-4) == ".htm" || substr($list,-5) == ".html") { echo "<input type=submit value='แก้' name=action>"; } echo "</td><td bgcolor=#dddddd align=right width=20>$i</td><td "; if ($filetype == "file") echo "bgcolor=white>"; else echo "bgcolor=#ddffff>"; echo "<a href='$list'>$list</a> "; echo "<input type=hidden name=thisfile value='$list'>"; if ($list == "lastlog.log") { echo "(แฟ้มนี้ระบบสร้างเพื่อเก็บประวัติการเข้าใช้)"; } echo "</td><td width=200 align=right>"; echo date("F d, Y H:i:s",filectime("$list")); echo "</td><td align=right width=100>"; if ($filetype == "file") { echo "<font color=red>$filesize</font> Byte"; } else { if ($filetype == "dir") echo "Folder"; } echo "</td></form></tr>\n"; } } echo "<tr bgcolor=black height=1><td colspan=3></td><td colspan=2 width=300></td></tr>"; echo "<tr><td colspan=6 align=right bgcolor=white>"; echo "<table bgcolor=#ddddff width=300><tr><td>ขณะนี้ใช้พื้นที่เก็บข้อมูลไป</td><td align=right><b>$total</b> Byte</td></tr><tr><td>เหลือพื้นที่</td><td align=right><font color=red><b>"; echo $max_webspace[$mem_type] - $total; echo "</b></font> Byte</td></tr><tr><td>ระบบเตรียมพื้นที่ให้</td><td align=right><b>$max_webspace[$mem_type]</b> Byte</td></tr></table>"; echo "</td></tr></table>"; } else { // check $found $_SESSION['luser'] = "ยังไม่มี"; echo "<center><font size=6>รหัสผู้ใช้ หรือรหัสผ่าน ไม่ถูกต้อง<hr color=red width=760>$login_page<br/><a href=?action=User_login>BACK</a></font></center>"; } } ## 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<count($ar);$i++){ if (strtolower($last_ext) == strtolower($ar[$i])) { $found_ext = 1; } } # check vip_user $ar = explode(",",$vip_user); $found_vip_user = 0; for ($i=0;$i<count($ar);$i++){ if ($_SESSION['luser'] == strtolower($ar[$i])) { $found_vip_user = 1; } } if ($found == 1 && ($found_ext == 1 || $found_vip_user == 1)) { $space_used = space_used(); $rest = $max_webspace[$mem_type] - $space_used; $size = $_FILES['upload'.$up]['size']; // == upload process == if ($size> 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 . "<br/>แฟ้ม " . $_FILES['upload'.$up]['name'] . " : <b>Completely</b><br/>"; } else { $msg = $msg . "<br/>แฟ้ม " . $_FILES['upload'.$up]['name'] . " : ขนาดแฟ้มมีปัญหา หรือพื้นที่ไม่พอ ขนาดแฟ้ม $size byte เหลือ $rest byte<br/>"; } } else { $msg = $msg . "<br/>แฟ้ม " . $_FILES['upload'.$up]['name'] . " : สกุลของแฟ้มนี้ ไม่ถูกอนุญาต<br/>"; } } } ## 95 : function : Remove special character function chkstr($str) { $non = array('!','#','$','%','^','&','*','+','/','<','>','`','php'); return (str_replace($non, '', $str)); } ## 98 : FAQs ## # เคยไม่กำหนดอะไร ก็เข้า FAQs แล้ว ด้วย if (!isset($_GET['action']) && !isset($_POST['action'])) { # function faqs() { global $tb_delete,$user_file,$scriptname; print "<br/> <table width=760 bgcolor=#ddffdd bordercolor=#008000 border=1 align=center> <tr><td align=right bgcolor=black><font color=white>FAQs : Frequently Asked Questions</td></tr><tr><td> <font size=6>คำถามที่ถูกถามบ่อย</font><font size=4> <br/>1. <a href=#q01>แนะนำบริการ ของเพื่อนร่วมอุดมการณ์ (Free Web Hosting)</a> <br/>2. <a href=#q02>ใครมีสิทธิ์ใช้บริการ บริการอะไร และใครมีสิทธิ์ถูกลบจากระบบ</a> <br/>3. <a href=#q03>เปลี่ยนระดับสิทธิ์ของผู้ใช้จาก Standard เป็นระดับสูงขึ้นอย่างไร</a> <br/>97. <a href=#q97>รายชื่อ folder ใน current directory</a> <br/>98. <a href=#q98>ผู้ดูแลที่ได้โปรแกรมนี้ไปใช้ จะลบผู้ใช้ในระบบตนได้อย่างไร</a> <br/>99. <a href=#q99>วิธีสร้างรหัส ของ admin เพื่อนำไปแก้ Code</a> </td></tr></table> <table width=760 align=center><td><pre> <a name=q01></a> <font size=6>1. แนะนำบริการ ของเพื่อนร่วมอุดมการณ์ (Free Web Hosting)</font> <ul><b>1.1 แนะนำ free Web Hosting มืออาชีพ ที่ยังเปิดให้บริการอยู่</b> <ul>1.1.1 <a href=http://www.thcity.com>http://www.thcity.com</a> :: ของชาวพิษณุโลก บริการได้ดีมาก บริการ php 1.1.2 <a href=http://www.se-ed.net>http://www.se-ed.net</a> :: ของสำนักพิมพ์ se-ed บริการ e-mail แบบ pop3 และ free Web Hosting และ php และ ftp 1.1.3 <a href=http://www.geocities.com>http://www.geocities.com</a> :: น่าเชื่อถือ แต่ช้าหน่อย เพราะอยู่ต่างประเทศ และต้องใช้ File Manager 1.1.4 <a href=http://www.7host.com>http://www.7host.com</a> :: สมัครง่ายไม่ต้องรอการยืนยัน และใช้ ASP ได้ (ติดต่อ MDB ได้) 1.1.5 <a href=http://www.1asphost.com>http://www.1asphost.com</a> :: สมัครง่ายไม่ต้องรอการยืนยัน และใช้ ASP ได้ (แปลกครับ ติดต่อ mdb ไม่ได้) 1.1.6 <a href=http://www.thai.net>http://www.thai.net</a> :: ปิดรับสมาชิกเมื่อ 26 มกราคม 2549 </ul> <b>1.2 เหตุที่เว็บนี้ หรือเว็บโฮสติ้งต่าง ๆ ต้องจำกัดบริการ</b> <ul>1.2.1 ไม่สามารถรองรับ Data transfer หรือ Bandwidth ที่มีปริมาณสูงมาก เพราะรายรับไม่สูงตามปริมาณสมาชิก 1.2.2 ไม่สามารถให้ web space ได้มาก ถ้าอนุญาตให้ใช้พื้นที่มาก ๆ จำนวนสมาชิกก็จะต้องน้อยลง เพราะกำแพงเรื่องขนาด Harddisk ไม่สูง 1.2.3 เครื่องคอมพิวเตอร์ที่ใช้มีความเร็วไม่สูง เพราะไม่ใช่มืออาชีพ และไม่สามารถลงทุนให้ทันกับเทคโนโลยีที่เปลี่ยนทุกเดือน 1.2.4 ทั้งหมดทำเป็นกรณีศึกษา ให้เยาวชนไทยศึกษา หรือภาคธุรกิจ นำไปพัฒนาจนเปิด free Web Hosting </ul></ul> <hr color=#dddddd> <a name=q02></a> <font size=6>2. ใครมีสิทธิ์ใช้บริการ บริการอะไร และใครมีสิทธิ์ถูกลบจากระบบ</font> <ul><b>2.1 Server ตัวนี้ให้บริการ แก่ใครบ้าง และอย่างไร</b> 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 ไปได้ในอนาคต <b>2.2 Account ที่อาจถูกลบ</b> 2.2.1 ไม่มีข้อมูล หรือข้อมูลไม่สมบูรณ์ เช่น ทำเว็บไม่เสร็จ และไม่เข้ามาพัฒนาต่อเป็นเวลานาน เป็นต้น 2.2.2 ห้ามขายยาลดความอ้วน หรือบริการใด ๆ แบบ work at home หรือชวนทำงานที่บ้าน 2.2.3 ห้ามเก็บภาพผิดกฏหมาย หรือล่อแหลม หรือ MP3 หรือ Hack software เป็นต้น 2.2.4 มีปริมาณการเข้าใช้บริการมากผิดปกติ 2.2.5 ตามที่ทีมงานเห็นสมควร </ul> <a name=q03></a> <font size=6>3. เปลี่ยนระดับสิทธิ์ของผู้ใช้จาก Standard เป็นระดับสูงขึ้นอย่างไร</font> <br/>โปรแกรมเตรียมระดับผู้ใช้ไว้ 4 ระดับ คือ Standard:0, Silver:1, Gold:2 หรือ Diamon:3 <br/>ผู้เขียนยังไม่เขียนโปรแกรมปรับปรุงส่วนนี้ให้สะดวก การเปลี่ยนสิทธิ์ต้องใช้ notepad หรือ vi เปิดแฟ้ม $user_file มาแก้เลข 0 เป็นเลข 1 ถึง 3 ตามต้องการ สำหรับค่าสถานะคือเลขที่อยู่ข้างหน้าชื่อในแฟ้ม $user_file นั่นเอง ส่วนสถานะจะมีผลต่อการให้พื้นที่สมาชิกโดยตรง และสามารถเพิ่มลดได้ผ่านตัวแปร <b>\$max_webspace</b> <hr color=#dddddd> <a name=q97></a> <font size=6>97. รายชื่อ folder ใน current directory</font><ul> <br/>เรียกใช้ <a href=?action=folder_listing>?action=folder_listing</a> <br/>เช่น http://127.0.0.1/". $scriptname ."?action=folder_listing <br/>- แสดงรายชื่อ Directory ถ้าไม่มีพบแฟ้ม $user_file <br/>- เพิ่ม Option เพื่อแสดงรายชื่อแฟ้มใน Directory สำหรับ Web Server ที่ปิดการแสดงรายชื่อแฟ้ม <br/>- ถ้า Sign in เป็น Admin จะแสดงรายชื่อ Directory ได้ </ul> <hr color=#dddddd> <a name=q98></a> <font size=6>98. ผู้ดูแลที่ได้โปรแกรมนี้ไปใช้ จะลบผู้ใช้ในระบบตนได้อย่างไร</font> <br/>เพื่ออำนวยความสะดวกให้กับผู้ดูแลในการลบผู้ใช้ จึงมีบริการลบรหัสผู้ใช้ และแฟ้มทั้งหมดของผู้ใช้ ด้วยการกดปุ่มครั้งเดียว แต่ผู้ที่จะลบ จะต้องทราบรหัสผ่านของผู้ดูแล ซึ่งถูกเข้ารหัส และเก็บไว้ในตัวแปร <b>\$admin_password</b> หากผู้ดูแลยังไม่มีรหัสนี้ให้ดูจากข้อ 99 จึงจะมีสิทธิ์ และลบผู้ใช้ที่ต้องการได้ $tb_delete <hr color=#dddddd> <a name=q99></a> <font size=6>99. วิธีสร้างรหัส ของ admin เพื่อนำไปแก้ Code</font> <br/>ส่วนนี้ถูกใช้โดยผู้ดูแลระบบ ที่ต้องการนำรหัส ที่ถูกเข้ารหัสแล้วไปแทนที่ในตัวแปร <b>\$admin_password</b> เพื่อใช้สำหรับลบสมาชิก ด้วยการกรอกรหัสผ่านใหม่ลงในช่องด้านล่าง แล้วกดปุ่ม admin_password จากนั้นก็นำรหัส 13 ตัวอักษร เช่น <b>peKJaPFsM79Kw</b> ไปแทนที่ในตัวแปร \$admin_password ซึ่งอยู่ในแฟ้ม ".$scriptname." และในกรณีที่ท่านลืมรหัสผ่าน ก็สามารถกำหนดใหม่ แล้วนำรหัส 13 ตัวอักษร ชุดใหม่ ไปแทนที่ในตัวแปร \$admin_password อีกครั้ง .. ถ้ารหัสที่ท่านกรอกตรงกับรหัสเดิมก็จะแสดงคำว่า Verified เพื่อให้รหัสถูกต้อง และบันทึกเข้า Session ทำให้ท่านมีสิทธิ ลบรหัสสมาชิกได้โดยง่าย <br/>ถ้ากรอกรหัสที่ถูกต้อง แล้วกดปุ่ม admin_password เมื่อเข้าไปแสดงรายชื่อสมาชิกจะพบเครื่องหมาย # หลัง User Name ซึ่งช่วยให้เลือกลบข้อมูลสมาชิกได้ง่ายขึ้น แต่การลบก็ต้องใช้ admin_password อีกครั้ง <table align=center width=40% bgcolor=#404040><form action=? method=post target=_self><td align=center> <input name=adminpassword value='Type your passowrd here' size=30> <br/><font color=white>Use mouse click on =><input type=submit value=admin_password name=action> </td></form></table> <hr color=black> </td></table> "; } ## 99 : User name writing ## function user_functions() { global $web_url; if (isset($_SESSION['luser'])) { echo '<div style="top:10px;margin-right:auto;margin-left:auto;width:760px;">'; echo "<table width=100% border=0 cellpadding=0 cellspacing=0><form action=? method=post target=_top><td>"; echo "<table width=760 border=0 cellpadding=0 cellspacing=0 bgcolor=#000080 align=center><tr><td width=100%><font color=white>รหัสผู้ใช้ปัจจุบัน : <b>"; if ($_SESSION['luser'] == "ยังไม่มี") { echo $_SESSION['luser'] . "</b></td><td>"; } else { $l = $web_url . $_SESSION['luser'] . "/"; echo "<a href=$l style={color:#ddffff;}>$l</a></b></td><td>"; echo "<input type=submit value='เข้าจัดการแฟ้ม' name=action>"; echo "<input type=submit value='แก้ไขข้อมูลสมาชิก' name=action>"; echo "<input type=submit value='เลิกการทำงาน' name=action>"; } echo "</td></tr></table>"; echo "</td></form></table></div>"; } } ## 100 : Footer Writing ## function footer() { global $title; ?> <table width=760 align=center><td align=center><font size=0 color=#000080><?php echo $title; ?><br/> <a href=http://www.thaiall.com/me>ทีมงานผู้พัฒนาโปรแกรม</a> 08-1992-7223<br/> <script language=javascript> <!-- url=document.location.href.substr(7,11) page="weblampang" if(url == "www.thainam") document.write("<script language='javascript1.1' src='http://hits1.truehits.net/data/h0013970.js'></script>") --> </script> </td></table> </body></html> <?php exit; } ?> |