Hướng dẫn dùng incroments trong PHP

Nội dung

Nội dung chính

  • Tạo chuỗi PHP Script ngẫu nhiên
  • Sử lý địa chỉ Email
  • Làm việc với thư mục và tệp
  • Sử lý dữ liệu JSON
  • Truy cập dữ liệu XML
  • Lấy địa chỉ IP của máy khách
  • Hiển thị liên kết dạng Tags
  • Chèn Avater với gravatar
  • File nén ZIP
  • Tạo hyperlinks từ chuỗi chứa URL
  • Thay đổi kích thước ảnh
  • Phát hiện PHP gọi từ ajax

  • 1 Tạo chuỗi PHP Script ngẫu nhiên
  • 2 Sử lý địa chỉ Email
  • 3 Làm việc với thư mục và tệp
  • 4 Sử lý dữ liệu JSON
  • 5 Truy cập dữ liệu XML
  • 6 Lấy địa chỉ IP của máy khách
  • 7 Tải file
  • 8 Hiển thị liên kết dạng Tags
  • 9 Chèn Avater với gravatar
  • 10 File nén ZIP
  • 11 Tạo hyperlinks từ chuỗi chứa URL
  • 12 Thay đổi kích thước ảnh
  • 13 Phát hiện PHP gọi từ ajax

PHP là một ngôn ngữ lập trình thiết kế web phổ biến nhất hiện nay, có một tỷ website đang sử dụng ngôn ngữ này một trong số đó có ông hoàng facebook. Dưới đây là các đoạn script hữu ích sử lý các công việc khác nhau trong lập trình web động bạn nên tham khảo và có thể sử dụng với dự án web của mình.

Tạo chuỗi PHP Script ngẫu nhiên

Đoạn code này tạo ra chuỗi ngẫu nhiên, có thể đọc được chẳng hạn như các từ vựng hoặc ký tự giống captcha.

/**************
*@length - length of random string (must be a multiple of 2)
**************/
function readable_random_string($length = 6){
    $conso=array("b","c","d","f","g","h","j","k","l",
    "m","n","p","r","s","t","v","w","x","y","z");
    $vocal=array("a","e","i","o","u");
    $password="";
    srand ((double)microtime()*1000000);
    $max = $length/2;
    for($i=1; $i<=$max; $i++)
    {
    $password.=$conso[rand(0,19)];
    $password.=$vocal[rand(0,4)];
    }
    return $password;
}

Nếu bạn muốn bảo mật hơn bằng cách liệt kê ra các ký tự không có trình tự xắp xếp đi xen kẽ là ký tự đặc biệt bạn có thể sử dụng đoạn code dưới đây:

 
/*************
*@l - length of random string
*/
function generate_rand($l){
  $c= "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";
  srand((double)microtime()*1000000);
  for($i=0; $i<$l; $i++) {
	  $rand.= $c[rand()%strlen($c)];
  }
  return $rand;
 }

Sử lý địa chỉ Email

Mã hóa địa chỉ email là cách ngăn chặn các máy tìm kiếm email tìm ra bạn, nếu bạn sợ họ spam. Với đoạn PHP Script sau sẽ giúp bạn mã hóa mọi địa chỉ email dưới dạng thực thể HTML.

function encode_email($email='', $linkText='Contact Us', $attrs ='class="emailencoder"' )
{
	// remplazar aroba y puntos
	$email = str_replace('@', '@', $email);
	$email = str_replace('.', '.', $email);
	$email = str_split($email, 5);

	$linkText = str_replace('@', '@', $linkText);
	$linkText = str_replace('.', '.', $linkText);
	$linkText = str_split($linkText, 5);
	
	$part1 = '';
	$part4 = '';

	$encoded = '';

	return $encoded;
}

Xác thực địa chỉ email.
Công việc này bạn thường thấy trong các form đăng ký, đoạn code này sẽ giúp web xác thực email của người dùng, thậm trí kiểm tra MX record từ domain của email để đảm bảo hợp lệ.

function is_valid_email($email, $test_mx = false)
{
	if(eregi("^([_a-z0-9-]+)(\.[_a-z0-9-]+)*@([a-z0-9-]+)(\.[a-z0-9-]+)*(\.[a-z]{2,4})$", $email))
		if($test_mx)
		{
			list($username, $domain) = split("@", $email);
			return getmxrr($domain, $mxrecords);
		}
		else
			return true;
	else
		return false;
}

Làm việc với thư mục và tệp

Liệt kê các files có trong thư mục

function list_files($dir)
{
	if(is_dir($dir))
  	{
  		if($handle = opendir($dir))
  		{
  			while(($file = readdir($handle)) !== false)
  			{
  				if($file != "." && $file != ".." && $file != "Thumbs.db")
  				{
  					echo ''.$file.'
'."\n";
  				}
  			}
  			closedir($handle);
  		}
	}
}

Bạn cũng có thể thậm trí xóa toàn bộ thư mục bao gồm các files chứa trong nó, với đoạn code sau:

/*****
*@dir - Directory to destroy
*@virtual[optional]- whether a virtual directory
*/
function destroyDir($dir, $virtual = false)
{
	$ds = DIRECTORY_SEPARATOR;
	$dir = $virtual ? realpath($dir) : $dir;
	$dir = substr($dir, -1) == $ds ? substr($dir, 0, -1) : $dir;
	if (is_dir($dir) && $handle = opendir($dir))
	{
		while ($file = readdir($handle))
		{
			if ($file == '.' || $file == '..')
			{
				continue;
			}
			elseif (is_dir($dir.$ds.$file))
			{
				destroyDir($dir.$ds.$file);
			}
			else
			{
				unlink($dir.$ds.$file);
			}
		}
		closedir($handle);
		rmdir($dir);
		return true;
	}
	else
	{
		return false;
	}
}

Xem thêm: PHP Script tạo captcha bảo mật cho website

Sử lý dữ liệu JSON

Hiện nay các dịch vụ web services phổ biến như Twitter đều cung cấp API truy cập dữ liệu của họ, do vậy bạn cần phải biết cách đọc giá trị mảng dữ liệu JSON, tham khảo đoạn code dưới đây:

$json_string='{"id":1,"name":"foo","email":"","interest":["wordpress","php"]} ';
$obj=json_decode($json_string);
echo $obj->name; //prints foo
echo $obj->interest[1]; //prints php

Truy cập dữ liệu XML

Cũng như kiểu dữ liệu JSON, XML có cú pháp sáng sủa được biết đến cách tổ chức dữ liệu phức tạp và sử dụng cho dịch vụ web services, PHP được tích hợp sẵn thư viện để sử lý chuỗi XML, đoạn code này là ví dụ đơn giản cho bạn cái nhìn về dữ liệu XML.

//xml string
$xml_string="

   
      Foo
      
   
   
      Foobar
      
   
";

//load the xml string using simplexml
$xml = simplexml_load_string($xml_string);

//loop through the each node of user
foreach ($xml->user as $user)
{
   //access attribute
   echo $user['id'], '  ';
   //subnodes are accessed by -> operator
   echo $user->name, '  ';
   echo $user->email, '
';
}

Lấy địa chỉ IP của máy khách

Sử dụng đoạn code sau để xác định IP của máy tính khách truy cập vào website.

function getRealIpAddr()
{
	if (!empty($_SERVER['HTTP_CLIENT_IP']))
	{
		$ip=$_SERVER['HTTP_CLIENT_IP'];
	}
	elseif (!empty($_SERVER['HTTP_X_FORWARDED_FOR']))
	//to check ip is pass from proxy
	{
		$ip=$_SERVER['HTTP_X_FORWARDED_FOR'];
	}
	else
	{
		$ip=$_SERVER['REMOTE_ADDR'];
	}
	return $ip;
}

Tải file

Cung cấp cho người dùng nút tải file với nội dung bạn chỉ định.

/********************
*@file - path to file
*/
function force_download($file)
{
    if ((isset($file))&&(file_exists($file))) {
       header("Content-length: ".filesize($file));
       header('Content-Type: application/octet-stream');
       header('Content-Disposition: attachment; filename="' . $file . '"');
       readfile("$file");
    } else {
       echo "No file selected";
    }
}

Các website dạng blogs có nội dung bài viết, bên sidebar thường hiển thị những thẻ của các bài viết được truy cập nhiều. Chúng có thể hiển thị nhiều kiểu font và kích thước khau nhau để phân biệt, để làm điều này chúng ta sử dụng đoạn code sau đây:

function getCloud( $data = array(), $minFontSize = 12, $maxFontSize = 30 )
{
	$minimumCount = min($data);
	$maximumCount = max($data);
	$spread       = $maximumCount - $minimumCount;
	$cloudHTML    = '';
	$cloudTags    = array();

	$spread == 0 && $spread = 1;

	foreach( $data as $tag => $count )
	{
		$size = $minFontSize + ( $count - $minimumCount ) 
			* ( $maxFontSize - $minFontSize ) / $spread;
		$cloudTags[] = '' 
		. htmlspecialchars( stripslashes( $tag ) ) . '';
	}
	
	return join( "\n", $cloudTags ) . "\n";
}
/**************************
****   Sample usage    ***/
$arr = Array('Actionscript' => 35, 'Adobe' => 22, 'Array' => 44, 'Background' => 43, 
	'Blur' => 18, 'Canvas' => 33, 'Class' => 15, 'Color Palette' => 11, 'Crop' => 42, 
	'Delimiter' => 13, 'Depth' => 34, 'Design' => 8, 'Encode' => 12, 'Encryption' => 30, 
	'Extract' => 28, 'Filters' => 42);
echo getCloud($arr, 12, 36);

Chèn Avater với gravatar

Với sự phát triển chóng mặt của WordPress, Gravatar trở nên phổ biến hơn. Nó khá dễ dàng để tích hợp hình ảnh avatar cho website bằng cách sử dụng API của dịch vụ này.

/******************
*@email - Email address to show gravatar for
*@size - size of gravatar
*@default - URL of default gravatar to use
*@rating - rating of Gravatar(G, PG, R, X)
*/
function show_gravatar($email, $size, $default, $rating)
{
	echo '';
}

File nén ZIP

Để tạo tạo file nén bạn lấy đoạn code sau:

/* creates a compressed zip file */
function create_zip($files = array(),$destination = '',$overwrite = false) {
	//if the zip file already exists and overwrite is false, return false
	if(file_exists($destination) && !$overwrite) { return false; }
	//vars
	$valid_files = array();
	//if files were passed in...
	if(is_array($files)) {
		//cycle through each file
		foreach($files as $file) {
			//make sure the file exists
			if(file_exists($file)) {
				$valid_files[] = $file;
			}
		}
	}
	//if we have good files...
	if(count($valid_files)) {
		//create the archive
		$zip = new ZipArchive();
		if($zip->open($destination,$overwrite ? ZIPARCHIVE::OVERWRITE : ZIPARCHIVE::CREATE) !== true) {
			return false;
		}
		//add the files
		foreach($valid_files as $file) {
			$zip->addFile($file,$file);
		}
		//debug
		//echo 'The zip archive contains ',$zip->numFiles,' files with a status of ',$zip->status;
		
		//close the zip -- done!
		$zip->close();
		
		//check to make sure the file exists
		return file_exists($destination);
	}
	else
	{
		return false;
	}
}
/***** Example Usage ***/
$files=array('file1.jpg', 'file2.jpg', 'file3.gif');
create_zip($files, 'myzipfile.zip', true);

Bạn cũng có thể sử dụng PHP để giải nén file zip.

/**********************
*@file - path to zip file
*@destination - destination directory for unzipped files
*/
function unzip_file($file, $destination){
	// create object
	$zip = new ZipArchive() ;
	// open archive
	if ($zip->open($file) !== TRUE) {
		die (’Could not open archive’);
	}
	// extract contents to destination directory
	$zip->extractTo($destination);
	// close archive
	$zip->close();
	echo 'Archive extracted to directory';
}

Hàm này sẽ chuyển URL và địa chỉ email chứa trong chuỗi thành thẻ liên kết HTML có thể nhấn được trên website.

function makeClickableLinks($text) {
 $text = eregi_replace('(((f|ht){1}tp://)[[email protected]:%_+.~#?&//=]+)',
 '\1', $text);
 $text = eregi_replace('([[:space:]()[{}])(www.[[email protected]:%_+.~#?&//=]+)',
 '\1\2', $text);
 $text = eregi_replace('([_.0-9a-z-][email protected]([0-9a-z][0-9a-z-]+.)+[a-z]{2,3})',
 '\1', $text);

return $text;
}

Thay đổi kích thước ảnh

Từ kích thước ảnh gốc bạn sẽ muốn tạo ra nhiều kích thước khác nhau của ảnh để hiển thị phù hợp trên website. Đoạn code dưới đây là cách để sinh ra kích thước thumbnail.

/**********************
*@filename - path to the image
*@tmpname - temporary path to thumbnail
*@xmax - max width
*@ymax - max height
*/
function resize_image($filename, $tmpname, $xmax, $ymax)
{
	$ext = explode(".", $filename);
	$ext = $ext[count($ext)-1];

	if($ext == "jpg" || $ext == "jpeg")
		$im = imagecreatefromjpeg($tmpname);
	elseif($ext == "png")
		$im = imagecreatefrompng($tmpname);
	elseif($ext == "gif")
		$im = imagecreatefromgif($tmpname);
	
	$x = imagesx($im);
	$y = imagesy($im);
	
	if($x <= $xmax && $y <= $ymax) return $im; if($x >= $y) {
		$newx = $xmax;
		$newy = $newx * $y / $x;
	}
	else {
		$newy = $ymax;
		$newx = $x / $y * $newy;
	}
	
	$im2 = imagecreatetruecolor($newx, $newy);
	imagecopyresized($im2, $im, 0, 0, 0, 0, floor($newx), floor($newy), $x, $y);
	return $im2; 
}

Phát hiện PHP gọi từ ajax

Hầu hết javascript framework như jQuery, mootools gửi thông tin header HTTP_X_REQUESTED_WITH khi thực hiện gọi ajax, do vậy bạn có thể dễ dàng kiểm tra trên ngôn ngữ server side.

if(!empty($_SERVER['HTTP_X_REQUESTED_WITH']) && strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest'){
	//If AJAX Request Then
}else{
//something else
}

Trên đây là tổng hợp những đoạn code PHP Script hữu ích thường sử dụng khi lập trình web động với ngôn ngữ dynamic PHP. Chúc bạn thành công !

Nếu bạn thấy bài viết này hữu ích, hãy chia sẻ với bạn bè bằng cách nhấn nút chia sẻ ở bên dưới. Theo dõi chúng tôi trên Twitter và Facebook