Class Captcha ตัวจิ๋ว

บันทึกโดย TaTump วันที่ 14 September 2008 | 3,580 views

วิธีใช้คือสร้างแท็ก img เรียกปกติแต่เปลี่ยนจากเรียกรูป มาเรียกไฟล์ php แทนคับ

<IMG src="captcha.php"  BORDER="0">

สามารถแก้ จำนวนอักขระ และชื่อ Session ได้ที่ไฟล์ captcha.php คับ

ตัวอย่าง: http://www.memo8.com/lab/php/captcha/demo.html

ดาวน์โหลด: http://www.memo8.com/lab/php/captcha/captcha.rar

ฟังก์ชั่นสร้าง Tag Cloud

บันทึกโดย TaTump วันที่ 29 July 2008 | 931 views

ก็ตามรูปด้านบนคงไม่ต้องอธิบายกันมาก จริงๆฟังก์ชั่นนี้ผมเอามาแก้ไขเพิ่มเติมนิดหน่อย ดูต้นฉบับ คลิกที่นี่ วิธีใช้งานตามตัวอย่างด้านล่างครับ

function

function printTagCloud($tags,$url,$css) {

$max_size = 32; //กำหนด ขนาด font ใหญ่ สุดที่นี่
$min_size = 12; // กำหนด ขนาด font เล็ก สุดที่นี่

ksort($tags);
$max_qty = max(array_values($tags));
$min_qty = min(array_values($tags));

$spread = $max_qty - $min_qty;
if ($spread == 0) {
$spread = 1;
}

$step = ($max_size - $min_size) / ($spread);

foreach ($tags as $key => $value) {
$size = round($min_size + (($value - $min_qty) * $step));

$printTagCloud .=  '<a href="'.$url. $key.'" style="font-size: ' . $size . 'px" title="' . $value . ' things tagged with ' . $key . '" class="'.$css.'">' . $key . '</a> ';
}

return $printTagCloud ;
}

Example

$tags = array('PHP' => 32, 'Google' => 431, 'ASP.NET' => 622, 'JAVA' => 51, 'WEB 2.0' => 23, 'Linux' => 971, 'Firefox' => 407, 'Idea' => 82, 'Music' => 227);
$url="http://www.memo8.com/toolkits/?s=";
$css="LinkNormal";

echo printTagCloud($tags,$url,$css);

- ค่าที่ส่งก็มี tag ที่กำหนดให้เป็น Array ตามตัวอย่าง
- Url สำหรับลิงค์
- CSS ใส่ ชื่อ class css เพิ่มความสวยงาม

ดูตัวอย่าง : http://www.memo8.com/lab/php/tag-cloud/tag-cloud.php

ดาวน์โหลด : http://www.memo8.com/lab/php/tag-cloud/tag-cloud.phps

Export Excel อย่างง่ายกับ PHP

บันทึกโดย TaTump วันที่ 10 June 2008 | 5,184 views

ดูโค้ดก่อนแล้วกัน

<?php
header("Content-Type: application/vnd.ms-excel");
header('Content-Disposition: attachment; filename="MyXls.xls"');#ชื่อไฟล์
?>

<html xmlns:o="urn:schemas-microsoft-com:office:office"

xmlns:x="urn:schemas-microsoft-com:office:excel"

xmlns="http://www.w3.org/TR/REC-html40">

<HTML>

<HEAD>

<meta http-equiv="Content-type" content="text/html;charset=tis-620" />

</HEAD><BODY>

<TABLE  x:str BORDER="1">

<TR>

<TD><b>AAA</b></TD>

<TD><b>AAA</b></TD>

<TD><b>AAA</b></TD>

</TR>

<TR>

<TD>BBB</TD>

<TD>BBB</TD>

<TD>BBB</TD>

</TR>

<TR>

<TD>001</TD>

<TD>002</TD>

<TD>003</TD>

</TR>

<TR>

<TD>ภาษาไทย</TD>

<TD>ภาษาไทย</TD>

<TD>ภาษาไทย</TD>

</TR>

</TABLE>

</BODY>

</HTML>

จุดหลักๆมีอยู่ 3 จุด
1. แป่ะ Header เพื่อบอกว่าจะเปิดไฟล์ Excel

<?phpheader("Content-Type: application/vnd.ms-excel");header('Content-Disposition: attachment; filename="MyXls.xls"');#ชื่อไฟล์?>

2.ส่วนนี้มีผลกับการแสดง Excel จำเป็นมาก

<html xmlns:o="urn:schemas-microsoft-com:office:office"xmlns:x="urn:schemas-microsoft-com:office:excel"xmlns="http://www.w3.org/TR/REC-html40">

3. อันนี้แหล่ะที่จะทำให้ข้อมูลที่นำหน้าด้วยเลขศูนย์แสดงขึ้นมา เพราะกำหนดให้เป็น String

<TABLE  x:str BORDER="1">

ตัวอย่าง คลิกที่นี่
ดาวน์โหลด คลิกที่นี่

อ่านเพิ่มเติมได้ที่นี่ครับ (อธิบายดีจริงๆ) : http://sixhead.com/2008/03/06/easy-export-to-excel/

ฟังก์ใส่ลายน้ำในรูป (Watermark Images)

บันทึกโดย TaTump วันที่ 1 June 2008 | 899 views

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

ลักษณะการทำงานก็คือ เราจะต้องมีรูปไว้อยู่แล้ว อาจจะผ่านกระบวนการ upload หรืออะไรก็ตาม แล้วเราก็นำที่อยู่รูปต้นฉบับ และที่อยู่รูปลายน้ำ ส่งไปให้ฟังก์ชั่นทำงาน โดยฟังก์ชั่นจะใส่ลายน้ำแล้วทับรูปเดิมให้ เป็นอันเสร็จพิธี อุอุ
“ทำเป็นต้นแบบเล็กๆน่ะครับ เอาไว้พัฒนาต่อยอด”

Download ไฟล์ที่นี่

ย่อรูปเป็น Thumbnail สำหรับแสดงผล

บันทึกโดย TaTump วันที่ 19 April 2008 | 371 views

จะว่าไป การย่อรูปThumbnail นี้ก็ไม่ค่อยเวิร์คเท่าไหร่เพราะมันจะมาประมวลจับรูปขนาดใหญ่มาย่อเป็น Thumbnail เอาอีตอนแสดงผลนี่แหล่ะ แต่อาจจำเป็นบางกรณี เอามาแป่ะไว้ก่อนแล้วกัน
Code

<?header("Content-type : image/png");

header("Content-type : image/jpeg");

header("Content-type : image/gif");

$filedir= $_GET['filedir'];// พาธรูปที่นี่

$img_orig=ImageCreateFromJPEG($filedir);

$width_orig = ImagesX($img_orig);

$height_orig = ImagesY($img_orig);

$height_thm = 80;

$width_thm=round($height_thm*$width_orig/$height_orig);

$img_thm = imagecreateTrueColor($width_thm,$height_thm) ;

ImageCopyResized($img_thm,$img_orig,0,0,0,0,$width_thm+1,$height_thm+1,$width_orig,$height_orig);

imagejpeg($img_thm,"",75);

imagejpeg($img_thm);

imagedestroy($img_thm);

imagedestroy($img_orig);

?>

ก๊อปโค้ดด้านบน save เป็นชื่ออะไรก็ได้ สมมติให้ชื่อ “thumbnail.inc.php” เวลาเรียกใช้ก็โดยส่งค่าพาธไฟล์เพื่อ Resize ไปกับตัวแปล ‘filedir’ วิธีเรียกก็เรียกดังนี้นะครับ

<img src="http://tatump.10thingsabout.com/blog/thumbnail.inc.php?filedir=ชื่อพาธ">

ปล. PHP ต้องมี Extension GD Lib ด้วยนะจ๊ะ

ปล.2 ถ้าจะเปลี่ยนขนาด Thumbnail ให้เปลี่ยนที่ $height_thm = 80; เด้อ (สูตรนี้ใช้ความสูงเป็นหลักในการคำนวณความกว้างอัตโนมัติ)

อยากรู้ว่าอีก 2 เดือนหน้า เป็นวันเดือนปีอะไร จะทำไงหว่า…?

บันทึกโดย TaTump วันที่ 24 February 2008 | 558 views

สืบเนื่องมาจากต้องเขียนระบบหมดอายุสินค้าอัตโนมัติ ประมาณว่าถ้าขึ้นไปแล้วอีก 2 เดือนให้เอาสินค้าลงไม่ต้องแสดงน่ะนะ เอาล่ะแล้วเราจะรู้ว่าได้ไงว่ามันครบสองเดือนแล้ว ขั้นแรกคือ เราต้องหาให้ได้ก่อนว่า 2 เดือนข้างหน้ามันคือ วันเดือนปีอะไร

ขอติ๊ต่างว่าวันที่สินค้าเป็น 2008-12-15 นะ ดังนั้นล่วงหน้า 2 เดือน คือ 2009-02-15

มาดูโค้ดกันเลย

$DateStart=date("2008-12-15");//- 1. แปลงวันที่ให้เป็น timestamp ก่อน เพื่อเอามาคำนวณ วันเวลาล่วงหน้าได้

$strtime = strtotime($DateStart);

//- 2. คำนวณ วันเวลาล่วงหน้าได้ ด้วยการ บวกเดือนเพิ่มอีก 2 เดือน

$caltime=strtotime("+2 Month",$strtime);

//- 3. จากค่าด้านบนยังคงเป็นtimestamp อยู่ดังนั้นนต้องแปลงย้อนกลับไปเป็นวันที่ปกติี่

$ResultDate=date("Y-m-d", $caltime);

//- Result

echo "วันที่ล่วงหน้า 2 เดือนคือ:". $ResultDate;

อ่ะฮ่า!!! ทีนี้เราก็จะได้ผลลัพท์วันที่ล่วงหน้าแล้ว  ส่วนเงื่อนไขการตรวจสอบข้อมูลก็ ใช้ SQL เช็คกันต่อไปนะจ๊ะ หรือจะเทคนิคใครเทคมันแล้วกันนะ

โค้ดด้านบนนี้เราสามารถเอาไปดัดแปลง เป็นดูเวลาย้อนหลัง หรือจะเพิ่มเป็นหลักปีก็ได้นะครับ ลองไปศึกษา PHP-Manual เพิ่มเติมดู ไม่ยากอย่างที่คิด

ย้อนหลัง หรือ เดินหน้า ด้วย mktime()

บันทึกโดย TaTump วันที่ 31 January 2008 | 259 views

เช่น ต้องการย้อนหลังไป 2 วัน
code

<?php$month=date("m");

$day=date("d")-2; //ย้อนหลังไป 2 วัน

$year=date("Y");

$mk_data=mktime(0, 0, 0, $month, $day, $year);

echo date("d-m-Y", $mk_data);

?>

จากโค้ดคือเอา 2 ไป”ลบ – ” วัน หากจะเดินหน้าให้เป็น “บวก +” แทน

$day=date("d")+2;

ส่วนเดือน และปีก็รูปแบบเดียวกันกับ วันนะครับ

$month=date("m")-4;
$year=date("Y")-2;

ฟังก์ชั่นตัดคำหยาบสามารถเพิ่มคำหยาบได้ ด้วย PHP

บันทึกโดย TaTump วันที่ 26 January 2008 | 500 views

ฟังก์ชั่นตัดคำหยาบ

function checkWordBad($word){
$strwordArr = array("f u c k","f.u.c.k","มึง","มึ ง","ม ึ ง","ม ึง","มงึ","มึ.ง","มึ_ง","มึ-ง","มึ+ง","กู","ค ว ย","ค- ว -ย","ค.ว.ย","คอ วอ ยอ","คอ-วอ-ยอ","ปี้","เหี้ย","เหี้-ย","ไอ้***","เฮี้ย","ชาติหมา","ชาดหมา","ช า ด ห ม า","ช.า.ด.ห.ม.า","ช า ติ ห ม า","ช.า.ติ.ห.ม.า","สัดหมา","สัด","หี","สันดาน","ส้นตีน","แตด") ;
$strCensor = "<font color='red'>Censor</font>" ;

foreach ($strwordArr as $value) {
$word = str_replace($value,$strCensor ,$word);
}
return ( $word) ;
}

เพิ่มคำหยาบก็ใส่ไปใน Array ได้เลยนะจ๊ะ
ตย.นี้ไม่ได้ด่าใครนะ ^_^

$word="สวัสดีไอ้เหี้ยทามมายมึงถึงได้ชาติหมาอย่างนี้";
echo checkWordBad($word);

ผลลัพท์
result

สร้างรหัสสินค้า หรือหมายเลข ID ด้วย str_pad()

บันทึกโดย TaTump วันที่ 12 January 2008 | 518 views

รหัสสินค้าส่วนใหญ่จะเป็นแบบมีการกำหนดหลักอาจจะ 5-6หลัก และอาจมีคำย่อนำหน้า เช่น

CP000045 ,CP000569 เป็นต้น

ซึ่งแน่นอนวิธีการออกแบบการเก็บข้อมูลเราก็ต้องใช้ฟิลด์นึงเก็บคำย่อ และอีกฟิลด์นึงเก็บหมายเลข ID ซึ่งหากข้อมูลออกมา โดยอิงจาก ตย. ด้านบนก็จะเป็น

CP45 ,CP569

สังเกตมั้ยครับว่าเลขศูนย์ข้างหน้ามันหายไป อ่า…เราจะทำอย่างไรให้มันแสดงผลครบล่ะ ผมขออุปมาว่ารหัสมี 6 หลักแล้วกันนะครับ

วิธีแก้แบบที่ 1 แก้ที่การออกแบบ database โดยเซ็ต Attributes ให้เป็น UNSIGNED ZEROFILL

CREATE TABLE `product` (

`id` INT( 11 ) NOT NULL AUTO_INCREMENT PRIMARY KEY ,
`PRODUCT_ID` INT( 6 ) UNSIGNED ZEROFILL NOT NULL

) ENGINE = MYISAM ;

วิธีแก้แบบที่ 1 ใช้ฟังก์ชั่น str_pad อันที่เกรี่นหัวไว้เน่าะ ^_^

$input=45;
echo str_pad($input,6, "0", STR_PAD_LEFT); // กำหนดให้เพิ่มเลขศูนย์จากทางซ้ายรวมกันแล้วครบ 6 หลัก
//จะได้เป็น 000045

จะว่าไป str_pad สามารถเพิ่มทางขวาหรือทั้งสอง้างก็ได้โดยการกำหนด pad_type ดังนี้
STR_PAD_RIGHT= เพิ่มจากขวา 450000
STR_PAD_LEFT=เพิ่มจากขวา 000045
STR_PAD_BOTH=เพิ่มทั้งสอง 004500

ฟังก์ชั่น Replace Links ด้วย Regular expressions ของ PHP

บันทึกโดย TaTump วันที่ 12 January 2008 | 432 views

ลักษณะการทำงานก็คือจะสร้างไฮเปอร์ลิงค์ให้โดยอัตโนมัติ
code

function replaceLinks($text) {

// convert support@pogoda.in into

// <a href="mailto:support@pogoda.in">

// support@pogoda.in</a>

$text = ereg_replace('[-a-z0-9!#$%&\'*+/=?^_`{|}~]+@([.]?[a-zA-Z0-9_/-])*',

'<a href="mailto:\\0">\\0</a>',$text);// convert http://www.pogoda.in/new_york/eng/ into

// <a href="http://pogoda.in/new_york/eng/">

// pogoda.in/new_york/eng/</a>

$text = ereg_replace('[a-zA-Z]+://(([.]?[a-zA-Z0-9_/-])*)',

'<a href="\\0">\\1</a>',$text);

// convert www.pogoda.in/new_york/eng/ into

// <a href="http://www.pogoda.in/new_york/eng/">

// www.pogoda.in/new_york/eng/</a>

$text = ereg_replace('(^| )(www([-]*[.]?[a-zA-Z0-9_/-?&%])*)',

' <a href="http://\\2">\\2</a>',$text);

return $text;

}

Example

echo replaceLinks('mailto:tatump@memo8.com');
echo"<br />";
echo replaceLinks('http://www.memo8.com/toolkits/')

หรือจะเอาไปดัดแปลงเป็นการอ่านมาจากไฟล์ก็ได้นะครับ

ที่มา : http://th2.php.net/eregi_replace

Page 1 of 212»