หน้าหลัก โค้ด-บทความ php โค้ด-บทความ javascript โค้ด-บทความ css สารบัญ สารบัญ

ทักทายครับ

สวัสดีครับ หลังจากที่ blog นี้หยุดการอัพเดททบความเกี่ยวกับโค้ดในการใช้ทำเวปไปนานไม่ว่าจะเป็น code php, html, javascript, css, ajax เนื่องจากผมไม่ค่อยมีเวลาจนลืม blog นี้ไปเลย นึกขึ้นได้ตอนปีใหม่ ไปค้นหาใน google แล้วตกใจ เนื่องจาก blog นี้ไปอยู่ลำดับที่ 1 ของการค้นหา ไม่เชื่อลองดู เลยขอถือโอกาสเริ่มต้นใหม่ในช่วงปีใหม่นี้เริ่มอัพเดทบทความตั้งแต่ตอนนี้เป็นต้นไป หวังเป็นอย่างยิ่งว่าจะมีผู้ติดตามบทความของผมต่อไปน่ะครับ ปล.ท่านใดสนใจลงโฆษณาสามารถติดต่อได้ที่ hotcodephp@gmail.com
แสดงบทความที่มีป้ายกำกับ PHP แสดงบทความทั้งหมด
แสดงบทความที่มีป้ายกำกับ PHP แสดงบทความทั้งหมด

22 ส.ค. 2555

ตัวอย่างฟอร์มการกรอกข้อมูลส่วนตัวโดยใช้ code php

จากบทความ ตัวอย่างฟอร์มการกรอกข้อมูลส่วนตัวโดยใช้ Javascript ผมได้เขียนถึงการกรอกข้อมูลในแบบฟอร์มโดยใช้โค้ด php + javascript มาบทความนี้เลยขอกล่าวถึงการใช้เฉพาะโค้ด php อย่างเดียวบ้าง ซึ่งมันก็ดูดีไปอีกแบบ ลักษณะการทำงานก็เหมือนเดิมคือเวลากรอกข้อมูลผิด หรือกรอกไม่ครบถ้วนก็จะมีข้อความเตือนขึ้นมา มาดูตัวอย่างกันครับ


ตัวอย่างโค้ด simple2.php

 <!DOCTYPE html PUBLIC
          "-//W3C//DTD XHTML 1.0 Transitional//EN"
          "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head>
<title>Sample 2</title>
<style>
body { padding: 10px 0px 0px 0px; }
td
{
  padding: 2px 5px;
  text-align: left;
}
h4 { margin: 0px; }
input.editfield, select.editfield, textarea.editfield { width: 18em; }
</style>
</head>
<body>
<center>
<form method="post" action="sample2.php">
<input type="hidden" name="form_validation_rules"      value="" />
<input type="hidden" name="form_validation_behaviours" value="
Details : count details_count 20 black red;
Year : next 4;
Month Day : next 2;
Month Day : prev;
" />
<table>
<?php
if (isset($_POST['submit']))
{
  include 'form-validation.php';
  $result = form_validation_validate($_POST, "
  Username Password Year Month Day Details : empty;
  Username Password : len >= 3;
  Username Password : chnum_;
  E-mail: email;
  Membership : select 0;
  Year : > 1900;
  Year Month Day : date;
  Sex : radio;
  Details: len <= 20;
  Categories[] Newsletters[] : cnt >= 2;
  Agree : terms;
  ");
  ?>
  <tr>
  <td colspan="2">
  <?php

  if ($result === true)
  {
    echo '<span style="color: green;">The form is successfully submitted!</span>';
    $_POST = Array();
  }
  else echo '<span style="color: red;">' . $result . '</span>';
  ?>
  </td>
  </tr>
  <?php
}
function __post($name, $val = '')
{
  return isset($_POST[$name]) ? $_POST[$name] : $val;
}
function __checked($name, $val)
{
  return isset($_POST[$name]) && ($_POST[$name] == $val)  ? 'checked="checked"' : '';
}
function __checked2($name, $ind)
{
  return isset($_POST[$name]) && in_array($ind, $_POST[$name]) ? 'checked="checked"' : '';
}
function __selected($name, $val)
{
  return isset($_POST[$name]) && ($_POST[$name] == $val) ? 'selected="selected"' : '';
}
function __selected2($name, $ind)
{
  return isset($_POST[$name]) && in_array($ind, $_POST[$name]) ? 'selected="selected"' : '';
}
?>
<tr>
  <td style="padding-bottom: 10px;" colspan="2"><h4>Sample 2</h4></td>
</tr>
<tr>
  <td>Username:</td>
  <td><input class="editfield" type="text" name="Username" value="<?=__post('Username');?>" /></td>
</tr>
<tr>
  <td>Password:</td>
  <td><input class="editfield" type="password" name="Password" value="<?=__post('Password');?>" /></td>
</tr>
<tr>
  <td>E-mail:</td>
  <td><input class="editfield" type="text" name="E-mail" value="<?=__post('E-mail');?>" /></td>
</tr>
<tr>
  <td>Membership:</td>
  <td>
  <select class="editfield" name="Membership">
    <option value="0" <?=__selected('Membership', 0);?>></option>
    <option value="1" <?=__selected('Membership', 1);?>>Silver</option>
    <option value="2" <?=__selected('Membership', 2);?>>Gold</option>
    <option value="3" <?=__selected('Membership', 3);?>>Platinum</option>
  </select>
  </td>
</tr>
<tr>
  <td>Age:</td>
  <td>
  <input type="text" name="Year"  value="<?=__post('Year'); ?>" size="4" maxlength="4" />
  <input type="text" name="Month" value="<?=__post('Month');?>" size="2" maxlength="2" />
  <input type="text" name="Day"   value="<?=__post('Day');  ?>" size="2" maxlength="2" />
  <small>yyyy/mm/dd</small>
  </td>
</tr>
<tr>
  <td>Sex:</td>
  <td>
  <input type="radio" name="Sex" value="male"   <?=__checked('Sex', 'male'  );?> /> Male
  <input type="radio" name="Sex" value="female" <?=__checked('Sex', 'female');?> /> Female
  </td>
</tr>
<tr>
  <td>Details:</td>
  <td>
  <textarea class="editfield" name="Details" rows="4"><?=__post('Details');?></textarea>
  <br />
  <small><span id="details_count">0</span> out of 20 characters</small>
  </td>
</tr>
<tr>
  <td>Categories:</td>
  <td>
  <select class="editfield" name="Categories[]" multiple="multiple" size="4">
    <option value="0" <?=__selected2('Categories', 0);?>>Cars</option>
    <option value="1" <?=__selected2('Categories', 1);?>>Computers</option>
    <option value="2" <?=__selected2('Categories', 2);?>>Dogs</option>
    <option value="3" <?=__selected2('Categories', 3);?>>Food</option>
  </select>
  <br />
  <small>Use ctrl+mouse to select multiple categories</small>
  </td>
</tr>
<tr>
  <td>Newsletters:</td>
  <td>
  <input type="checkbox" name="Newsletters[]" value="0" <?=__checked2('Newsletters', 0);?> /> Cars <br />
  <input type="checkbox" name="Newsletters[]" value="1" <?=__checked2('Newsletters', 1);?> /> Computers <br />
  <input type="checkbox" name="Newsletters[]" value="2" <?=__checked2('Newsletters', 2);?> /> Dogs <br />
  <input type="checkbox" name="Newsletters[]" value="3" <?=__checked2('Newsletters', 3);?> /> Food
  </td>
</tr>
<tr>
  <td></td>
  <td>
  <input type="checkbox" name="Agree" value="Yes" <?=__checked('Agree', 'Yes');?> />
  <small>By checking this box you agree to some terms</small>
  </td>
</tr>
<tr>
  <td></td>
  <td><input type="submit" name="submit" value="Submit" /></td>
</tr>
</table>
</form>
<script src="form-validation.js">
</script>
</center>
</body>
</html>
      
ส่วนอันนี้เป็นไฟล์ประกอบน่ะครับ form-validation.js และ form-validation.php download

Read more >>

21 ส.ค. 2555

ตัวอย่างฟอร์มการกรอกข้อมูลส่วนตัวโดยใช้ Javascript เข้ามาช่วย

บทความนี้เป็นตัวอย่างการทำฟอร์มไว้ใช้สำหรับกรอกข้อมูลประวัตส่วนตัว ซึ่งหลายท่านอาจเคยเห็นมาหลายแบบแล้ว แต่โค้ดที่ผมจะนำมาให้ดูนี้เป็นการใช้งานของโค้ด php + javascript ซึ่งลักษณะการทำงานคือ เมื่อเรากรอกข้อมูลในฟอร์มแล้วหากกรอกไม่ครบถ้วน หรือกรอกไม่ถูกต้อง มีจะข้อความเตือนตลอด ซึ่งทำให้ง่ายต่อการกรอกข้อมูล มาดู code กันเลยครับ


ตัวอย่าง code simple1.php


<!DOCTYPE html PUBLIC
          "-//W3C//DTD XHTML 1.0 Transitional//EN"
          "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head>
<title>Sample 1</title>
<style>
body { padding: 10px 0px 0px 0px; }
td
{
  padding: 2px 5px;
  text-align: left;
}
h4 { margin: 0px; }
input.editfield, select.editfield, textarea.editfield { width: 18em; }
</style>
</head>
<body>
<center>
<form method="post" action="sample1.php">
<input type="hidden" name="form_validation_rules" value="
Username Password Year Month Day Details : empty;
Username Password : len >= 3;
Username Password : chnum_;
E-mail: email;
Membership : select 0;
Year : > 1900;
Year Month Day : date;
Sex : radio;
Details: len <= 20;
Categories[] Newsletters[] : cnt >= 2;
Agree : terms;
" />
<input type="hidden" name="form_validation_behaviours" value="
Details : count details_count 20 black red;
Year : next 4;
Month Day : next 2;
Month Day : prev;
" />
<table>
<tr>
  <td style="padding-bottom: 10px;" colspan="2"><h4>Sample 1</h4></td>
</tr>
<tr>
  <td>Username:</td>
  <td><input class="editfield" type="text" name="Username" /></td>
</tr>

<tr>
  <td>Password:</td>
  <td><input class="editfield" type="password" name="Password" /></td>
</tr>
<tr>
  <td>E-mail:</td>
  <td><input class="editfield" type="text" name="E-mail" /></td>
</tr>
<tr>
  <td>Membership:</td>
  <td>
  <select class="editfield" name="Membership">
    <option value="0"></option>
    <option value="1">Silver</option>
    <option value="2">Gold</option>
    <option value="3">Platinum</option>
  </select>
  </td>
</tr>
<tr>
  <td>Age:</td>
  <td>
  <input type="text" name="Year"  size="4" maxlength="4" />
  <input type="text" name="Month" size="2" maxlength="2" />
  <input type="text" name="Day"   size="2" maxlength="2" />
  <small>yyyy/mm/dd</small>
  </td>
</tr>
<tr>
  <td>Sex:</td>
  <td>
  <input type="radio" name="Sex" value="male"   /> Male
  <input type="radio" name="Sex" value="female" /> Female
  </td>
</tr>
<tr>
  <td>Details:</td>
  <td>
  <textarea class="editfield" name="Details" rows="4"></textarea>
  <br />
  <small><span id="details_count">0</span> out of 20 characters</small>
  </td>
</tr>
<tr>
  <td>Categories:</td>
  <td>
  <select class="editfield" name="Categories[]" multiple="multiple" size="4">
    <option value="0">Cars</option>
    <option value="1">Computers</option>
    <option value="2">Dogs</option>
    <option value="3">Food</option>
  </select>
  <br />
  <small>Use ctrl+mouse to select multiple categories</small>
  </td>
</tr>
<tr>
  <td>Newsletters:</td>
  <td>
  <input type="checkbox" name="Newsletters[]" value="0" /> Cars <br />
  <input type="checkbox" name="Newsletters[]" value="1" /> Computers <br />
  <input type="checkbox" name="Newsletters[]" value="2" /> Dogs <br />
  <input type="checkbox" name="Newsletters[]" value="3" /> Food
  </td>
</tr>
<tr>
  <td></td>
  <td>
  <input type="checkbox" name="Agree" />
  <small>By checking this box you agree to some terms</small>
  </td>
</tr>
<tr>
  <td></td>
  <td><input type="submit" value="Submit" /></td>
</tr>
</table>
</form>
<script src="form-validation.js"></script>
</center>
</body>
</html>


ส่วนอันนี้เป็นโค้ด form-validation.js เป็นไฟล์ประกอบน่ะครับ download ไปใช้กันได้เลย




Read more >>

17 ส.ค. 2555

php กับการ upload ไฟล์ โดยนำ ajax เข้ามาช่วย

เป็นการใช้โค้ด php มาเขียนคำสั่งในการ upload ไฟล์ และใช้ ajax มาช่วยในการแสดงสถานะการ upload และการทำงานขณะ upload ไฟล์อยู่ และเมื่อ upload เสร็จก็จะมีข้อความเตือน เป็นการเพิ่มลูกเล่นให้กับเวปของเราได้ดีเลยครับ มาดูตัวอย่าง code กันเลย

code ไฟล์ index.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=utf-8" />
   <title>Max's AJAX File Uploader</title>
   <link href="style/style.css" rel="stylesheet" type="text/css" />
 
<script language="javascript" type="text/javascript">
<!--
function startUpload(){
      document.getElementById('f1_upload_process').style.visibility = 'visible';
      document.getElementById('f1_upload_form').style.visibility = 'hidden';
      return true;
}

function stopUpload(success){
      var result = '';
      if (success == 1){
         result = '<span class="msg">The file was uploaded successfully!<\/span><br/><br/>';
      }
      else {
         result = '<span class="emsg">There was an error during file upload!<\/span><br/><br/>';
      }
      document.getElementById('f1_upload_process').style.visibility = 'hidden';
      document.getElementById('f1_upload_form').innerHTML = result + '<label>File: <input name="myfile" type="file" size="30" /><\/label><label><input type="submit" name="submitBtn" class="sbtn" value="Upload" /><\/label>';
      document.getElementById('f1_upload_form').style.visibility = 'visible';    
      return true;  
}
//-->
</script>  
</head>

<body>
       <div id="container">
            <div id="header"><div id="header_left"></div>
            <div id="header_main">Max's AJAX File Uploader</div><div id="header_right"></div></div>
            <div id="content">
                <form action="upload.php" method="post" enctype="multipart/form-data" target="upload_target" onsubmit="startUpload();" >
                     <p id="f1_upload_process">Loading...<br/><img src="loader.gif" /><br/></p>
                     <p id="f1_upload_form" align="center"><br/>
                         <label>File:
                              <input name="myfile" type="file" size="30" />
                         </label>
                         <label>
                             <input type="submit" name="submitBtn" class="sbtn" value="Upload" />
                         </label>
                     </p>
                   
                     <iframe id="upload_target" name="upload_target" src="#" style="width:0;height:0;border:0px solid #fff;"></iframe>
                 </form>
             </div>
             <div id="footer"><a href="http://www.ajaxf1.com" target="_blank">Powered by AJAX F1</a></div>
         </div>
               
</body>  




ส่วนอันนี้เป็นไฟล์ประกอบน่ะครับ download

Read more >>

16 ส.ค. 2555

โค้ด php กับ Banner Manager ระบบจัดการป้ายโฆษณา

ระบบจัดการป้ายโฆษณา สามารถจัดการป้ายโฆษณา และยังสามารถดูสถิติได้



วิธีการติดตั้ง
เมื่อ Downloads ได้แล้ว ให้ แตกไฟล์ Zip ใว้ใน Folder ทีก่ำหนดแต่ต้องอยู่ภายใน Path ของ Server เท่านั้น ในที่นี้ผม แตกไฟล์ใว้ที่ C:\Appserv\www\ad_banner การติดตั้งให้แก้ Config ที่ไฟล์ common/config.inc.php

config.inc.php
//(1) ตั้งค่าต่างๆ ของ MySQL Server
$host = "localhost";
$user = "";
$passwd = "";
$dbname = "ad_banner";

จากนั้นให้ใช้ phpMyAdmin ทำการ dump ตารางจากไฟล์ db.sql



หลังจาก dump ตารางเสร็จเรียบร้อยแล้ว สามารถใช้งานได้เลย Run http://localhost/ad_banner/test.php


ระบบ Admin
http://localhost/ad_banner/admin/index.php


User : admin
Pass : admin



สามารถเข้าไปแก้ไขจัดการ Banner ต่าง ๆ ได้เลยครับ 
ส่วนอันนี้เป็นไฟล์ประกอบครับ 
Read more >>

1 ส.ค. 2555

php กับการ upload ไฟล์แบบไม่เปลี่ยนหน้า

code php นี้เกี่ยวกับวิธีการทำ upload ไฟล์ ซึ่งหลายท่านอาจะเคยทำมาแล้วแต่ code ตัวนี้มีความพิเศษกว่าวิธีที่ผมเคยใช้มาก่อน นั้นก็คือมันเป็นโค้ดที่ทำการ upload โดยที่ไม่มีการเปลี่ยนหน้าให้รำคาญใจเลยทุกอย่างทำเสร็จในหน้าเดียว แต่ดูโค้ดแล้วอาจจะยุ่งยากนิดหน่อย แต่ก็ได้ผลลัพธ์ที่คุ้มค่าทีเดียวครับ ดูตัวอย่าง code php ด้านล่างเลยครับ
ขั้นตอนแรกเขียน Form Upload และ Script Upload ก่อน
โค้ดไฟล์ upload.html

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-874">
<title>Upload ไม่เปลี่ยนหน้า</title>

<script language="javascript">
function clickupload()
{

if ( document.getElementById('fileupload').value.length == 0 )
{
alert( 'ระบุ File ที่จะ Upload ' ) ;
return false ;
}


document.getElementById('upmsg').innerHTML = 'กำลัง Upload อยู่ รอซักครู่...' ;
document.getElementById('btnUpload').value = "ส่งไปแล้วไม่ต้องคลิกซ้ำ";
document.getElementById('btnUpload').disabled = true ;


return true ;
}

function uploadok(pathfile)
{
document.getElementById('fileupload').value ="";
document.getElementById('upmsg').innerHTML = 'Upload เสร็จแล้ว <br> file อยู่ที่<Br><a href="'+pathfile+'" target="_blank">'+pathfile+'</a><br>ระบุ File ใหม่ต่อไปได้เลย' ;
document.getElementById('btnUpload').value = "Upload เลย";
document.getElementById('btnUpload').disabled = false;
document.getElementById('frmUpload').reset() ;
return true ;
}



</script>


</head>
<body>
<iframe id="uploadtarget" name="uploadtarget" src="" style="width:0px;height:0px;border:0"></iframe>
<form id="frmUpload" action="upload.php" method="post" enctype="multipart/form-data" onsubmit="return clickupload();" target="uploadtarget">
<span id="upmsg">ระบุ File ที่จะ Upload</span><br>
<input id="fileupload" name="fileupload" type="file">&nbsp;
<input id="btnUpload" type="submit" value="Upload เลย">
</form>
</body>
</html>

คำอธิบายโค้ดสีสีเขียว คือ เมื่อกด Submit มันจะ Load หน้าใหม่ ฉะนั้นผมจึงเพิ่ม Target เข้าไปให้ ผลที่ได้ไปลงไว้ที่ Window ชื่อ uploadtarget โดย Window ชื่อ uploadtarget นี้ผมกำหนดเป็นแบบ iframe ซะเลย แถมกำหนดให้แสดงผลแบบ 0 ด้วย และผมก็เพิ่ม Javascript เพื่อตรวจสอบข้อมูลก่อนว่า คนกดต้องระบุ path File เข้ามา

คำอธิบายโค้ดสีแดง คือ การบอกสถานะการดำเนินการ คราวนี้เมื่อคลิก submit ระบบจะทำการเปลี่ยน ข้อความเป็น กำลัง Upload และทำการล๊อกปุ่มไม่ให้คลิกเข้ามาซ้ำอีก

และตามด้วยโค้ดไฟล์ upload.php

<?

sleep(3);

$file = $_FILES['fileupload']['name'];
$typefile = $_FILES['fileupload']['type'];
$sizefile = $_FILES['fileupload']['size'];
$tempfile = date("Y-m-d")."-".$file;
copy($_FILES['fileupload']['tmp_name'],$tempfile);

?>
<script language="JavaScript">
<!--
window.parent.uploadok('<?=$tempfile?>');
//-->
</script>



พอ Script upload.php ทำงานก็จะส่งค่ากลับมาที่หน้าหลักและรายงานผลเรียบร้อยแล้ว




Read more >>

30 ก.ค. 2555

PHP กับเทคนิคการแปลง IP ให้เป็น .xxx

code php วันนี้ขอกล่าวถึงเรื่องของ IP ซึ่งเป็นการแปลงค่า IP ให้เป็น .xxx เพื่อป้องกันผู้ใช้งานเห็นค่า IP ที่แท้จริง อาจนำโค้ด php ตัวนี้ไปประยุกต์ใช้ในการทำระบบงาน การทำเว็บบอร์ด หรือการโพสข้อความ ก็ได้ เรามาดูตัวอย่าง code php เลยดีกว่า จะมีด้วยกัน 3 วิธีน่ะครับ


วีธีที่1 
$ip='192.168.10.100';
$new =preg_replace('/^((\d+\.){3})(.*)/','\\1xxx',$ip);
echo $new;

วีธีที่2  
$ip='192.168.20.200';
$show=explode(".",$ip);
echo $show['0'],".",$show['1'],".",$show['2'],".xxx";

วีธีที่3 
$ip='192.16.30.253';
echo substr($ip,0,strrpos($ip,".")).".xxx";
Read more >>

26 ก.ค. 2555

PHP กับการป้องกันการลงทะเบียนอัตโนมัติด้วย CAPTCHA

บทความ php วันนี้ขอนำเสอนเจ้าต้ว CAPTCHA มันช่วยให้การใช้เน็ตของคุณปลอดภัยด้วยวัตถุประสงค์สำคัญของมันก็เพื่อความปลอดภัยโดยเฉพาะเว็บไซต์ที่ ต้องมีการป้อนข้อมูลส่วนตัว  เช่นการลงทะเบียนผู้ใช้งาน, การโพสข้อมูลใน webboard ฯลฯ เนื่องจากพวกแฮกเกอร์ส่วนใหญ่จะใช้สิ่งที่เรียกว่า bots ในการโจมตีผู้ใช้ ซึ่ง bots ที่ว่านี้สามารถสร้างขึ้นโดยคอมพิวเตอร์ แต่เนื่องจากคอมพิวเตอร์ไม่สามารถแก้ปัญหาการทดสอบด้วย CAPTCHA ได้ จะต้องอาศัยมนุษย์ที่เพ่งดูกราฟฟิกยุ่งเหยิงเหล่านี้ และแกะตัวอักษรออกมาเพื่อพิมพ์ยืนยันอีกที ทำให้ผู้ใช้ปลอดภัยจาก bots เหล่านี้ไปโดยปริยาย ซึ่งวิธีการสร้างและใช้งาน CAPTCHA ผมขอยกตัวอย่างโค้ด php ให้เอาไปประยุกต์ใช้กันนะครับ
ขั้นตอนแรกให้สร้างไฟล์ captcha.php ภายในไฟล์เขียนโค้ด php ดังนี้

<?php
session_start();
  
 class CaptchaSecurityImages {
  
    var $font = 'font.ttf';  // เปลี่ยน font ได้ตามต้องการ
  
    function generateCode($characters) {
    $possible = 'abcdefghjkmnpqrstvwxyz';  // ตัวอักษรที่ต้องการจะเอาสุ่มเป็น Captcha
    $code = '';
    $i = 0;
    while ($i < $characters) { 
    $code .= substr($possible, mt_rand(0, strlen($possible)-1), 1);
    $i++;
    }
    return $code;
    }
  
    function CaptchaSecurityImages($width='120',$height='40',$characters='6') {
    $code = $this->generateCode($characters);
    $font_size = $height * 0.9;  // font size ที่จะโชว์ใน Captcha
    $image = imagecreate($width, $height) or die('Cannot initialize new GD image stream');
    $background_color = imagecolorallocate($image, 255, 255, 255);  // กำหนดสีในส่วนต่่างๆ
    $text_color = imagecolorallocate($image, 141, 192, 42);
    $noise_color = imagecolorallocate($image, 172, 208, 95);
    for( $i=0; $i<($width*$height)/5; $i++ ) { // สุ่มจุดภาพพื้นหลัง
    imagefilledellipse($image, mt_rand(0,$width), mt_rand(0,$height), 1, 1, $noise_color);
    }
    for( $i=0; $i<($width*$height)/200; $i++ ) { // สุ่มเส้นภาพพื้นหลัง
    imageline($image, mt_rand(0,$width), mt_rand(0,$height), mt_rand(0,$width), mt_rand(0,$height), $noise_color);
    }
    /* สร้าง Text box และเพิ่ม Text */
    $textbox = imagettfbbox($font_size, 0, $this->font, $code) or die('Error in imagettfbbox function');
    $x = ($width - $textbox[4])/2;
    $y = ($height - $textbox[5])/2;
    imagettftext($image, $font_size, 0, $x, $y, $text_color, $this->font , $code) or die('Error in imagettftext function');
    /* display captcha image ไปที่ browser */
    header('Content-Type: image/jpeg');
    imagejpeg($image);
    imagedestroy($image);
    $_SESSION['security_code'] = $code;
    }
  
 }
  
 $width = isset($_GET['width']) && $_GET['height'] < 600 ? $_GET['width'] : '120';
 $height = isset($_GET['height']) && $_GET['height'] < 200 ? $_GET['height'] : '40';
 $characters = isset($_GET['characters']) && $_GET['characters'] > 2 ? $_GET['characters'] : '6';
  
 $captcha = new CaptchaSecurityImages($width,$height,$characters); 

?>



ขั้นตอนที่สอง สร้างไฟล์ getdata.php ใว้ใน Folder เดียวกันกับ captcha.php โดยภายใน code php เขียนดังนี้
<?php
session_start();
if($_REQUEST['task']=='add'){ //หากมีการ Submit ข้อมูลผ่าน From มา
 if($_SESSION['security_code']!=$_POST['secret_code']) { // Check 
  echo "<p>คุณใส่รหัสตัวอักษรไม่ถูกต้องกรุณากรอกใหม่</p>";
 }else{
  echo "<p>รหัสถูกต้อง (สามารถใส่โค๊ดบันทีก หรือโค๊ดอะไรก็ได้ที่ต้องการ)</p>";
 }
}
?>
<!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=utf-8" />
<title>Untitled Document</title>
</head>

<body>
<form method="post" action="?task=add">
<input name="name" type="text" /><br /><br />
<input name="detail" type="text" /><br /><br />
<iframe name="a"src="captcha.php?width=100&height=40&characters=5" alt="captcha" frameborder="0" width="120" height="60" scrolling="no"></iframe>
<a href="captcha.php?width=100&height=40&characters=5" target="a"><img src="refresh.gif" width="13" height="13"  border="0" /></a><br />
<br />
พิมพ์อักขระ ตามที่คุณเห็นในภาพ  วิธีการนี้จะช่วยป้องกันการลงทะเบียนโดยอัตโนมัติ<br />
<input name="secret_code" type="text" /><br /><br />
<input  type="submit" value="submit" />
</form>
</body>
</html>

ต่อมาก็ดาวน์โหลด font.ttf และ refresh.gif ตามไฟล์ลิ้งค์ครับ http://bc46.com/forum/index.php?action=dlattach;topic=67.0;attach=77 เอาไปใว้ใน Folder เดียวกับไฟล์ getdata.php ,captcha.php เสร็จแล้วก็ลองรันไฟล์ getdata.php ทดสอบดูเลยครับ นี่เป็นเพียงตัวอย่างเฉยๆ ลองนำไปประยุกต์ใช้ดูครับ

Read more >>

24 ก.ค. 2555

PHP กับการทำ form login แบบป้องกันการไม่ได้ login

จากบทความ php เรื่อง  PHP กับการทำ form login อย่างง่าย จะเป็นการ login ที่มีรูปแบบธรรมดา แต่ก็มีปัญหาว่าหากผู้ใช้งานเข้าหน้าหลักของระบบโดยที่ไม่ได้ผ่านการ login ได้หรือไม่ ก็ต้องบอกว่ามีความเป็นไปได้ แล้วเราจะทำหน้า login ไว้ป้องกันทำไม ดังนั้นวันนี้เรามาดูวิธีแก้ไขกันดีกว่า ลักษณะโค้ด php มันก็จะคล้าย ๆ กับ บทความ PHP กับการทำ form login อย่างง่าย แต่จะมีการใช้คำสั่งที่เกี่ยวกับ session เข้ามาเกี่ยวข้อง มาดูตัวอย่างโค้ดกันเลยครับ
1. โค้ด login.php

<?
ob_start();
session_start();

?>
<form name="form1" method="post" action="check.php">
<table width="300" height="27" border="0" align="center" cellpadding="0" cellspacing="10">
<tr> 
<td>รหัสผู้ใช้งาน</td>
<td> 
  <div align="center">
    <input type="text" name="user">
  </div></td>
</tr>
<tr> 
<td>รหัสผ่าน</td>
<td> 
  <div align="center">
    <input type="password" name="pass">
  </div></td>
</tr>
<tr> 
<td colspan="2"><p align="center"><br>
  <input type="submit" name="Submit" value="ตกลง">
  &nbsp;
  <input type="reset" name="Submit2" value="ยกเลิก">
  </p>
  </td>
</tr>
</table>
</form>

จากด้านบนตัวสีแดงเป็นการเปิดคำสั่ง session ให้เริ่มทำงาน ส่วนโค้ดอื่น ๆ ก็เป็นโค้ด form สำหรับ login ธรรมดา ๆ
2. สร้างฐานข้อมูลเพื่อจัดเก็บข้อมูลรหัสผู้ใช้งาน และรหัสผ่าน ซึ่งในที่นี้ผมใช้ MS Access ในการจัดเก็บ
3. สร้าง code php เพื่อใช้ในการตรวจสอบว่าข้อมูลรหัสผู้ใช้งาน และรหัสผ่านที่ผู้ใช้งานกรอกมาตรงกับฐานข้อมูลที่มีอยู่หรือไม่ ดูตัวอย่าง code check.php ด้านล่างเลยครับ

<?php
ob_start();
session_start();
$dsn = "login"; // กำหนดชื่อ DSN
$user_name =""; // กำหนดชื่อล็อกอิน
$pass_word =""; // กำหนดรหัสผ่าน

$connect = odbc_connect($dsn, $user_name, $pass_word) or die("ติดต่อ DSN ไม่ได้");

$sql = "SELECT user.team, *
FROM [user]
WHERE (((user.username)='$user') AND ((user.password)='$pass'))";
$exec = odbc_exec($connect, $sql); // เริ่มเอ็กซิคิวต์คำสั่ง SQL
$num_rows = odbc_result($exec, 1); // ตัวแปรจำนวนเรกคอร์ด

if(empty($num_rows)) 
{
echo"<br><center>user หรือ password ไม่ถูกต้อง</center></br>";
}
else
{
session_start();
$_SESSION[id]=session_id();
$_SESSION[username]=$user;
header('location:main1.php');
}
odbc_close($connect); // ปิดการเชื่อมต่อ
?>

จาก code จะมีลักษณะการทำงานคือ เมื่อตรวจสอบข้อมูลกับฐานข้อมูลแล้ว หากไม่มีผู้ใช้งานนี้ในฐานข้อมูลก็จะมีข้อความเตือนขึ้นมา แต่ถ้ามีข้อมูลในฐานข้อมูลก็จะเรียกใช้งาน session เพื่อเก็บข้อมูล sess_id และ username ไว้ในเครื่องเพื่อนำมาเรียกใช้งานครั้งต่อไป และเมื่อเก็บแล้วก็ให้ไปที่หน้าหลักของระบบต่อไป
4. การป้องกันการเข้าหน้าหลักโดยไม่ได้ผ่านการ login ซึ่งจำเป็นที่จะต้องใส่ code php นี้ในทุกหน้าที่เรามี หากไม่ได้ login เมื่อเข้ามาก็จะกลับไปหน้า login อีกครั้ง ตัวอย่างด้านล่างครับ

<?
session_start();
$sess_id=$_SESSION[id];
$sess_username=$_SESSION[username];
if ($sess_id<>session_id() or $sess_username=="")
{
echo "กรุณา Login ";
echo "<meta http-equiv=\"refresh\" content=\"3;URL=login.php\" target=mainFrame\">";
exit();
}
?>

5. หลังจากการใช้งานระบบทุกครั้งจะต้อง logout ออกทุกครั้ง เพื่อเป็นการล้าง session ออกจากความจำของเครื่องเพื่อป้องกันคนอื่นมาใช้งานเครื่องเราต่อ ตัวอย่างโค้ด logout.php ด้านล่างเลยครับ

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

ลองนำไปประยุกต์ใช้กันน่ะครับ

Read more >>

23 ก.ค. 2555

PHP กับการทำ form login อย่างง่าย

บทความนี้จะขออธิบายเรื่องของการทำระบบ login โดยใช้ภาษา php ในการเขียนโค้ด php ซึ่งการทำระบบ login ส่วนใหญ่จะใช้ในกรณีที่เราทำระบบขึ้นมาระบบหนึ่งแล้วต้องการให้ผู้ใช้งาน login เข้าระบบทุกครั้งที่เข้าใช้งาน เพื่อป้องกันข้อมูล หรือแสดงตัวตนของผู้ใช้งานก่อน สำหรับหลักการก็ง่าย ๆ ครับ คือ
          1. ทำ form login ขึ้นมา form หนึ่ง เพื่อให้ผู้ใช้งานกรอกข้อมูล หน้าตาก็จะง่าย ๆ ละกันส่วนโค้ดก็ด้านล่างเลย
ตัวอย่าง code ชื่อไฟล์ login.php

<form name="form1" method="post" action="bcheck.php">
      <table width="300" height="27" border="0" align="center" cellpadding="0" cellspacing="10">
<tr>
<td>รหัสผู้ใช้งาน</td>
<td>
  <div align="center">
    <input type="text" name="user">
  </div></td>
</tr>
<tr>
<td>รหัสผ่าน</td>
<td>
  <div align="center">
    <input type="password" name="pass">
  </div></td>
</tr>
<tr>
<td colspan="2"><p align="center"><br>
  <input type="submit" name="Submit" value="ตกลง">
  &nbsp;
  <input type="reset" name="Submit2" value="ยกเลิก">
  </p>
  </td>
</tr>
</table>
</form>

          2. ให้จัดทำฐานข้อมูลเพื่อจัดเก็บรหัสผู้ใช้งาน และรหัสผ่าน ในบทความนี้ผมใช้ MS Access เป็นฐานข้อมูลน่ะครับ
          3. สร้างโค้ดเพื่อตรวจสอบข้อมูลจากฐานข้อมูล ซึ่งผมใช้โค้ด php ในการตรวจสอบ วิธีตรวจสอบก็คือ เมื่อผู้ใช้งานกรอกรหัสผู้ใช้งาน และรหัสผ่าน พอกดตกลงแล้วให้ไปที่หน้า check.php เพื่อตรวจสอบว่ามีข้อมูลในฐานเราหรือเปล่าถ้าไม่มีก็ให้มีข้อความเตือนขึ้นมา แต่ถ้ามีก็ให้ไปหน้าหลักของระบบ ตัวอย่างโค้ดก็ด้านล่างครับ

<?php
$dsn = "login";// กำหนดชื่อ DSN
$user_name ="";// กำหนดชื่อล็อกอิน
$pass_word ="";// กำหนดรหัสผ่าน
$connect = odbc_connect($dsn, $user_name, $pass_word) or die("ติดต่อ DSN ไม่ได้");
$sql = "SELECT * FROM user where username = '$user' and  password = '$pass' ";
$exec = odbc_exec($connect, $sql);// เริ่มเอ็กซิคิวต์คำสั่ง SQL
$Num_fields = odbc_num_fields($exec);// ตัวแปรจำนวนฟิลด์
$sql_count = "SELECT Count(user.username) AS CountOfusername
FROM [user]
WHERE (((user.username)='$user') AND ((user.password)='$pass'))";
$exec_count = odbc_exec($connect, $sql_count);// เริ่มเอ็กซิคิวต์คำสั่ง SQL
$num_rows = odbc_result($exec_count, 1);// ตัวแปรจำนวนเรกคอร์ด
if(empty($num_rows))
{
echo"<br><center>user หรือ password ไม่ถูกต้อง</center></br>";
}
else
{
echo "<meta http-equiv=\"refresh\" content=\"3;URL=check.php\" target=_self\">";
}
odbc_close($connect);// ปิดการเชื่อมต่อ
?>

ลองนำไปใช้ดูน่ะครับมีปัญหาก็ถามได้ครับ ไว้คราวหน้าผมจะเอาโค้ด php ในการ login อีกแบบหนึ่งมาให้ดูซึ่งจะซับซ้อนกว่าและมีการป้องกันความปลอดภัยกว่าที่ดีกว่า
Read more >>

26 มิ.ย. 2555

code php กับการทำ dropdownlist 2 ขั้นอย่างง่าย

บทความ โค้ด php บทความนี้จะเกี่ยวกับการทำ dropdownlist แบบ 2 ชั้น ยกตัวอย่างเช่น ถ้าเราเลือกรายการใน listbox หลักแล้วใน listbox ย่อยก็จะแสดงรายการที่เกี่ยวข้องกับ listbox หลักขึ้นมานั่นเอง  คิดว่าคงมีหลายคนเคยใช้ หรือเคยค้นหาวิธีการทำอยู่บ้างโค้ดที่นำมานี้จะเป็นการใช้ภาษา php ในการเขียน และเชื่อมโยงฐานข้อมูลกับ MS Access แต่ก็สามารถนำไปประยุกต์ใช้กับฐานข้อมูล Sql ได้น่ะครับ ก็ลองนำโค้ดไปปรับแต่งดู
ตัวอย่าง Code php


       <script>
function submit_click(obj,s)
{
if(s=='a' & document.form_test.a.value!='<?=$a?>')
{
document.form_test.b.value="";
obj.action="";
obj.submit();
}

else if(s=='b' & document.form_test.b.value!='<?=$b?>')
{
obj.action="";
obj.submit();
}
}
      </script>
 
<form name="form_test" method="post" action="insert.php">
  <table width="50%" border="2" align="center" cellpadding="0" cellspacing="0" bordercolor="#3366CC">
    <tr>
      <td width="40%"><div align="left"><strong>เลือกประเภทหลัก </strong>&nbsp;&nbsp;&nbsp;&nbsp;</div></td>
      <td><select name="a" onChange="submit_click(this.form,'a')" >
        <option value="<?=$a?>">
        <? if($a){echo"$a";}else if(!$a){echo"- เลือกประเภทหลัก -";}?>
        </option>
        <?
$dsn = ""; // กำหนดชื่อ DSN
$user =""; // กำหนดชื่อล็อกอิน
$pass =""; // กำหนดรหัสผ่าน
$connect = odbc_connect($dsn, $user, $pass) or die("ติดต่อ DSN ไม่ได้"); // เริ่มติดต่อฐานข้อมูล
$sql = "SELECT other.total AS a
FROM other
GROUP BY other.total;
 ";// กำหนดคำสั่ง SQL เพื่อแสดงข้อมูล
$exec = odbc_exec($connect, $sql); // เริ่มเอ็กซิคิวต์คำสั่ง SQL
While (odbc_fetch_row($exec4)) // ดึงข้อมูลเรกคอร์ดที่
{
$a1 = odbc_result($exec, "a");
?>
        <option value="<?=$a1?>">
        <?=$a1?>
        </option>
        <? } ?>
      </select></td>
    </tr>
    <tr>
      <td width="40%"><div align="left"><strong>เลือกประเภทย่อย</strong> &nbsp;&nbsp;&nbsp;&nbsp;</div></td>
      <td><select name="b" onChange="submit_click(this.form,'b')" >
        <option value="<?=$b?>">
        <? if($b){echo"$b";}else if(!$b){echo"- เลือกประเภทย่อย -";}?>
        </option>
        <?
$sql1 ="SELECT other.form AS b
FROM other
GROUP BY other.total, other.form
HAVING (((other.total)='$a'));
 ";// กำหนดคำสั่ง SQL เพื่อแสดงข้อมูล
$exec1 = odbc_exec($connect, $sql1); // เริ่มเอ็กซิคิวต์คำสั่ง SQL
While (odbc_fetch_row($exec1)) // ดึงข้อมูลเรกคอร์ดที่
{
$b1 = odbc_result($exec1, "b");
?>
        <option value="<?=$b1?>">
        <?=$b1?>
        </option>
        <? } ?>
      </select></td>
    </tr>
    <tr>
      <td colspan="2"><div align="center">
        <input type="submit" name="Submit" value="บันทึก">
        &nbsp;
        <input name="btnClear" type="reset" id="btnClear" value="Clear" onClick="clsControlObject('form_test','clear')" />
      </div></td>
    </tr>
  </table>
</form>

ซึ่งถ้าเราเข้าใจการทำงานของคำสั่งดีแล้ว เราก็จะสามารถนำไปพัฒนาต่อเป็น 3 ชั้น หรือ 4 ชั้นได้ต่อไป

Read more >>

25 พ.ค. 2555

การแก้ไขข้อมูลที่เป็น textfile บน web page

บทความนี้เป็นการใช้โค้ด php เพื่อช่วยในการแก้ไขข้อมูลที่เป็น text file โดยที่เราไม่จำเป็นต้อง upload หรือ download สามารถแก้ไขได้บน web page ได้เลย
ตัวอย่าง Code php นี้เป็นการแก้ไขไฟล์ c-main.txt ครับ


<meta http-equiv="Content-Type"content="text/html;charset=utf-8">
<table align="center" border="0" width="100%">
<tr><td align="center">
<?
$detail=$_POST[detail];
if (isset($detail)) {
$f=fopen("c-main.txt", "wb");
flock($f, 2);
fwrite($f, $detail);
flock($f, 3);
fclose($f);
echo "แก้ไขข้อความเรียบร้อย";
}
?>

</td></tr>
<tr><td align="center">
<table align="center" border="0">
<form method="post" action="news.php">
<tr><td align="center">
<textarea rows="25" cols="100" name="detail" class="black"><? include("c-main.txt") ?></textarea>
</td></tr>
<tr><td align="right">
<input type=submit value='แก้ไข' name="submit" class=black>  <input type=reset value='เคลียร์' name="reset" class=black>
</td></tr>
</form>
</table>
</td></tr>
</table>
Read more >>

แบ่งไฟล์ข้อมูลขนาดใหญ่ออกเป็นไฟล์เล็กๆ ด้วย PHP

ในการ upload ข้อมูลเข้าสู่ฐานข้อมูลถ้าข้อมูลมีขนาดใหญ่อาจใช้เวลานานในการ upload หรือในบางครั้งเครื่องอาจจะค้างไปเลยทำให้ต้องเสียเวลา upload ใหม่ ดังนั้นบทความนี้จะขอเสนอโค้ด php ซึ่งเป็นการแบ่งฐานข้อมูลออกเป็นไฟล์เล็กๆ ให้อัปโหลดง่ายขึ้น และก็ยัง query เข้าฐานข้อมูลได้ง่ายขึ้นด้วยครับ
ตัวอย่าง Code php


<?
set_time_limit(0);
$arr = file("C:/articles/articles.sql"); //ไฟล์ข้อมูลหลักที่ต้องการแยก

$records = count($arr);
$split = 1000; //แบ่งออกไฟล์ละ 1000 บรรทัด
$total = (int)($records / $split);
if ($total * $split < $records) $total++;

$n = 0; //ชื่อไฟล์เริ่มต้น C:/0.sql....C:/9.sql
for ($i = 0; $i < $total; $i++) {
  $q = 0;
  $f = fopen("C:/$i.sql", "wb");
  while ($n < $records & $q < $split) {
   fputs($f, $arr[$n]);
   $n++;
   $q++;
  }
  fclose($f);
}
?>

ผลลัพท์จะได้เป็นไฟล์ 0.sql, 1.sql....ไปเรื่อยๆ จนกว่าจะหมด ที่ drive C ครับ ก็ run code นี้ ควรตรวจสอบไดร์ฟ C ให้เรียบร้อยก่อนครับ 

Read more >>

วิธีการทำ submit form หลายเงื่อนไข

ในการทำ form ขึ้นมา 1 form บางครั้งเราอาจต้องการให้มีปุ่มในการ submit form มากกว่า 1 ปุ่ม เพื่อให้เกิดความหลากหลายในการใช้ปุ่ม submit เช่น ถ้าเราทำ form สำหรับค้นหาข้อมูล เราอาจทำปุ่ม submit หลายปุ่มเพี่อให้เลือกว่าจะค้นหาจากอะไร ดังนี้นในภาษา php จะมีการเขียนโค้ดโดยใช้คำสั่ง if มาใช้ได้ซึ่งโค้ด php ก็ไม่ได้ยุ่งยากอะไรดูตัวอย่างเลยครับ
ตัวย่าง Code php

<?php
    if(isset($_POST['find_username'])) {
        // เมื่อมีการกดปุ่ม submit (find_username)
        echo "ค้นหาจาก Username : $_POST[username]";
    } elseif(isset($_POST['find_email'])) {
        // เมื่อมีการกดปุ่ม submit (find_email)
        echo "ค้นหาจาก Email : $_POST[email]";
    }
    // debug
    // print_r($_POST);
?>

<form action=index.php method=post>
<p><label>Username : <input type=text name=username value=admin></label><input type=submit name=find_username value="Search"></p>
<p><label>Email : <input type=text name=email value=admin@localhost></label>><input type=submit name=find_email value="Search"></p>
</form>

วิธีนี้ เราจะใช้การคัดเลือกว่าต้องการทำอะไรโดยดูจาก name ของปุ่ม submit ครับ ซึ่งฟอร์มจะทำการส่งค่ามาเฉพาะปุ่มที่ถูกกดเท่านั้น ส่วปุ่มที่ไม่ถูกกดจะไม่ส่งค่ามา (ทำนองเดียวกันกับ checkbox ที่ไม่ได้ถูกเลือกครับ) 
Read more >>

24 พ.ค. 2555

ฟังก์ชัน time() อย่างง่าย กับการแสดง เงื่อนไข ช่วงเวลา


ฟังก์ชัน time() ในภาษา php สามารถนำไปประยุกต์ใช้ได้หลายอย่าง ในตัวอย่างนี้คือ ใครที่ต้องการเพิ่มลูกเล่นให้กับ website ของตัวเอง เช่น การเปลี่ยนหน้าตา website ไปตามช่วงเวลา กำหนดแบบอัตโนมัติ หรือจะนำไปประยุกต์ใช้ กับการแสดงข้อมูล ตามช่วงเวลา ตัวอย่างโค้ด php ต่อไปนี้เป็นการประยุกต์ใช้งาน ฟังก์ชัน time() อย่างง่าย โดยอาศัยการเปรียบเทียบค่า timestamp ของช่วงเวลา มาเป็นเงื่อนไข


เช่น ต้องการกำหนด style ให้กับเว็บไซต์ ใน 3 ช่วงเวลา
คือ
1---6.00 น. - 12.00 น.
2---12.01 น.- 18.00 น.
3---เวลานอกจาก 2 ช่วงข้างต้น 18.01-06.00 น.ของวันใหม่

ตัวอย่าง Code 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=utf-8" />
<title>use time function</title>
<?php
if(time()>=strtotime("06:00:00") && time()<strtotime("06:00:00 + 6 hour ")){
$style_period="-period1";
}
if(time()>=strtotime("12:00:00") && time()<strtotime("12:00:00 + 6 hour ")){
$style_period="-period2";
}
if(time()>=strtotime("18:00:00") && time()<strtotime("18:00:00 + 12 hour ")){
$style_period="-period3";
}
?>
<link rel="stylesheet" type="text/css" href="yourstyle<?=$style_period?>.css"/>
</head>

<body>


</body>
</html>

ดังนั้นจากตัวอย่างข้างต้นจำเป็นที่เราต้องมีไฟล์ css 3 ไฟล์น่ะครับ โดยตั้งชื่อไฟล์ดังนี้
yourstyle-period1.css
yourstyle-period2.css
yourstyle-period3.css



Read more >>

ตราจสอบก่อนถึงวันหมดอายุ อย่างง่าย

ในภาษา php จะมีโค้ด php ที่เกี่ยวกับวันที่มากมายซึงเราสามารถนำมาใช้ในการเปรียบเทียบวันที่ เพื่อตรวจสอบวันที่ที่จะหมดอายุของรายการใดรายการหนึ่ง โดยอยู่ในรูปแบบเช่น
รายการ x จะหมดอายุในอีก 30 วัน
รายการ x จะหมดอายุในอีก 15 วัน
รายการ x จะหมดอายุในอีก 7 วัน
เป็นต้น ตัวอย่าง Code php ด่านล้างเลยครับ


<?php
function status_date_notify($endDate){
$chk_day_now=time();
$chk_day_expire=strtotime($endDate);
$chk_day30=strtotime($endDate." -30 day");
$chk_day15=strtotime($endDate." -15 day");
$chk_day7=strtotime($endDate." -7 day");
//  สามารถเพิ่มตัวแปร และเงื่อนไข เพิ่มเติมสำหรับตรวจสอบได้ตามต้องการ
if($chk_day_now>=$chk_day_expire){
return 5; // เงื่อนไขรายการเมื่อหมดอายุ
}else{
if($chk_day_now>=$chk_day30 && $chk_day_now<$chk_day15){
return 4; // เงื่อนไขรายการจะหมดอายุในอีก 30 วัน
}elseif($chk_day_now>=$chk_day15 && $chk_day_now<$chk_day7){
return 3; // เงื่อนไขรายการจะหมดอายุในอีก 15 วัน
}elseif($chk_day_now>=$chk_day7 && $chk_day_now<$chk_day_expire){
return 2; // เงื่อนไขรายการจะหมดอายุในอีก 7 วัน
}else{
return 1; // เงื่อนไขรายการยังไม่หมดอายุ
}
}
}
////////////////////////////////////////////////
//////        ตัวอย่างการประยุกต์ใช้งานอย่างง่าย
//////////////////////////////////////////////////

$case_notify=status_date_notify("2011-01-01");
switch($case_notify){
case 5:
echo "เงื่อนไขรายการเมื่อหมดอายุ";
break;
case 4:
echo "เงื่อนไขรายการจะหมดอายุในอีก 30 วัน";
break;
case 3:
echo "เงื่อนไขรายการจะหมดอายุในอีก 15 วัน";
break;
case 2:
echo "เงื่อนไขรายการจะหมดอายุในอีก 7 วัน";
break;
default:  // กรณีค่าเท่ากับ 1
echo "เงื่อนไขรายการยังไม่หมดอายุ";
break;
}
?>


Read more >>

23 พ.ค. 2555

การจัดรูปแบบให้กับเบอร์โทรศัพท์

สำหรับภาษา php นอกจากการตรวจสอบความถูกต้องของข้อมูล ที่จำเป็นอีกอย่างก็คือ การจัดรูปแบบข้อมูล  เช่น เบอร์โทรศัพท์มือถือ เบอร์โทรศัพท์บ้าน เป็นต้น เหตุผลที่ต้องทำก็เพราะว่าในการกรอกข้อมูลผู้ใช้งานแต่ละคนจะป้อนข้อมูลไม่ค่อยจะเหมือนกันสักเท่าไร ยกตัวอย่างเบอร์โทร บางคนป้อน 08-594908XX บางคนป้อน 085-94908XX และยังอีกอีกแยะ ที่จะสรรหามาป้อนกัน จึงเป็นการจะถูกต้องกว่าถ้าให้เขาป้อนเข้ามาเฉพาะตัวข้อมูลล้วนๆ แล้วค่อยมาเขียนโปรแกรมจัดรูปแบบเอง เอาล่ะเมื่อรู้เหตุแล้ว เรามาจัดรูปแบบเบอร์โทรศัพท์มือถือกัน เราจะให้เบอร์อยู่ในรูปแบบ ### – #### – ###
โค้ด php ที่เราจะใช้คือ substr()


<?php
 
// จัดให้อยู่ในรูปแบบนี้ ### - #### - ### 
 
// สมมติเบอร์นี้
$mobile = "0859490862" ; 
 
// กำหนดเครื่องหมาย 
$minus_sign = "-" ; 
 
// เริ่มจากซ้ายตัวที่ 1 ( 0 ) ตัดทิ้งขวาทิ้ง 7 ตัวอักษร ได้ 085 
$part1 = substr ( $mobile , 0 , -7 ) ; 
 
// เริ่มจากซ้าย ตัวที่ 4 (9) ตัดทิ้งขวาทิ้ง 3 ตัวอักษร ได้ 9490 
$part2 = substr( $mobile , 3 , -3 ) ; 
 
// เริ่มจากซ้าย ตัวที่ 8 (8) ไม่ตัดขวาทิ้ง ได้ 862 
$part3 = substr( $mobile , 7 ) ; 
 
echo $part1. $minus_sign . $part2 . $minus_sign . $part3 ; 
 
?>
Read more >>

เทคนิคง่ายๆ กับการเพิ่มประสิทธิภาพให้ php

ขอแนะนำเทคนิคง่ายๆ สำหรับเพิ่มประสิทธิภาพของโค้ด php มาดูกันครับว่ามีอะไรบ้าง
  1. อย่าไปก้อปปี้ตัวแปรแบบไม่มีเหตุผล การทำอย่างนี้จะทำให้โค้ดของเรากินหน่วยความจำเป็น 2 เท่า
    แย่ :
    $description = $_POST['description'];
    echo $description;
    เยี่ยม :
    echo $_POST['description'];

  2. ใช้เครื่องหมาย ‘ สำหรับข้อความ  สำหรับ PHP นั้น อนุญาตให้ใช้ได้ทั้งเครื่องหมาย ” และ ‘  2 ตัวนี้มีความต่างกันอยู่ตรงที่ ทุกสิ่งที่อยู่ใน ‘…’ คือข้อความเท่านั้น ส่วน “…” สามารถแทรกตัวแปรเข้าไปได้ ตรงนี้แหละที่ทำให้ประสิทธิภาพลดลง เพราะทุกครั้งที่ใช้ “…” PHP จะต้องคอยหาดูว่าภายในมีตัวแปรอยู่หรือเปล่า ส่วน ‘…’ มันไม่สนใจ อะไรที่อยู่ข้างในถือว่าเป็นสตริงหมด
    แย่ :
    $output = "This is a plain string";
    เยี่ยม :
    $output = 'This is a plain string';
    แย่ :
    $type = "mixed";
    $output = "This is a $type string";
    เยี่ยม :
    $type = 'mixed';
    $output = 'This is a ' . $type .' string';
  3. ใช้ echo แทน print  เพราะมันอ่านง่ายกว่า
    แย่ :
    print($myVariable);
    เยี่ยม :
    echo $myVariable;
  4. อย่าใช้การต่อข้อความ ตอน echo  อันที่จริงแล้วคำสั่ง echo นั่นเราสามารถ echo ค่าแบบต่อเนื่องได้โดยการ ใช้คอมม่า (,) คั่นแต่ละค่า มันก็จะ echo ค่าออกมาตามลำดับ ถ้าเราใช้วิธีต่อข้อความก่อน echo มันก็ต้องเสียเวลาต่อข้อความก่อนอีก
    แย่ :
    echo 'Hello, my name is' . $firstName . $lastName . ' and I live in ' . $city;
    เยี่ยม :
    echo 'Hello, my name is' , $firstName , $lastName , ' and I live in ' , $city;
  5. ใช้ switch/case แทน if/else เยี่ยมกว่า อ่านง่ายกว่า และแก้ไขในภายหลังง่ายกว่า
    แย่ :
    if($_POST['action'] == 'add') {
      addUser();
    } elseif ($_POST['action'] == 'delete') {
      deleteUser();
    } elseif ($_POST['action'] == 'edit') {
      editUser();
    } else {
      defaultAction();
    }
    เยี่ยม :
    switch($_POST['action']) {
    case 'add':
      addUser();
      break;
    case 'delete':
       deleteUser();
      break;
    case 'edit':
       editUser();
       break;
    default:
       defaultAction();
       break;
    }
Read more >>

error: Allowed memory size of 25165824 bytes exhausted (tried to allocate 19500140 bytes

error ตัวนี้ แจ้งรายละเอียดมามาว่า Fatal error: Allowed memory size of 25165824 bytes exhausted (tried to allocate 19500140 bytes) in C:\AppServ\www\phpMyAdmin\libraries\unzip.lib.php on line 324
แต่เราไม่ต้องสนใจบรรทัดที่มันเออเร่อ สนใจแค่นี้ก็พอ
Fatal error: Allowed memory size
error ตัวนี้ผมว่า ผู้ฝึกเขียน โค้ด PHP แทบทุกคนจะต้องเจอ ในเ error แจ้งว่า เราอนุญาติให้ใช้หน่วยความจำแค่นี้นะ แต่รู้สึกว่าจะมีการใช้หน่วยความจำเกินที่กำหนดไว้
เหตุกาณ์ที่เกิด มักเกิดตอนที่ประมวลผลไฟล์ขนาดใหญ่ ซึ่ง code php จำเป็นจะต้องใช้หน่วยความจำปริมาณมาก เช่น import ข้อมูลขนาดใหญ่เข้าฐานข้อมูล mysql หรือ ประมวลผลโค้ดสร้างไฟล์ภาพ เป็นต้น
สำหรับวิธีแก้ก็ไม่มีอะไรมาก เราก็แค่กำหนดขนาดของหน่วยความจำ ที่อนุญาติให้ PHP ใช้เสียใหม่ ให้เยอะขึ้น เท่านั้นเอง
1. เปิดไฟล์ C:\Windows\php.ini ขึ้นมา ด้วยโปรแกรม notepad
เสริมนิดหนึ่งว่า ไฟล์ php.ini นี้เป็นไฟล์กำหนดค่าต่างๆของภาษา PHP
2. หาคำว่า memory_limit มันจะอยู่แถวๆบรรทัดที่ 256 แก้ไขตัวเลขหลังเครื่องหมาย = ให้เป็น 256M หรือ 512M เลยก็ได้
3. บันทึก
4. รีสตาร์ท apache
Read more >>

คำนวณอายุจากวันเดือนปีเกิดจากโค้ด php

การคำนวณอายุจากวันเดือนปีเกิดนั้นสามารถทำได้หลายวิธี ซึ่งผมเคยเขียนไว้แล้ว ดูรายละเอียด วิธีนี้เป็นอีกวิธีหนึ่ง เป็นการเขียนโค้ด php ในรูปแบบของฟังก์ชั่น ซึ่งผลลัพธ์ที่ได้จะเป็นจำนวนปี เดือน สัปดาห์ วัน นาที วินาที เรียงไล่ลำดับไป
พารามิเตอร์จะมีสองตัว ตัวแรกให้ส่งวันเกิดเข้าไป ตัวที่สองวันปัจจุบัน โดยพารามิเตอร์ทั้งสองตัว ต้องเป็น timestamp แต่ไม่ต้องกังวลนะครับ ในโค้ดผมได้แสดงตัวอย่างไว้ให้ดูแล้วด้วย ท่านเห็นปุ๊บก็เข้าใจปั๊บ ผมใช้ฟังก์ชั่น strtotime แปลงวันเกิดให้เป็น timestamp ตัวอย่าง code php ก็ด่านล้างเลยครับ

<?php
function timespan($seconds = 1, $time = '')
{
 if ( ! is_numeric($seconds))
 {
  $seconds = 1;
 }
 
 if ( ! is_numeric($time))
 {
  $time = time();
 }
 
 if ($time <= $seconds)
 {
  $seconds = 1;
 }
 else
 {
  $seconds = $time - $seconds;
 }
 
 $str = '';
 $years = floor($seconds / 31536000);
 
 if ($years > 0)
 { 
  $str .= $years.' ปี, ';
 } 
 
 $seconds -= $years * 31536000;
 $months = floor($seconds / 2628000);
 
 if ($years > 0 OR $months > 0)
 {
  if ($months > 0)
  { 
   $str .= $months.' เดือน, ';
  } 
 
  $seconds -= $months * 2628000;
 }
 
 $weeks = floor($seconds / 604800);
 
 if ($years > 0 OR $months > 0 OR $weeks > 0)
 {
  if ($weeks > 0)
  { 
   $str .= $weeks.' สัปดาห์, ';
  }
 
  $seconds -= $weeks * 604800;
 }   
 
 $days = floor($seconds / 86400);
 
 if ($months > 0 OR $weeks > 0 OR $days > 0)
 {
  if ($days > 0)
  { 
   $str .= $days.' วัน, ';
  }
 
  $seconds -= $days * 86400;
 }
 
 $hours = floor($seconds / 3600);
 
 if ($days > 0 OR $hours > 0)
 {
  if ($hours > 0)
  {
   $str .= $hours.' ชั่วโมง, ';
  }
 
  $seconds -= $hours * 3600;
 }
 
 $minutes = floor($seconds / 60);
 
 if ($days > 0 OR $hours > 0 OR $minutes > 0)
 {
  if ($minutes > 0)
  { 
   $str .= $minutes.' นาที, ';
  }
 
  $seconds -= $minutes * 60;
 }
 
 if ($str == '')
 {
  $str .= $seconds.' วินาที';
 }
 
 return substr(trim($str), 0, -1);
}
 
 
// ตัวอย่างการใช้งาน
$birthdate = strtotime( '1973-11-13' );
$today = time();
 
echo timespan( $birthdate , $today );
//36 ปี, 2 เดือน, 3 สัปดาห์, 2 วัน, 4 ชั่วโมง, 51 นาที
?>
เห็นมั้ยครับการใช้ PHP คำนวณอายุนั้นไม่ยากเลย
Read more >>