ยินดีต้อนรับ กรุณา สมัครสมาชิก หรือเข้าสู่ระบบ

Home » webboard » PHP
เข้าชม : 536

แปลง E-mail เป็นรูปภาพ email2img

โพสต์เมื่อ: วันจันทร์ 20 มิถุนายน 2554  13:12 น.

Webmaster หลายๆคนคงเคยเจอปัญหา เอาอีเมล์ของเราติดไว้ที่เว็บไซต์ แล้วเจอ spam เข้ามาเก็บอีเมล์ แล้วเอาไปส่ง spam mail มาให้เรา บางคนแก้ปัญหาโดยการทำอีเมล์สำหรับติดต่อ ให้เป็นรูปภาพแล้วเอาไปติดบนเว็บ แบบนี้ก็ช่วยแก้ปัญหาได้ครับ แต่มันไม่สะดวกในการแก้ไขหรือเปลี่ยนแปลงอีเมล์ วันนี้ผมเลยแนะนำอีกวิธีหนึ่งนั่นคือการแปลง e-mail address ไปเป็นรูปภาพโดยใช้ PHP script ซึ่งวิธีนี้จะสะดวกในการนำไปใช้งาน และแก้ไขเปลี่ยนแปลง email address

การนำ email2img ไปใช้งาน เครื่องที่รัน php อยู่จะต้องเปิดใช้งาน GD, Freetype และต้องมี font สำหรับแปลง email เป็น รูปภาพด้วย โดยในตัวอย่างนี้จะใช้ฟอนต์ arial.ttf ครับ

Source code ของ email2img.php

<?php
############################################################
# email2img email to image generator
# Author Jirawat Kongkaen
# http://www.picohosting.com
############################################################
$font = 'arial.ttf';
$fontsize = 10;
$angle = 0;
$x = 0;
$y = 9;


# ป้องกัน hotlink จากเว็บอื่น
if(isset($_SERVER['HTTP_REFERER']))
{
if(!eregi("www.picohosting.com", $_SERVER['HTTP_REFERER']))
{
$email = 'Access denied!';
}
}
else
{
$email = 'Access denied!';
}


# get email address
if(empty($email))
{
if(isset($_REQUEST['e']))
$email = $_REQUEST['e'];
else
$email = 'Email is empty!';
}
# รับค่าสีของอีเมล์มา แล้วมาแปลงเป็น integer
if(isset($_REQUEST['c']))
{
$tr = hexdec($_REQUEST['c'][0].$_REQUEST['c'][1]);
$tg = hexdec($_REQUEST['c'][2].$_REQUEST['c'][3]);
$tb = hexdec($_REQUEST['c'][4].$_REQUEST['c'][5]);
}
# ถ้าไม่ได้ใส่ค่าสีมากับ url จะใช้สีต่อไปนี้เป็นค่า default
else
{
$tr = 20;
$tg = 40;
$tb = 100;
}


# คำนวณขนาดของรูปภาพที่จะสร้างขึ้น
$box = imagettfbbox($fontsize, $angle, $font, $email);
$width = $box[2] - $box[6];
$height = $box[3] - $box[7];


# สร้างรูปภาพขึ้นมาใหม่
$image = imagecreate($width, $height);
$backgroundcolor = imagecolorallocatealpha ($image, 255, 255, 255, 127);


# กำหนดสีของตัวอักษร และแปลงอีเมล์ให้เป็นรูปภาพ
$textcolor = imagecolorallocate($image, $tr, $tg, $tb);
imagettftext($image, $fontsize, $angle, $x, $y, $textcolor, $font , $email) or die('Cannot generate image!');


# ส่งข้อมูลของรูปภาพไปให้ browser
header('Content-Type: image/png');
imagepng($image) or die('imagepng error!');
imagedestroy($image);
exit();
?>
การเรียกใช้งานไฟล์ email2img.php ต้องส่งค่าตัวแปลไปให้ไฟล์ดังกล่าวสองค่า คือตัวแปล e สำหรับส่งค่า email address และตัวแปล c สำหรับส่งค่าสีของตัวอักษรที่ต้องการ สำหรับตัวแปล c ถ้าไม่กำหนดไว้จะมีค่า default อยู่แล้ว

ตัวอย่างการแทรก รูปภาพใน html ด้วย email2img
<center>Contact :<img src="./email2img.php?e=email@somedomain.com&c=ff0000"></center>
ที่มา : http://www.picohosting.com/howto/email2img

เปลี่ยน อีเมลเป็นรูปภาพ


คุณต้องสมัครสมาชิก ถึงจะโพสกระทู้ได้

ปิดรับสมัครสมาชิกแล้ว


คำยอดฮิต :- 0