ปรับปรุงฟอร์มตามรหัสผู้ใช้ด้วย PHP รุ่น 1

28 มิ.ย.54 มีโอกาสพัฒนาโปรแกรม เรียกว่า โปรแกรมรุ่นหนึ่งสำหรับสร้างฟอร์มปรับข้อมูลตามรหัสผู้ใช้ เขียนด้วย PHP4 บน IIS6 สำหรับระบบ TQF มี 4 โปรแกรม คือ
1. โปรแกรมรับรหัสผู้ใช้ (index.php)
2. โปรแกรมตรวจรหัส และแสดงข้อมูลในฟอร์ม (user.php)
3. โปรแกรมปรับปรุงข้อมูล (update.php)
4. โปรแกรมออกจากระบบ (logout.php)

<form action=”user.php” method=”post”>
<input name=”fuser” value=””>
<input name=”fpasswd” type=password value=””>
<input type=”submit” value=”เข้าใช้ระบบ”>
</form>

<?
session_start();
$mysql_db = “tqf”;
$mysql_user = “root”;
$mysql_password = “yourname”;
if (isset($_REQUEST[‘fuser’]) &&
$_REQUEST[‘fuser’] == “myname” && $_REQUEST[‘fpasswd’] == “mypass”) {
$_SESSION[‘suser’] = $_REQUEST[‘fuser’];
}
if (!isset($_SESSION[‘suser’])) header(“Location: index.php”);
// ====
$query    = “select * from tqf1”;
echo “<form action=update.php method=post>”;
$connect = mysql_connect(“localhost”, $mysql_user , $mysql_password);
mysql_query(“set names tis620”);
$result = mysql_db_query($mysql_db,$query);
if ($result) {
while ($object = mysql_fetch_object($result)) {
echo ‘<textarea name=t101 rows=5 cols=80>’. $object->t101 . “</textarea><br />”;
echo ‘<textarea name=t102 rows=5 cols=80>’. $object->t102 . “</textarea><br />”;
echo ‘<textarea name=t103 rows=5 cols=80>’. $object->t103 . “</textarea><br />”;
echo ‘<textarea name=t104 rows=5 cols=80>’. $object->t104 . “</textarea><br />”;
echo ‘<textarea name=t105 rows=5 cols=80>’. $object->t105 . “</textarea><br />”;
}
echo “<br/><input type=submit value=’ปรับปรุง’></form>”;
}
mysql_close($connect);
?>
<a href=logout.php>logout</a>

<?
session_start();
$mysql_db = “tqf”;
$mysql_user = “root”;
$mysql_password = “yourname”;
if (isset($_SESSION[‘suser’])) {
$query    = “update tqf1 set
t101='”. $_POST[“t101″] .”‘ ,
t102='”. $_POST[“t102″] .”‘ ,
t103='”. $_POST[“t103″] .”‘ ,
t104='”. $_POST[“t104″] .”‘ ,
t105='”. $_POST[“t105″] .”‘
where user ='”. $_SESSION[‘suser’] . “‘”;
$connect = mysql_connect(“localhost”, $mysql_user , $mysql_password);
mysql_query(“set names tis620”);
$result = mysql_db_query($mysql_db,$query);
echo $query;
mysql_close($connect);
header(“Location: user.php”);
}
header(“Location: index.php”);
?>

<?
session_start();
session_destroy();
header(“Location: user.php”);
?>

ภาพปกนิตยสารด้วยการซ้อนภาพ ภาษา PHP

merge image by php
merge image by php

19 มิ.ย.54 อ.พจน์ เล่าให้ฟังว่า ท่านใช้บริการ magmypic.com ทำให้ได้ภาพปก magazine สวย ๆ เป็นแรงกระตุ้นสำคัญให้ผมสนใจเรื่องนี้

แล้วผมก็สนใจ เข้าไปทดสอบ และค้นข้อมูลเพิ่มเติม ผลการทดลองใช้อยู่ใน thaiall.com/actress/joom.htm จากนั้นก็ต่อยอดมาทดสอบเขียนโปรแกรมด้วยภาษา PHP ทำการ Merge ภาพ 2 ภาพ คือ กรอบรูป และภาพผู้หญิง ก็พบว่า ได้ผลเป็นไปในแทนเดียวกับ magmypic.com ส่วนการประยุกต์ต่อไปคือ การทำเป็น fb application ให้เพื่อน ๆ ได้ใช้บริการส่งรูปที่อยู่ใน fb เข้ามาในระบบ ซึ่งเคยเห็นบริการแบบนี้อยู่มากมาย ถ้าลองทำในแบบไทยไทย ก็น่าสนใจอยู่ไม่น้อย .. แต่คงต้องพักไว้ก่อน เพื่อน ๆ สนใจโค้ด php จะลองเอาไปทำก็ได้ครับ ปัญหาคือ ต้องทำภาพ mag01.gif ให้เป็นภาพโปร่งใส ของผมใช้โปรแกรม iview ช่วยจัดการส่วนนี้ .. มิเช่นนั้นผลการซ้อนภาพจะมีปัญหาครับ

<?
$user = ‘user.jpg’;
$frame = ‘mag01.gif’;
$dest = imagecreatefromgif($frame);
$src = imagecreatefromjpeg($user);
$src_new = imagecreatetruecolor(280, 350);
list($width, $height) = getimagesize($user);
imagecopyresized($src_new, $src, 0, 0, 0, 0 , 280, 350, $width,$height);
imagecopymerge( $src_new, $dest, 0, 0, 0, 0, 280, 350, 100);
header(‘Content-Type: image/jpeg’);
imagegif($src_new);
imagedestroy($dest);
imagedestroy($src);
imagedestroy($src_new);
?>

http://www.thaiall.com/mag/merge.php
http://www.facebook.com/media/set/?set=a.213477228691078.52727.100000864060918

25 ก.พ.56 ปรับบริการของโฮมเพจหน้าปกนิตยสาร (magazine cover)
http://www.thaiall.com/mag

หน้าปกนิตยสาร (magazine cover)
หน้าปกนิตยสาร (magazine cover)

อัพโหลดหลายไฟล์ผ่าน click เดียว

swf file upload
swf file upload

22 ม.ค.54 การ upload แฟ้มเข้าเครื่องบริการทีละแฟ้มนั้น ใช้คำสั่งไม่เกิน 5 บรรทัดก็สามารถทำได้ แต่ถ้าต้องการ upload หลายแฟ้มด้วยการ click ครั้งเดียว ต้องเขียนหลายบรรทัด .. การศึกษาเรื่องนี้เกิดจาก คุณแบงค์ (เพื่อนร่วมงาน) ถามว่า ทำอย่างไร upload หลายแฟ้มเข้าเครื่องบริการผ่าน web browser .. ผมเองก็เคยเห็นใน hi5.com หรือ facebook.com เมื่อหลายปีก่อน เมื่อสืบค้นดูก็พบว่า swfupload.org มี code จึงนำมาดัดแปลง และเปิดให้ทดสอบ
ที่ http://www.thaiall.com/php/multiupload

การแก้ไข script มีหลายจุด คือ ยกเลิก preload alert ที่แสดงว่ามีปัญหาออกไป เปลี่ยนห้องรับแฟ้มให้เป็นห้องเดียวกับ script เลือกใช้ตัวอย่างจาก multiinstanceupload

+ http://demo.swfupload.org/v250beta3/
+ http://www.thaiall.com/download/multiupload_swfupload.zip

พบปัญหาการตัดนามสกุลใน e-document script

edit managefile
edit managefile

พบปัญหาการตัดอักษรจากชื่อแฟ้มผิดพลาดในระบบ e-document รุ่นที่ใช้กับมหาวิทยาลัย จากที่เคยทดสอบจะไม่ใช้ . ในชื่อแฟ้ม เพราะ . นิยมใช้กั้นระหว่างชื่อแฟ้มกับนามสกุลแฟ้ม แต่มีผู้ใช้บางท่านใช้ . เป็นบางส่วนของชื่อแฟ้ม ทำให้การแสดงรายชื่อแฟ้มไม่ครบตามที่ผู้ใช้คาดหวัง จึงเพิ่มบรรทัดที่ 142 สำหรับรวบรวมชื่อแฟ้มใหม่ให้ถูกต้อง และเปลี่ยนการแสดงชื่อแฟ้มจากอาร์เรย์ตัวที่ 0 มาเป็น $newcut ในบรรทัด 145 ตามตัวอย่าง (script ตัวนี้ไม่เผยแพร่ เพราะ upgrade สำหรับงานเฉพาะของมหาวิทยาลัย ที่ทำงานร่วมกับระบบภาระงาน และเอกสารประกันคุณภาพแล้ว) แต่รุ่นที่เผยแพร่คือ http://www.thaiall.com/perlphpasp/source.pl?9102

สร้าง quiz ด้วย fbml

quiz by fbml
quiz by fbml

30 พ.ย.53 ระบบข้อสอบที่เป็น application ตามที่ผู้พัฒนาใน fb เสนอไว้หลายรายนั้น ผมว่าเราคุมไม่ได้ เพราะผู้พัฒนาจะติดป้ายโฆษณา และกำหนดการตอบสนองที่อาจไม่เป็นไปตามที่เรากำหนด เมื่อได้ลองเขียน fbml พบว่าเราสามารถดึงข้อมูลออกไป แล้วสร้างฐานข้อมูลของเรา เมื่อทดสอบโค้ดแล้วได้เขียนวิธีการพัฒนาอย่างง่าย เผยแพร่ใน thaiall.com/facebook และตอนนี้รอข้อสอบที่จะส่งเข้าระบบ และควบคุมเนื้อหาแวดล้อมเท่านั้น แล้วจึงเผยแพร่ quiz ของมหาวิทยาลัยได้อย่างเป็นรูปธรรมต่อไป

ทดสอบโปรแกรมจับความเร็วของ while กับ for

2 เม.ย.53 ปรับโปรแกรมจับเวลาการทำงานของโปรเซสด้วยภาษา PHP โดยใช้ Function เพราะต้องการวัดว่าใช้เวลาเท่าใดใน process ที่ต้องการทดสอบ มีการเก็บข้อมูลและเปรียบเทียบในสภาวะที่เชื่อถือได้ ซึ่ง code ชุดนี้สามารถนำไปปรับใช้ได้หลายกรณี แต่ครั้งนี้ทดสอบเพียงแค่การใช้ while และ for สำหรับทำซ้ำ 1000 รอบ พบว่า while ทำงานเร็วกว่า ในระดับ 1ต่อหมื่นวินาที ส่วนการทดสอบกับ mysql ผมยังไม่ได้เตรียมสภาวะแวดล้อมให้พร้อม จึงไม่นำเสนอผลที่นี่ .. ถ้าควบคุมและทดสอบจนได้ผลอย่างไร จะกลับมาเล่าใหม่

<?
$gap=0;
xtime("start");
for($i=1;$i<=1000;$i++) { }
echo number_format(xtime("stop"),9) ." วินาที<br>";
$j=0;
xtime("start");
while($j < 1000) { $j++; }
echo number_format(xtime("stop"),9) ." วินาที<br>";
function xtime ($action) {
  global $gap;
  list($u,$s) = split(" ",microtime()); 
  if ($action == "start") $gap = $s + $u; 
      else $gap = $s + $u - $gap;
  return $gap;
}
?>

+ http://www.thaiall.com/php

ทดสอบโปรแกรม thaiabc.com รุ่น 6.5 กับการประมวลผลบน DVD

1 เม.ย.53 โปรแกรมแก้วสารพัดนึก คือ โปรแกรมที่ช่วย ติดตั้งเครื่องบริการเว็บ เครื่องบริการฐานข้อมูล โอเพนซอร์ส และรวมบทความมากมาย สำหรับนำไปเรียนรู้ได้ด้วยตนเอง หลังติดตั้งเสร็จจะได้โปรแกรม Apache + PHP + MySQL + Perl + Script เช่น e-Commerce, e-Learning, CMS, Article และ Source Code
     วันนี้เขียน software หลายร้อยโปรแกรมลง DVD หลายแผ่นไว้แจกนักศึกษาในชั้นเรียน ในนั้นมีโปรแกรม thaiabc.com แบบ no install ให้ประมวลผล apache + php + mysql ที่ใครเรียกว่าโปรแกรมประเภท WAMP จากการแก้ไขให้ run mysql แบบไม่ใช้ innodb พบว่า wordpress สามารถ run ผ่าน CD-ROM ได้ทันทีใช้ admin เข้าระบบก็ได้ เพราะการอ่าน blog ที่วางไว้สองร้อยกว่าเรื่องไม่มีการเก็บ log ของการอ่านไว้ในฐานข้อมูล  ส่วน learnsquare v2 ก็ไม่พบปัญหาแม้จะ login ด้วย admin ก็ใช้งานผ่าน DVD ได้ปกติ ส่วน phpmyadmin พบว่าสามารถเข้าดูข้อมูลใน mysql ได้ วันนี้คุณสามารถ download ชุดติดตั้งโปรแกรมแก้วสารพัดนึกจาก thaiabc.com ได้แล้ว 1) เมื่อติดตั้งแล้วก็ใช้งานใน Drive C 2)เลือกที่จะคัดลอกไปวางใน DVD หรือ CD ซึ่งเก็บข้อมูลได้มากและราคาถูก 3)เลือกที่จะคัดลอกไปวางไว้ใน Thumb Drive เพื่อใช้งานได้ในทุกที่
     แต่ moodle พบ error message เพราะมีการเขียน session ส่วน mambo มีการ insert เข้าฐานข้อมูลพบ error ส่วน oscommerce มีการ insert เข้าตาราง session พบ error ส่วน gallery ก็ใช้งานไม่ได้พบ error ส่วน phpbb3 ก็ใช้งานไม่ได้พบ error .. สรุปว่าผลการทดสอบกับ DVD ซึ่งเป็นสื่อเก็บข้อมูลแบบอ่านอย่างเดียว ถือเป็นปัญหาที่ไม่ใหญ่นัก เนื่องจากคาดไว้แล้ว แต่การใช้งานจริงก็จะใช้ผ่าน USB Drive หรือ Flash Drive เพราะเป็นอุปกรณ์ที่อ่านเขียนได้ ราคาถูกลงมาก และทำงานได้เร็วกว่า DVD แน่นอน .. ดังนั้นทุกบริการจึงทำงานได้ทั้งหมด

พบคำว่า ไซต์นี้อาจเป็นอันตรายต่อคอมพิวเตอร์ของคุณ ในไซต์ขององค์กร

มีการ upload แฟ้ม และพบว่าแฟ้มมี signature อันตราย

13 มี.ค.53 พบปัญหาจึงมีขั้นตอนการดำเนินการที่แบ่งกิจกรรมเป็น 3 ส่วนที่สำคัญคือ ที่มาของปัญหา การตรวจสอบ และการดำเนินการแก้ไข รายละเอียดมีดังนี้ 1) ผู้ใหญ่ท่านหนึ่งโทรศัพท์แจ้งว่าผลสืบค้นเว็บไซต์ขององค์กร พบคำว่า “ไซต์นี้อาจเป็นอันตรายต่อคอมพิวเตอร์ของคุณ”  เมื่อค้นด้วย url ของเว็บไซต์กับ google.com ก็พบว่ามี 2 ไซต์ในเครื่องบริการเดียวกันติดโผปัญหานี้จริง 2) ใช้ FTP เข้าไปตรวจแฟ้มจากที่บ้าน ซึ่งเครื่องบริการใช้ code ของ wordpress กับทั้ง 2 ไซต์ พบว่ามี script ประเภท badware อยู่จริง โดยแฟ้มถูกปรับปรุงจากผู้พัฒนาเว็บไซต์เมื่อเวลา 12.30น. (วันนี้เอง) จึง download code มาแก้ไขด้วยการลบ script บรรทัดปัญหาออกไปไม่กี่แฟ้ม แล้ว upload เข้าไปทับแฟ้มเดิมใหม่ ซึ่งเชื่อว่าไม่กระทบในทางลบจึงดำเนินการโดยไม่แจ้งผู้พัฒนาเว็บไซต์ 3) ผลการทดสอบ view source ยังพบบรรทัดปัญหาที่เป็นผลการทำงานของ badware อยู่ที่นั่นเช่นเดิม การ scan เข้าไปในระบบทั้งหมดจากที่บ้านอาจไม่สะดวกเรื่องความเร็วในการประมวลผล จึงเดินทางไปที่องค์กรแล้วแก้ปัญหาหน้าเครื่องด้วยการ scan แฟ้มทั้งหมด พบว่า signature ของไวรัสหรือ badware อยู่ 4 แบบ คือ eval, doc.write ด้วย javascript 2 แบบ และ script ที่พบในครั้งแรก 4) ใช้ file search ของ windows ร่วมกับ replace แบบ multi-line ของ editplus ในการ scan แล้วสั่งลบ signature ออกจากแฟ้มทั้งหมด ซึ่งพบว่ากว่า 200 แฟ้มนั้นมีเวลาถูกแก้ไขในเวลาประมาณ 12.30 -12.55น. ซึ่งตรงกับเวลาที่ผู้พัฒนาเว็บไซต์ส่งแฟ้มเข้าไปในระบบ แสดงเวลา upload ชัดเจนใน log ของ FTP Server มีประเด็นที่น่าสงสัยคือทำไมผลไปแสดงใน google.com เร็วมาก และถูกตรวจพบในเวลาที่รวดเร็ว รวมไม่ถึง 3 ชั่วโมงเท่านั้น .. จึงสงสัยว่า code มีปัญหามาก่อน 12.30น. หรือไม่ 5) ผลการแก้ไขทำให้ signature ของไวรัสถูกลบออกไปทั้งหมด เนื่องจากคาดว่า server ไม่ได้ติดไวรัสโดยตรง แต่คาดว่าเครื่องของผู้พัฒนาเว็บไซต์อาจติดไวรัส แล้วส่งแฟ้มที่ถูกแก้ไขเข้าเครื่องบริการ ที่สงสัยเช่นนั้นเพราะผู้เขียนใช้ ftp เชื่อมต่อเข้าระบบ ทำการดาวน์โหลดและอัพโหลด แต่ไม่เกิดผลต่อแฟ้มที่ดำเนินการ เมื่อแก้ไขแล้วก็ยังไม่พบไวรัสทำงานอีกครั้ง .. สรุปว่ารอดูอาการต่อไปเพื่อพิสูจน์ข้อสงสัย 6) ดำเนินการกับ google.com ด้วยการเข้าไปในส่วนของ webmaster tools แล้ว verify เว็บไซต์ทั้ง 2 แบบ download file แทนแก้ code เพราะสะดวกที่จะดำเนินการกับ wordpress ที่อาจมีการแก้ไขแฟ้ม index.php ในภายหลัง 7) เลือก ขอรับการตรวจสอบ จากระบบของ webmaster tools ใน google.com เนื่องจากดำเนินการแก้ไขปัญหาหรือต้นเหตุของ badware หรือ malware ทั้งหมดแล้ว .. เพราะแก้ไขแล้วจริง ๆ และคาดว่าทางผู้พัฒนาเว็บไซต์จะตรวจสอบตนเองพบ และไม่ส่งแฟ้มที่มีปัญหามาเผยแพร่ในเว็บไซต์ขององค์กรอีก เพื่อความแน่นอนในต้นเหตุของปัญหาจึงต้องตรวจสอบกับทีมผู้พัฒนาเว็บไซต์ในองค์กรว่าไม่มีใครมีไวรัสไว้ในครอบครองหรือไม่ .. สรุปว่าขณะนี้อยู่ระหว่างรอด google.com ตรวจสอบ
     8) หลังแจ้งให้ google.com ดำเนินการยกเลิกการ block ในเวลาประมาณ 22.00 น. พบว่ามีการแก้ไขแล้วเมื่อเวลา 8.00น. ของวันรุ่งขึ้น สรุปว่าการดำเนินการครั้งนี้สำเร็จ และต้องเฝ้าดู (monitor) ต่อไปว่าจะไม่เกิดเหตุแบบนี้ขึ้นอีก

 

รวมภาพแสดงการทำงาน แก้ปัญหา virus ใน script

+ http://www.google.com/webmasters/tools/dashboard?hl=th
+ http://www.google.co.th/search?q=ayume.eu
+ http://www.google.co.th/search?q=cartoon.co.th