ข้ามไปที่เนื้อหาหลัก

บทความ

กำลังแสดงโพสต์จาก ตุลาคม, 2018

มาปรับแต่งโค้ดให้ปลอดภัยด้วย rips-0.55 กันเถอะ

วิธีใช้คร่าวๆนะครับ 1.ดาวน์โหลด http://rips-scanner.sourceforge.net/ 2. คลายซิปไว้ที่เว็บไดเรกทอรี่ตรงไหนก็ได้อ แอดมินสร้าง /labs/ ขึ้นมาอีกที เวลาเข้าใช้ก็ http://localhost/labs/rips-0.55 3. กำหนด path / file: ที่ต้องการทดสอบ แนะนำให้คัดลอกโปรเจ็กต์เรามาว่างใน /labs เช่นกัน แล้วก็เอา PATH เต็มๆมาใส่ เช่น D:/www/labs/myproject 4. กด scan รอดูผลลัพธ์ ในขั้นตอนที่ 3 ถ้าต้องการตรวจเฉพาะบางโฟลเดอร์ก็ / ชื่อโฟลเดอร์เพิ่มเข้าไป ก็จะ scan เร็วขึ้น พอสรุปปัญหาแต่ละไฟล์แต่ละจุดออกมา ก็จำ Line ของไฟล์นั้นๆ ไปแก้ใน project จริงๆของเรา ดาวน์โหลดโปรแกรม rips-0.55 ได้ที่ http://rips-scanner.sourceforge.net/

PHP การอัพเกรดเวอร์ชั่น 7.1 กับปัญหาของ Codeigniter + TCPDF + FPDI

ปัญหาหลังอัพเกรด PHP 7.1 Declaration of PdfTemplate::addPage() Declaration of PdfTemplate::SetFont() Declaration of PdfTemplate::Link() Declaration of PdfTemplate::Image() พอรันหน้ารายงาน PDF ปุ๊บ เจอ Error message มาเป็นกระบุง!! แต่อย่าเพิ่งตกใจไป เข้าไปตาม File และ Line ที่ระบุเลย Let's Go++ เอาล่ะ ตรงดิ่งไปที่ บรรทัด 449 ??????? ไม่พบอะไรเลย สุดซอย ก็ถอยออกมาก่อน มาเริ่มจากฟังก์ชั่นแรก ก็คือ Declaration of PdfTemplate::addPage เอาไปค้นใน Google เลย แล้วมองหาเว็บ StackOverFlow ก็ได้หน้านี้มา (หาอยู่นานมาก >_<) https://stackoverflow.com/questions/19912591/fpdi-tcpdf-problems หลังจากลองแก้ไขตามกระทู้นี้ก็พบว่า "ใช้ได้จริงด้วย" ก็นั่งพินิจพิเคราะห์อยู่นานสองนาน จนแน่ใจว่า "แค่คัดลอกฟังก์ชั่นที่อยู่หลังคำอธิบาย Error มาวางแทนทีแค่นั้นเอง" (ตามรูปด้านบนนี้) หลังจากครบทั้ง 4 ฟังก์ชั่น ก็จะเจอ Error ตัวใหม่ๆ O_o' ก็ได้ใจความว่า ชื่อฟังก์ชั่นต้องไม่เป็นชื่อเดียวกับชื่อคลาสนั่นเอง (เปล่าหรอก จริงๆผมไม่ได้แปล แค่ก

PHPEXCEL getCalculatedValue or getFormattedValue returns fatal error

PHPEXCEL กับปัญหาเรียกใช้งาน rangeToArray() ที่มีการผสานเซลล์ไม่ได้ ก่อนหน้านี้ใช้ PHP 5.5 ก็ไม่เคยมีปัญหาเรื่องเซลล์ที่ผสานกัน จนลองอัพเกรด PHP เป็น 7.1 ก็พบว่า ฟังก์ชั่น rangeToArray() ใช้ได้เฉพาะแถวที่ไม่ผสานเท่านั้น $rowTotalCheck = $sheet->rangeToArray ( 'A3:' . $highestColumn . '3', NULL, TRUE, FALSE ); $col = $rowTotalCheck[0]; $total_check = $col[6]; $total_dif     = $col[7];  ก็เลยต้องเปลี่ยนไปใช้ getCell('G3')->getValue(); $total_check = $sheet->getCell('G3')->getValue(); $total_dif= $sheet->getCell('I3')->getValue(); แต่ปรากฏว่า I3 เป็นสูตร SUM() ก็ได้ออกมาเป็นข้อความเฉยๆ ก็เลยต้องหากันต่อไปจนได้ฟังก์ชั่น getCell('I3')->getOldCalculatedValue() $total_dif     = $sheet->getCell('I3')->getOldCalculatedValue(); เมื่อลองรันดูก็พบว่าผ่านฉลุย อ้างอิง https://stackoverflow.com/questions/29966752/phpexcel-getcalculatedvalue-or-getformattedvalue-returns-fatal-error อ่านเรื่อง

CodeIgniter 3 กับวิธีแก้ปัญหา PHP 7.1 ยกเลิกฟัง์กชั่น mcrypt_encrypt is deprecated

Deprecated function !! mcrypt_encrypt(), mcrypt_decrypt(), mcrypt_create_iv() สำหรับการแก้ไขก็คือ ใช้ฟังก์ชั่น openssl_encrypt() และ openssl_decrypt() แทนที่ฟังก์เดิม สร้างไฟล์ MY_Encrypt.php ไว้ที่ไดเรกทอรี่ application/libraries/MY_Encrypt.php <?php if (!defined('BASEPATH'))    exit('No direct script access allowed'); /**  * Override for solve deprecated function  * mcrypt_encrypt(), mcrypt_decrypt(), mcrypt_create_iv()  */ class MY_Encrypt extends CI_Encrypt {     public function __construct()     {         parent::__construct();     }     /**      * Encrypt using Mcrypt      *      * @param    string      * @param    string      * @return    string      */     public function mcrypt_encode($data, $key)     {         $init_size = openssl_cipher_iv_length($cipher="AES-128-CBC");         $init_vect = openssl_random_pseudo_bytes($init_size);         return $this->_add_cipher_noise($init_vect . openssl_encrypt($data, $c

jQuery กับวิธีกำหนด checked ให้กับ checkbox ตามค่าที่บันทึกในฐานข้อมูล

jQuery selector by Attrubute matching value จากภาพด้านบนนั้น คือการเลือกตัวเลือกตามข้อมูลที่อยู่ในฐานข้อมูล เช่น ฟิลด์ level มีค่า 2 เมื่อนำมาใส่ในแอตทริบิวต์ data-record-value ของตัวเลือกทุกตัวเรียบร้อย เราสามารถตรวจสอบ checkbox ตัวที่มีค่า value ตรงกับในฐานข้อมูลที่ดึงออกมา หรือตรงกับแอตทริบิวต์ที่สร้างขึ้นมาด้วย jQuery ดังนี้             $( "input[type='checkbox']" ).prop( "checked", function( i, val ) {                 return $(this).val() == $(this).data('record-value');             }); โค้ดฉบับเต็มสำหรับนำไปทดสอบกันดูครับ ลองเปลี่ยนค่าใน $row['level'] จาก 2 เป็น 1 และ 3 ตามลำดับดูนะครับ <?php $row['level'] = 2; ?> <html lang="en">   <head>     <meta charset="utf-8">     <script src="https://code.jquery.com/jquery-3.3.1.min.js"></script>   </head> <body>       <form action="/action_page.php">        

PHP ตรวจสอบรูปแบบเวลา HH:MM:SS

PHP Validate Time Format <?php function isTime($time) { if(strlen($time) == 5){ return preg_match("#([0-1]{1}[0-9]{1}|[2]{1}[0-3]{1}):[0-5]{1}[0-9]{1}#", $time); }elseif(strlen($time) == 8){ return preg_match("#([0-1]{1}[0-9]{1}|[2]{1}[0-3]{1}):[0-5]{1}[0-9]{1}:[0-5]{1}[0-9]{1}#", $time); } return false; } $time1 = '00:12:60'; $time2 = '24:12:14'; $time3 = '15:12:21'; echo "<br>TEST FALSE , isTime('$time1') = " . (isTime($time1) > 0? 'TRUE' : 'FALSE'); echo "<br>TEST FALSE , isTime('$time2') = " . (isTime($time2) > 0? 'TRUE' : 'FALSE'); echo "<br>TEST <b>TRUE</b> , isTime('$time3') = " . (isTime($time3) > 0? '<b>TRUE</b>' : 'FALSE'); ?> ผลลัพธ์ อ้างอิง http://burnignorance.com/php-programming-tips/how-to-check-time-format-hhmm-in-php/

Google Pie Chart ต่อแขนต่อขา ชี้ข้อมูลแต่ละส่วน จัดป้ายกำกับให้ดูสบายตา

Google Pie Chart หลังจากค้นหาอยู่นาน เพราะคิดไม่ออกว่าหลังจากทดสอบโค้ดนี้เสร็จแล้วไปเก็บไว้ไหน พอค้นเจอก็รีบจัดการโพสต์ไว้บนบล็อกซะเลย <html>   <head>     <script type="text/javascript" src="https://www.gstatic.com/charts/loader.js"></script>     <script type="text/javascript">       google.charts.load("current", {packages:["corechart"]});       google.charts.setOnLoadCallback(drawChart);       function drawChart() {         var data = google.visualization.arrayToDataTable([           ['Task', 'Hours per Day'],           ['Work',     8],           ['Eat',      2],           ['Journey',  2],           ['Watch TV', 2],           ['Coding',   4],           ['Sleep',    6],         ]);         var options = {           title: 'My Daily Activities',           legend: { position: 'top' }         };      

ค้นหาในเว็บไซต์

เนื้อเพลงที่ได้รับความนิยม ในรอบสัปดาห์

การทำ Index ให้ MySQL Database เพื่อเพิ่มความเร็ว

สำหรับตัวอย่างนี้จะเป็นการ JOIN ตาราง 2 ตาราง 1. tb_reject_hd 2. tb_reject_desc ซึ่งจะเชื่อมกันด้วยฟิลด์ docno จะเห็นว่าเราสามารถคิวรี่เรียกข้อมูลออกมาได้ตอนที่ยังไม่ใส่ ORDER BY แต่เมื่อใส่ ORDER BY เข้าไป จะหมุนค้างจนหน้าเว็บหยุดทำงาน จากนั้นก็ลองเพิ่ม INDEX ให้กับฟิลด์ docno ในตาราง tb_reject_desc  ซึ่งในตัวอย่างนี้จะสร้างตารางใหม่ขึ้นมาจากตารางเดิม เปลี่ยนชื่อเป็น tb_reject_desc_with_index และทำการเพิ่ม INDEX KEY เข้าไป เมื่อทดสอบคิวรี่แบบมี ORDER BY จะเห็นว่าสามารถแสดงผลได้ทันที จากการสังเกตตัวเลขเวลาในการประมวลผล จะเห็นได้ว่าแบบไม่ใช้ ORDER BY จะทำงานเร็วกว่า แต่ในการทำงานส่วนใหญ่ก็มักจะต้องใช้ ORDER BY อย่างหลีกเลี่ยงไม่ได้ เช่นกรณีค้นหา แบบเรียงลำดับ ตัวอย่างโค้ดคิวรี่ข้อมูลจากตารางที่ Add Index Key แล้ว <!DOCTYPE html> <html lang="en"> <head>     <meta charset="UTF-8">     <title>Add Index Key</title> </head> <body> <h2>ORDER BY with INDE

PHP CI MANIA 0.8.4.09 แก้ไขปัญหา Import ไฟล์ Excel แล้วไม่สามารถบันทึกได้ + เพิ่มตัวเลือก Validate บางฟิลด์

- เพิ่มตัวเลือก Validate บางฟิลด์ กรณีละเว้นการตรวจสอบให้เอาเครื่องหมายเช็คถูกออก -  แก้ไขปัญหา Import ไฟล์ Excel แล้วไม่สามารถบันทึกได้ สมาชิก Premium ดาวน์โหลดได้ที่ http://fastcoding.phpcodemania.com/index.php/downloads PHP  CI  MANIA   - PHP Code Generator  โปรแกรมช่วยสร้างโค้ด "ลดเวลาการเขียนโปรแกรม" ราคาสุดคุ้ม    http://fastcoding.phpcodemania.com

แจกโค้ด PHP : รวมลิงค์ แจกฟรี!! ตัวอย่างโปรเจ็กต์ ที่พัฒนาด้วย PHP

       สำหรับหลายท่านที่ขอโค้ดเข้ามาทาง Inbox ของเฟซบุ๊กแฟนเพจ หรือถามถึงระบบต่างๆหลังไมค์มานั้น ส่วนใหญ่ก็มีแจกอยู่แล้วในเว็บบอร์ด ThaiCreate.Com นะครับ  และด้านล่างนี้ก็เป็น Source Code PHP ระบบต่างๆ ที่มีเหล่าผู้ใจดีแจกฟรี!! ให้นำไปลองใช้ลองศึกษากันครับ แจกฟรี  !! ตัวอย่างการ  PHP  Booking # จองห้องประชุม  ผ่านเว็บครับ http://www.thaicreate.com/php/forum/090558.html ระบบแบบสอบถาม https://www.thaicreate.com/php/forum/099342.html แจก code!! การทำประเมินออนไลน์มี ไว้สำหรับพัฒนาต่อยอด https://www.thaicreate.com/php/forum/102203.html แจกฟรี PHP CodeIgniter CMS ให้ทุกท่านได้ลอง (รองรับ Responsive) http://www.thaicreate.com/php/forum/122929.html โดย : https://www.cszcms.com/ แจก PHP : ระบบยืม-คืนเอกสาร (จากตัวอย่าง เอกสารข้อมูลวัตถุดิบสินค้า) http://www.thaicreate.com/php/forum/103428.html แจกระบบ PHP Shopping Cart ระบบตะกร้าสินค้า ระบบสั่งซื้อ มีระบบตัดสต๊อก, สั่งซื้อวัตถุดิบคงเหลือ http://www.thaicreate.com/community/php-shooping-ca

การสร้างเว็บไซต์ในปี 2023 นั้นจะต้องคำนึงถึงอะไรบ้าง

การสร้างเว็บไซต์ในปี 2023 นั้นจะต้องคำนึงถึงความเปลี่ยนแปลงของเทคโนโลยีและแนวโน้มการใช้งานของผู้ใช้ใหม่ๆ ดังนั้น นี่คือเทคนิคที่สามารถช่วยให้การสร้างเว็บไซต์ในปี 2023 เป็นไปได้อย่างรวดเร็วและเป็นประสิทธิภาพ: 1. ใช้ Responsive Design: การออกแบบเว็บไซต์ให้สามารถปรับขนาดได้ตามขนาดของหน้าจอของอุปกรณ์ต่างๆ เช่น โทรศัพท์มือถือ แท็บเล็ต และคอมพิวเตอร์ เพื่อให้ผู้ใช้สามารถเข้าถึงและใช้งานได้ง่ายและสะดวก 2. ใช้โครงสร้างของ HTML5: การใช้โครงสร้าง HTML5 จะช่วยให้เว็บไซต์ของคุณมีประสิทธิภาพและปรับปรุงในเรื่องของการเข้าถึงข้อมูล การใช้งานและความปลอดภัย 3. ใช้ CSS Grids หรือ Flexbox: การใช้ CSS Grids หรือ Flexbox จะช่วยให้ง่ายต่อการจัดหน้าเว็บไซต์ และสามารถปรับแต่งรูปแบบของเว็บไซต์ได้ง่ายขึ้น 4. ใช้ JavaScript Frameworks: การใช้ JavaScript Frameworks เช่น React, Angular, หรือ Vue.js จะช่วยให้สามารถสร้างเว็บไซต์ที่เป็น interactive และมีประสิทธิภาพได้อย่างรวดเร็ว 5. ใช้ Content Management Systems (CMS): การใช้ CMS เช่น WordPress, Joomla, หรือ Drupal จะช่วยให้สามารถสร้างเว็บไซต์ได้อย่างร PHP  CI  M

MySQL คำสั่ง SQL จัดเรียงคำตามตัวอักษร ภาษาไทย ในฟิลด์ที่กำหนด Collation เป็น utf-8

การจัดเรียงข้อมูลตามลำดับตัวอักษรไทย   CONVERT( name USING tis620 ) ASC การเรียงลำดับตัวอักษรแบบ tis-620 ในการเขียนโปรแกรม PHP เพื่อแสดงข้อมูลจากฐานข้อมูล MySQL การเขียนคำสั่ง SQL ให้จัดเรียงลำดับนั้น เราจะใช้ ORDER BY  และกำหนดฟิลด์ที่ต้องการจัดเรียงลำดับ เช่น ในตัวอย่างนี้จะเป็นการจัดเรียงตามลำดับตัวอักษรของชื่อเมนู นั่นก็คือฟิลด์ name นั่นเอง แต่ในขั้นตอนการสร้างฐานข้อมูลนั้น เราได้กำหนด Charset ของตารางและฟิลด์เป็นการจัดเรียง Collation แบบ utf-8 เอาไว้เพื่อให้รองรับภาษาแบบมาตรฐาน ดังนั้นเมื่อเขียนโปรแกรมสั่ง ORDER BY name ASC ก็จะมีการจัดเรียงที่จะให้คำที่มีสระนำหน้าอยู่หลัง ฮ. นกฮุก ไปเสียหมด จะเห็นว่าชื่อเมนูหรือสินค้าที่มี ข นำหน้าจะมาเป็นลำดับแรก ทั้งที่จริงๆแล้ว มีสินค้าที่เป็น ก อยู่หลายรายการ เพียงแต่ว่ามีสระนำหน้าอยู่เท่านั้นเอง จากรูปด้านบน จะมีรายการที่เป็น ก อยู่ 3 รายการ คือเมนู โกโก้ ต่างๆ แต่เพราะมีสระโอ นำหน้า จึงทำให้การจัดเรียงแบบ utf-8 ให้อยู่ในลำดับท้าย เพื่อแก้ไขปัญหานี้ การเขียนโปรแกรมเพื่อ ORDER BY จะต้องทำการเปลี่ยน

PHP คำสั่ง echo คืออะไร

คำสั่ง echo คือ Function หนึ่งของ PHP ที่ใช้แสดงข้อมูลออกมาในหน้าเว็บ ไม่ว่าจะเป็น ตัวอักษร ตัวเลข หรือตัวแปรต่างๆ ที่เก็บข้อมูลที่ต้องการแสดงผล ถ้าเป็นการร่ายเวทมนต์ก็เหมือนการเสกให้ปรากฏออกมา "Aparecium..!! " (อะ-พา-เร-ซี-อึม..!!)  ทันใดนั้นหน้ากระดาษที่ว่างเปล่า ก็ค่อยๆปรากฏตัวอักษรขึ้นมาให้เห็น ตัวอย่างการใช้งาน <?php     echo "Hello World";     $number = 2016;     echo $number; ?> ดูข้อมูลเพิ่มเติมได้ที่  echo Function PHP  CI  MANIA   -  PHP Code Generator  โปรแกรมช่วยสร้างโค้ด ลดเวลาการเขียนโปรแกรม เขียนโปรแกรมง่ายและสะดวกขึ้น สนใจสั่งซื้อราคาสุดคุ้ม >>  http://fastcoding.phpcodemania.com/

กด Start ตรง mysql ใน XAMPP ไม่ได้ แก้ไขยังไงดี?

ข้อความ Error ที่ปรากฏดังนี้ 6:37:41  [mysql] This may be due to a blocked port, missing dependencies, 6:37:41  [mysql] improper privileges, a crash, or a shutdown by another method. 6:37:41  [mysql] Press the Logs button to view error logs and check 6:37:41  [mysql] the Windows Event Viewer for more clues 6:37:41  [mysql] If you need more help, copy and post this 6:37:41  [mysql] entire log window on the forums ต้องบอกก่อนว่าเคสนี้เกิดขึ้นเมื่อผมรัน XAMPP แบบ Portable แล้วดันไปขยับสาย USB การเชื่อมต่อก็เลยหลุดไป หลังจากถอดสาย USB แล้วเสียบใหม่ XAMP ก็รันได้แค่ Apache อย่างที่เห็นในภาพ หลังจากนั้นสิ่งที่ทำอย่างแรกก็คือ คัดลอก Error ไปค้นในเว็บแล้วลองทำไปเรื่อยๆ จนกว่าจะหาวิธีได้ xampp MySQL does not start https://stackoverflow.com/questions/18177148/xampp-mysql-does-not-start เว็บแรกทำให้รู้ว่าน่าจะเกี่ยวกับ Port ก็เลยลองเปลี่ยนเป็นพอร์ตอื่นก็ Start ได้ทันที You also need to change port 3306 to 3307 in xampp\php\php.ini แต่...นี่ยังไม่ใช่ที่ต้อ

จัดระเบียบโค้ด ใน Notepad++ (Auto indentation plugin)

เวลาเขียนโค้ด แล้วไม่ได้จัดรูปแบบ หรือเอาโค้ดจาก Text Editor หนึ่งมาใช้ในอีกตัวหนึ่งก็มีโอกาสที่ Tab หรือ Space bar จะต่างกัน แล้วเราจะมานั่ง TAB เองก็คงไม่ไหว จึงจำเป็นต้องหา Plugin เข้ามาช่วย ลองค้นดูก็เจอกับกระทู้นี้ >> แม้หน้าตาจะไม่ตรงกันแต่หลักๆก็คือเพิ่ม Plugins เข้าไปชื่อ Indent By fold อ่านเต็มๆได้ที่นี่ https://softwarerecs.stackexchange.com/questions/1496/auto-indentation-plugin-for-notepad

PHP + Fullcalendar กับ MySQL

หลักการทำงาน เรียกข้อมูลจากตาราง tb_event ด้วยฟังก์ชั่นของ MySQLi ข้อมูลจากฐานข้อมูลจะถูกวนลูปเก็บไว้ใน $data และจะถูกส่งไปที่ Fullcalendar ด้วยการแปลงข้อมูลจาก PHP ให้อยู่ในรูปแบบ JSON อาร์เรย์ด้วยฟังก์ชั่น json_encode()

PHP Array เขียนโปรแกรมตัดเกรดด้วย PHP เพื่อการเรียนรู้การใช้งาน Array

โค้ดต่อไปนี้จะเป็นการสร้างฟังก์ชั่นเพื่อตัดเกรด โดยใช้ความสามารถของตัวแปร Array ในการเก็บเกรดต่างๆเอาไว้ทั้งหมด 10 ตำแหน่ง และข้อความ Error ในตำแหน่งที่ 11 <?php // ฟังก์ชั่นรับค่าคะแนน และคืนค่าเป็น เกรดที่ได้ function calculate_grade($score){ $grade = array('F', 'F', 'F', 'F', 'F', 'D', 'C', 'B', 'A', 'A', 'A', 'Error'); if($score > 100 || $score < 0){ $cal = 11; }else{ $cal = floor($score / 10); } return $grade[$cal]; } // ทดสอบฟังก์ชั่นโดยการส่งค่าทุกหลักเข้าไป echo '<br/>', $number = 0, ' = ', calculate_grade($number); echo '<br/>', $number = 8, ' = ', calculate_grade($number); echo '<br/>', $number = 16, ' = ', calculate_grade($number); echo '<br/>', $number = 21, ' = ', calculate_grade($number); echo '<br/>', $number = 39, ' = ', calculate_

ค้นหาบล็อกนี้