Browsing articles in "PHP"
Aug 5, 2011
แว่นตก

แปลง tag php ให้เป็น html

ในบ้างครั้งเวลาเราเขียนโปรแกรม php
เราจะพบว่าถ้ามีการใส่ tag javascript หรือ php

จะทำให้การทำงานของโปรแกรมที่เราเขียน จะเสียไป
เพราะฉะนั้น วันนี้จะของแนะนำ function ที่ใช้ในการ
แปลง tag ต่าง ๆ ให้เป็น ตัวอักษรปกติ (html)

$text = htmlspecialchars($text);

โดยที่ fucntion จะเปลี่ยน tag ต่าง ๆ ดังนี้
เปลี่ยนจาก ” เป็น "
เปลี่ยนจาก & เป็น &
เปลี่ยนจาก < เป็น &lt;
เปลี่ยนจาก > เป็น &gt;

แต่ถ้าจะย้อนกลับเปลี่ยนจากตัวอักษรปกติ ไปเป็น tag php , javascript ใช้คำสั่งนี้ครับ

$text = htmlspecialchars_decode($text);

ประมาณนี้ครับ ^^

May 25, 2011
แว่นตก

วิธีส่งเมล์ผ่าน server gmail

รูปของเทคนิค วิธีส่งเมล์ผ่าน server gmail

ในการส่งเมล์ ในบ้างครั้ง server เราก็ไม่อนุญาตให้ส่งเมล์ออกไป หรือไม่ก็ server เราโดนบล๊อกจากผู้ให้บริการอีเมล์ เช่น hotmail gmail yahoo เป็นต้น

เราสามารถแก้ไขโดยการไปใช้ server gmail ในการส่งเมล์แทน server เราเอง แต่เราต้อง

1 . ไปโหลด php class ที่ชื่อว่า phpmailer ก่อน
และ
2. เปิดใช้งาน openssl โดยการ เอาเครื่องหมาย ; หน้า extension=php_openssl.dll จาก php.ini ออก และ Save แล้ว restart Webserver

ตัวอย่าง code การใช้งาน

1
2
3
4
5
6
7
8
9
10
11
12
13
14
require_once('class.phpmailer.php');
$mail = new PHPMailer();
$mail->IsHTML(true); // กำหนดให้ ส่งเป็น html
$mail->IsSMTP();
$mail->SMTPAuth = true; // enable SMTP authentication
$mail->Host = "ssl://smtp.gmail.com:465"; // SMTP GMAIL server
$mail->Username = "xxx@gmail.com"; // GMAIL username
$mail->Password = "xxxxx"; // GMAIL password
$mail->From = "เมลผู้ส่ง"; // "name@yourdomain.com";
$mail->FromName = "ชื่อผู้ส่ง";
$mail->Subject = "หัวข้ออีกเมล";
$mail->MsgHTML("ข้อความที่จะส่ง เป็น html ก็ได้");
$mail->AddAddress("e-mail ผู้รับ", "ชื่อผู้รับ"); // ใส่ email ผู้รับอย่างเดียวก็ได้
$mail->Send(); // ส่งเมลออก

ขอขอบคุณ

http://phpmailer.worxware.com/index.php?pg=phpmailer

http://www.mindphp.com/modules.php?name=News&file=article&sid=101

May 25, 2011
แว่นตก

cURL VS file_get_contents

รูปของเทคนิค cURL VS file_get_contents

ในการเรียกอ่านไฟล์ url ต่าง ๆ ในเวปมี 2 วิธีที่นิยมกัน
1. cURL
2. file_get_contents

ในวันนี้จะมาเปรียบเทียบความเร็วในการเรียกอ่้านไฟล์ทั้ง 2 วิธี

[1] => Array // 1 request to google.com
(
[FGC] => 0.4955058 // 38.88% slower
[CURL] => 0.3582108
)
[5] => Array // 5 requests to google.com
(
[FGC] => 2.2415568 // 24.44% slower
[CURL] => 1.7973249
)
[10] => Array // 10 requests to google.com
(
[FGC] => 4.7877922 // 29.46% slower
[CURL] => 3.6951289
)
[25] => Array // 25 requests to google.com
(
[FGC] => 10.932404 // 10.18% slower
[CURL] => 9.9168329
)
[50] => Array // 50 requests to google.com
(
[FGC] => 22.535982 // 24.74% slower
[CURL] => 18.068931
)
[100] => Array // 100 requests to google.com
(
[FGC] => 44.685283 // 18.57% slower
[CURL] => 37.688820
)

จากการที่ดูผลการทดสอบ สรุปว่า cURL ชนะเลิศ

May 25, 2011
แว่นตก

รับค่า XML เป็น Streaming

ในการที่เราจะใช้บริการ web service เราต้องมีรับ xml ของคนอื่นมา
ทำงานต่อ ซึ่งคำสั่งในการรับ xml นั้นก็คือ

 

1
$data = file_get_contents("php://input");

 

คำสั่งเทพ คำสั่งเดียว จบ

May 25, 2011
แว่นตก

ข้อแตกต่างของ ประกาศตัวแปร และ define

ไม่ว่าจะ้เป็น
การประกาศตัวแปร -> $startpage = “1″;
หรือ การใช้ function define -> define(“startpage”,”1″);

แต่ก็ได้ค่าออกมา เป็นค่าเดียวกันคือ 1

แต่ของแตกต่างของ 2 วิธีนี้ก็คือ

1
2
3
$startpage = "1";
$startpage = "2";
echo  $startpage;  // ได้ผลลัพธ์คือ 2

 

1
2
3
define("startpage","1");
define("startpage","2");
echo  startpage;  // ได้ผลลัพธ์คือ 1

 

หวังว่าคงเข้าใจกันนะครับ

 

เวลาใช้งานก็ดูลักษณะงานด้วยนะครับ :)

 

May 25, 2011
แว่นตก

function แปลง tis620 เป็น utf8

ในการเขียนเวปไซด์บ้างครั้งเรามีความจำเป็นที่จะต้องแปลง unicode
ไปมาระหว่าง tis620 เป็น utf8 หรือจาก utf8 เป็น tis620
ผมขอยกตัวอย่างเคสที่ต้องเปลี่ยน unicode
เช่น db เป็น tis620 แต่หน้าเวปไซด์เรา เป็น utf8
และเราไม่สามารถที่จะเ้ปลี่ยนจาก db เป็น utf8
และเราก็ไม่สามารถเปลี่ยนเวปไซด์เป็น tis620 ได้
เราต้องใช้ function ดังกล่าวเปลี่ยน unicode ครับ

function ในการแปลงจาก tis620 เป็น utf8

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
function tis620_to_utf8($tis) {
  for( $i=0 ; $i< strlen($tis) ; $i++ ){
    $s = substr($tis, $i, 1);
    $val = ord($s);
    if( $val < 0x80 ){
	 $utf8 .= $s;
    } elseif ((0xA1 <= $val and $val <= 0xDA) 
              or (0xDF <= $val and $val <= 0xFB))  {
	 $unicode = 0x0E00 + $val - 0xA0;
	 $utf8 .= chr( 0xE0 | ($unicode >> 12) );
	 $utf8 .= chr( 0x80 | (($unicode >> 6) & 0x3F) );
	 $utf8 .= chr( 0x80 | ($unicode & 0x3F) );
    }
  }
return $utf8;
}

function ในการแปลงจาก utf8 เป็น tis620

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
function utf8_to_tis620($string) {
  $str = $string;
  $res = "";
  for ($i = 0; $i < strlen($str); $i++) {
	if (ord($str[$i]) == 224) {
	  $unicode = ord($str[$i+2]) & 0x3F;
	  $unicode |= (ord($str[$i+1]) & 0x3F) << 6;
	  $unicode |= (ord($str[$i]) & 0x0F) << 12;
	  $res .= chr($unicode-0x0E00+0xA0);
	  $i += 2;
	} else {
	  $res .= $str[$i];
	}
  }
  return $res;
}
May 25, 2011
แว่นตก

เซตเวลาในการติดต่อกับเวปอื่น

ในการเขียนเวปไซด์ บ้างครั้งเรามีความเป็นที่จะต้องนำข้อมูลของที่อื่น มาแสดงในเวปของเรา
โดยที่ไม่ใช่แบบ iframe แต่ใช้ ฟังก์ชั่น ของ php เช่น fopen() หรือ file_get_contents()
ซึ่งวิธีนี้ ข้อดีคือ เราสามารถกำหนดรูปแบบในการแสดงผลได้ แต่ข้อเสียคือ ถ้าเวปที่เราไปเอา
ข้อมูลมาไม่สามารถเข้าได้ หรือพูดง่ายๆ คือ เวปล่ม และจะทำให้เวปเราล่มไปด้วย

แต่มีวิธีแก้ไข คือเราจะต้องไปกำหนเวลาในการติดต่อ ถ้าหมดเวลาตามที่เรากำหนดก็ให้ยกเลิกการติดต่อ

โดยใช้คำสั่งนี้

1
ini_set('default_socket_timeout',$time)

โดยที่
$time = เวลาที่ใช้ในการให้ติดต่อ หน่วยเป็น วินาที

ปล. ขอแนะนำว่าหลังจากใช้ ฟังก์ชั่นนี้แล้วให้เซตค่ากลับด้วย
ซึ่งค่าปกติคือ 60 วินาที

 

วิธีแนะนำโดย โอ@WLS

May 25, 2011
แว่นตก

วิธีการหาตัวเลขแบบไม่ซ้ำ ใน array

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<?php
$num=3;
$arr = array("1","2","3","4","5","6","7","8");
$count_arr=count($arr);
 
$arrName= array();
 
$idx=0;
 
while($idx<$num) 
{
	$id_rand = rand(0,$count_arr-1);
	if (!in_array($arr[$id_rand],$arrName))
	{
		$arrName[$idx]=$arr[$id_rand];
		$idx++;
	}
} 
 
print_r($arrName);
?>

โดยที่
$num คือ จำนวนตัวเลขที่ต้องการ
$arr คือ array ที่เก็บข้อมูลตัวเลข

 

จริง ๆ แล้วเอาไปประยุกต์ใช้กับตัวอักษรก็ได้นะ :)

 

Pages:12»