2007/Dec/25

เก็บไว้อ่านเองครับ...ใครมือใหม่ก็อ่าน... ใครมือเก๋าก็แนะนำได้หากเห็นว่าผิด... หรือมีดีกว่า
ประมาณว่าไม่ได้ฝนสมองมานาน (หลายปีแล้วที่ไม่ได้เขียนเว็บ)

พอดีวันก่อนเจ้านายสั่งให้ทำเว็บ สำหรับป้อนข้อมูล แต่ให้มี User , Password สำหรับผู้ที่เข้าไปแก้ไขด้วย

อันนี้คงไม่ยาก (คิดในใจนะครับ)

เริ่มลงมือไป Download โปรแกรมสำเร็จรูป AppServ (http://www.appservnetwork.com/) เอามาแล้วติดตั้งบนเครื่อง Notebook (อันนี้ติดตั้งไม่ยากเหมือนโปรแกรมทั้วไป Next , Yes , OK ประมาณนั้น ดีจริงๆ) เมื่อติดตั้งแล้วก็ได้ เว็บเซอร์ฟเวอร์ (Apache) , ฐานข้อมูล (MySQL) , โปรแกรมภาษา PHP

เมื่อได้แล้วก็มาลองทำการสร้าง Form เพื่อ Logon ชื่อ login.php

// <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
// <html xmlns="
http://www.w3.org/1999/xhtml">
// <head>
// <meta http-equiv="Content-Type" content="text/html; charset=TIS-620" >
// <title>Input Form-Login</title>
// </head>
// <body>
// <form id="from_input" name="from_input" method="post" action="login_check.php">
//  <label for="textfield">Username : </label>
// <input type="text" name="user" id="name" >
// <br />
//  <label for="label2"><br /> password : </label>
//  <input type="password" name="pass" id="pass" >
//  <br />
//  <label for="Submit"></label>
//  <input type="submit" name="Submit" value="Submit" id="Submit" >
//  <label for="label3"></label>
//  <input type="reset" name="reset" value="Reset" id="label3" >
// </form>
// </body>
// </html>

ต่อมาก็สร้างเพจชื่อ login_check.php เพื่อตรวจสอบรหัสผ่าน

// <?
// $user=$_POST[user];
// $pass=$_POST[pass];
// //echo $user ." ".$pass ;
// if ($user =="sridetch" and $pass =="abc123")  {
// session_start();
// $_SESSION[sess_userid]=session_id();
// header("Location: page_1.php");
//   }  
// else 
// {
//  echo "<H3> Error : Username หรือ Password ไม่ถูกต้อง </H3>";
//  exit();
// }
// ?>


เมื่อการตรวจสอบข้อมูลที่ป้อนเข้ามาถูกต้อง ก็ไปเปิดเพจหน้าต่อไปที่ชื่อ page_1.php โดยที่จะมีกระบวนการสร้าง Session ชื่อ sess_userid ขึ้นมาเพื่อใช้ตรวจสอบว่าได้ผ่านการ Login มาถูกต้อง แต่ถ้าไม่ถูกก็จะแสดงข้อความว่า Error : Username หรือ Password ไม่ถูกต้อง

ในหน้าต่าง ของเพจต่อ ๆ ไป ก็จะใส่ Script นี้ไว้ที่ด้านบน

//<?
// session_start();
// if ($_SESSION[sess_userid] <> session_id()) {
// header("Location: session_form_input.php"); exit(); 
// } 
// ?>

เพื่อทำการดักตรวจสอบว่าข้อมูล Session ถูกต้องมีการเก็บค่าตัวแปร sess_userid ไว้จริงหรือไม่ หากมีจริงก็ออกไปทำงานต่อจาก Script นี้ แต่หากข้อมูลไม่ถูกต้อง $_SESSION[sess_userid] <> session_id() ก็ให้กลับไปหน้าต่าง login.php

ส่วนหากต้องการทำลาย Session ก็ให้ทำ Link ไปที่ ไฟล์ logout.php ที่มี Script ดังนี้

// <?
// session_start();
// session_destroy();
// header("Location: login.php");
// ?>

จบกระบวนการ... Session ง่าย ๆ ครับ

ปล. ก่อนที่จะจบเนื่องจากสมัยก่อนการรับค่าตัวแปรจาก Form หรือ url จะใช้แค่คำสั่ง $id ก็จะได้ค่าตัวแปรแล้ว แต่ปัจจุบันมีเรื่องความปลอดภัยเข้ามามากขึ้น ทาง php.net ได้ประกาศมาตรฐานไว้หลายปีก่อนแล้ว อ่านรายละเอียดได้ที่ http://th.php.net/manual/en/security.globals.php ซึ่งแนะนำให้ทำการ Register Global = off ไว้ เพื่อป้องกันการโดนโจมตีผ่าน script หลาย Server ไม่สามารถรับตัวแปรตามปกติได้
ดังนั้นหากต้องการรับตัวแปรจาก Form ก็ให้ใช้ $_POST['id'] แต่ถ้าต้องการรับตัวแปรจาก url ก็ให้ใช้ $_GET['id']  ต้องขอบคุณทีมงาน naxza ทีแนะนำครับ สามารถอ่านเพิ่มเติมได้ที่  http://www.naxza.com/hosting_article_21-10_18-00-41.php

edit @ 24 Dec 2007 09:30:33 by BigTUI ^_^"

 

edit @ 25 Dec 2007 10:10:44 by BigTUI ^_^"

2007/Dec/24

นานมาแล้วได้เคยสร้าง Report ในรูปแบบไฟล์ PDF ผ่าน WEB ด้วยภาษา PHP จนลืมไปแล้วว่าทำอย่างไร...

วันนี้ถูกเจ้านายสั่งให้ทำ WEB ที่จะต้องมี Report ด้วยทำไงหว่า... ไปหาในเน็ต... ก็อ่านแล้ว งง..ๆ ทำไม่ได้ซักที คนที่เคยแนะนำก็ไม่รู้ย้ายงานไปไหนแล้ว.. เดือดร้อนต้องไปหา code เก่า ๆ มาดู เมื่อทำได้แล้วก็จดไว้ในความทรงจำซักหน่อยเผื่อวันหน้ามาดูจะได้จำได้ (สมองคนจำได้ไม่นาน...)

เริ่มต้นด้วยการลง AppServ ให้เรียบร้อย

แตกแฟ้ม adodb, demo, fpdf 3 ไฟล์ โหลดได้จาก http://www.maemohgolfcourse.com/files/fpdf.rar ผมบีบไฟล์รวมกันไว้ แตกไว้ใน C:\AppServ\www (หรือใน path ที่ต้องการ)

จากนั้นลองสร้าง Script ง่าย ๆ ชื่อ report_pdf.php

1 <?
2 //กำหนด Header ส่วนที่เกี่ยวข้อง
3 include ('adodb/adodb.inc.php');
4 define('FPDF_FONTPATH','fpdf/font/');
5 require ('fpdf/jpdf.inc.php');
6 $pdf=new JPDF();
7 $pdf->AddFont('angsana','B','angsanab.php');
8 $pdf->AddFont('angsana','','angsana.php');
9 $pdf->Open();
10 $pdf->AliasNbPages();
11 $pdf->SetMargins(20,5,10);
12 $pdf->AddPage();
13 //กำหนดวาดรูปสี่เหลี่ยม (rectangle) ไม่มีพื้นหลัง (no fill)
14 $pdf->Rect(20, 25, 175, 250 , 'D');
15 //พิมพ์ข้อความ
16 $pdf->SetXY(25,35);
17 $pdf->SetFont('angsana','B',16);$pdf->Write(10,'สวัสดีทุกท่าน');
18 //สิ้นสุดการประมวลผลและส่งออกไฟล์เป็น PDF ไฟล์
19 $pdf->Output();
20 ?>

ผลที่ได้ก็จะได้กรอบและข้อความที่เป็น pdf ดังรูปครับ สามารถสั่งพิมพ์ หรือบันทึกได้เลยครับ

ส่วนคำสั่งอื่น ๆ สามารถอ่านได้ที่ http://www.fpdf.org/en/doc/index.php 

จบครับเพื่อเป็นจุดเริ่มต้น.... ไม่มีจุดเริ่มก็ไม่รู้จะเริ่มที่ไหนครับ

 

2007/Nov/22

 08.04 น. เช้าวันหนึ่ง......กรี๊ง...กรี๊ง...

"สวัสดีครับ ศูนย์บริการ ไอที เหมืองแม่เมาะครับ" ผมรีบรับสายก่อนที่จะถึงกรี๊งที่สาม พร้อมกับเอ่ยทักทาย ด้วยมารยาทที่ดี ตามที่ร่ำเรียนมา (นี่วิ่งมารับเกือบหัวทิ่ม...เพิ่งจะยืนเคารพเพลงชาติ...)

หาโหล....  “คุณศรีดอจ้ะ ใน Cale มีคำสั่ง Arrange รึเป่า สุแพทกำลังหาให้อยู่ Arrange คือการเปิดไฟล์หลาย ๆ ไฟล์ในหน้าจอเดียวนะ คำแล๋ “ น้ำเสียงของคุณนกแล ถามปัญหาการใช้งานโปรแกรม CALC ทางโทรศัพท์ แบบไม่ต้องเกรงใจคนฟัง...(ผมจำเสียงได้เพราะเธอนั่งอยู่ไม่ไกลจากโต๊ะเท่าไหร่)

?????? เป็นคำถามที่ไม่ค่อยเข้าใจ
"คุณนกแล เชิญมาหาเราที่โต๊ะเราดีกว่า" ผมตอบกลับไป เพราะเห็นว่าคุยกันทางโทรศัพท์ท่าจะไม่ได้การเป็นแน่แท้ , ประเด็นที่สอง เมื่อมีคนสวย ๆ มาถามก็คงต้องพบปะกันบ้างเป็นธรรมดา , ประเด็นที่สามจะได้เข้าใจตรงกัน

"ไฟล์ที่ถามเป็นเหมือนในรูป ใช่หรือเปล่าครับคุณนกแล" ผมลองเปิดไฟล์มากกว่า 1 ไฟล์ (เปิด 3 ไฟล์) ดังรูป Tile-001

 

"ทีนี้ถ้าคุณนกแลต้องการให้แสดงบนหน้าจอพร้อมๆ กัน เราก็ต้องคลิกเมาส์ขวาบน ปุ่ม OpenOffice.orgเพื่อเรียกเมนูคำสั่งลัด ท่านจะเห็นคำสั่งเกี่ยวกับการแสดงผลบนหน้าจอ ที่น่าสนใจ 3 รูปแบบ ดังรูป Tile-002 เห็นหรือเปล่าครับ " ผมแนะนำต่อ

 

"การแสดงผลจะมีให้เลือกหลายแบบ เรามาทดลองแสดงผลทีละแบบนะครับ เริ่มจาก แบบ Cascade ผลก็จะออกมาดังในรูป Tile-003" ผมแนะนำต่อครับ

 

"แบบต่อไป เป็นแบบ Tile Horizontally ผลที่ได้แสดงในรูป Tile-004 "

"แบบต่อไป เป็นแบบ Tile Vertically ผลที่ได้แสดงในรูป Tile-005"

 

"แต่ถ้ามี 4 ไฟล์ ก็จะได้ดังรูป Tile-006 ครับไม่ว่าจะเลือก Tile-Hoizontally หรือ Tile-Vertically ก็ตาม"

 

ผมหันไปดูหน้าเล็กน้อย (ประมาณว่า Admin ก็อายเป็นนะ) แล้วถาม "จบแล้วไม่รู้ว่าตรงที่คุณนกแลต้องการหรือเปล่าครับ .."

"ค่ะ... แล้วจะไปลองดูนะค๊ะ... ขอตัวกลับไปที่โต๊ะก่อนนะค๊ะ" เสียงคุณนกแลตอบกลับมา คงสังเกตเห็นว่า Admin เริ่มใช้สายตาที่ไม่ปกติ... (ประมาณว่าสายตาเชื่อม...หรือไม่ก็มดเริ่มไต่)

เมื่อสาว ๆ ไปแล้ว เราก็เก็บประสบการณ์ มาถ่ายทอดเป็นข้อความบนเว็บ http://bigtui.exteen.com  นี่แหละครับ

 13.09 น. ของวันเดียวกัน...

Pig ตุ้ย ตามทีพี่แนะนำมา คุณนกแล ยังทำไม่ได้เลย เพราะไฟล์ไม่ได้อยู่เป็นกรุ๊ปซ้อนกันอยู่แต่ไฟล์อยู่เรียงกัน คลิกขวาแล้ว ไม่เห็นมีคำสั่งจ้าคราวนี้น้องพัตร์ คนสวยเดินเข้ามาถาม (ที่ห้องนี่ก็ดีนะมีคนสวย ๆ หลายคน ฮิ ๆ ว่าแต่ว่าเราอุตสาหะ ตั้งชื่อว่า BigTUI ซะเทห์ เจ้าน้องคนจ๋วย นี้บังอาจมาเรียกเราว่า Pig ตุ้ย..... แฟนตัวเองไม่เป็น Pig มั่งแล้วไป.... คิดในใจนะครับ)

เข้าเรื่องดีกว่า "ในส่วนของ Group นี้หนอ... เป็นความสามารถของ Windows เองแหละครับวิธีการทำให้มันกรุ๊ปก็ไม่ยาก เอาเมาส์เลื่อนไปที่ Taskbar ด้านล่าง (ต่อจากปุ่ม Start) => จากนั้นก็คลิกเมาส์ขวา (บนที่ว่างสีฟ้า ๆ นะครับ) ดูรูปที่ Tile-007 " ผมบอกพร้อมกับแสดงให้น้องพัตร์ดู

เมื่อได้หน้าต่าง Taskbar and Start Menu Properties ก็ให้เลือกในตัวเลือก Group similar taskbar buttons ดังรูป Tile-008 ครับ

"หวังว่าคงจะใช้ได้นะครับพี่น้อง.... " รักน้อง ๆ ทุกคนครับ (อันนี้พูดในใจนะครับ ไม่อยากให้ครอบครัวแตกแยก..)

"ขอบคุณเจ้า....ไปล่ะนะพี่ Pig TUI..." น้องพัตร์ พูดลาพร้อมกับเน้นคำว่า PIG ....

"ฝากไว้ก่อนเถอะ...โอราน" ....

THE END.

edit @ 22 Nov 2007 14:04:11 by BigTUI ^_^"

edit @ 22 Nov 2007 14:06:32 by BigTUI ^_^"

2007/Nov/21

วันนี้กล่องในฝัน ของเพื่อน ๆ ใฃ้งานไม่ได้ ประมาณว่า Flash Image อยู่ดี ๆ ลูกชายหัวแก้วหัวแหวนบังอาจเล่นรถบังคับไปชนปลั๊กของ Switching HUB ไฟดับในบัดดล ไม่สามารถเสกให้ กล่องในฝันใช้งานได้

เพื่อนรักจึงต้องแบกกล่องในฝันมาให้ทำการลง Image ผ่านสาย Serial พอลองค้นหาก็มิมีสายดังว่า คลับคล้าย คลับคราว่าเพื่อนรักอีกคนหนึ่งได้ยืม(ลืม) ไปก่อนหน้านี้

ก้เลยคิดจะทำใหม่ขึ้นมาอีกซักเส้น สมองก็ไม่ค่อยจะดี ลองถามลุง Google ก็ได้ความครับ เจอเว็บนี้ http://donut.blogka.com/ ก็เลยถือโอกาศเอามาเก็บไว้ที่ของตัวเองบ้าง

สายอนุกรมแบบไขว้ (Serial cross-over cable) ใช้สายแค่ 3 เส้นครับ

หัวแรก
สายน้ำตาลเข้าขา 2 (Tx)

สายสีเหลืองเข้าขา 3 (Rx)
สายสีแดงเข้าขา 5 (GND)
หัวสอง
สายสีน้ำตาลเข้าขา 3 (Rx)
สายสีเหลืองเข้าขา 2 (Tx)
สายสีแดงเข้าขา 5 (GND)

ถ้าจะให้ครบสูตรตามเว็บของคุณโดนัทก็ดังนี้เลย

มาทำสาย DreamUp กันเถอะ

 

เครื่องมือสำคัญของนักล่าฝัน AF คือไมค์โครโฟน สำหรับชาวกล่องฝัน DB คือ สายอนุกรมแบบไขว้ (Serial cross-over cable) การจะมานั่งบัดกรีสายเองก็ลำบาก แถมต้องมีเครื่องไม้เครื่องมืออีก เลยยืมไอเดียของสายคอลโซลของซิสโก้มาทำสายนี้

เตรียมอุปกรณ์(หาซื้อได้ตามร้านอิเล็คทรอนิกส์หรือห้างคอมฯ)
1. หัว DB9 to RJ45 จำนวน 2 หัว
2. สา
ย LAN ที่ใช้ปกติ

ขั้นตอนการทำ
1. จัดการต่อสายที่หัว DB9 to RJ45 ดังนี้
หัวแรก
สายน้ำตาลเข้าขา 2 (Tx)
สายสีเหลืองเข้าขา 3 (Rx)
สายสีแดงเข้าขา 5 (GND)
หัวสอง
สายสีน้ำตาลเข้าขา 3 (Rx)
สายสีเหลืองเข้าขา 2 (Tx)
สายสีแดงเข้าขา 5 (GND)
** ระวังอย่าเสียบสายผิดรู เพราะเมื่อเสียบเข้าไปแล้วจะดึงไม่ออก **

ทดสอบการใช้งานกับโปรแกรม DreamUP
1. เสียบหัว DB9 เข้ากับ COM1 ของ PC และ COM ของดรีมบอกซ์
2. เสียบสาย LAN เชื่อมต่อระหว่างหัว DB9 ทั้งสอง
3. เปิดโปรแกรม DreamUP เลือกเป็น COM1 ปลด Network แล้วกด Connect
4. เสียบไฟเข้า ดรีมบอกซ์ ถ้าทุกอย่างถูกต้องจะต้องเห็นสถานะแสดงการเชื่อมต่อ

 ขอบคุณเว็บ http://donut.blogka.com/ มาก ๆ ครับสำหรับข้อมูลดี ๆ

 

2007/Oct/20

วันก่อนติดตั้งโปรแกรมใหม่ (Windows XP) เมนู My Recent Document หายไป 
เมนู  My Recent Document เอาไว้ใช้เปิดไฟล์โปรแกรมที่เราเคยบันทึกไว้ ปกติจะแสดงประมาณ 15 ไฟล์ล่าสุด อาจจะเป็นเรื่องเก่าของคนอื่น แต่เป็นเรื่องใหม่ของผมเอง ก็เลยเขียนเก็บไว้ซักหน่อย กันลืม...

ดูในรูป ปกติมันจะแสดงอยู่ในกรอบสีแดง แต่คราวนี้ไม่มีแฮะ

เมื่อค้นหาข้อมูลใน Google ได้ความเกี่ยวกับ My Recent Document ว่าให้เข้าไปแก้ไขใน Registry Edit
โดยให้เลือกไปที่เมนู Start => Run => ในกรอบ open ให้พิมพ์คำสั่ง regedit  จากนั้นกดปุ่ม Enter

ในหน้าต่าง Registry Editor ให้เข้าไปใน \HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer

ในกรอบด้านขวาจะมีคำสั่ง NoRecentDocsMenu ให้เลือกแล้วลบออก

Boot เครื่องหนึ่งครั้ง เราก็จะได้เมนู My Recent Document กลับมาแล้วครับ

การยกเลิกก็ทำย้อนกลับไป โดยไปเพิ่มตัวแปร NoRecentDocsMenu ลงไป ก็น่าจะ OK นะครับ

edit @ 20 Oct 2007 11:24:15 by BigTUI ^_^"