Hoàng Web

Thiết Kế Website WordPress

  • Kho giao diện
  • Dịch Vụ
    • Thiết kế web giá rẻ
    • Thiết kế website WordPress
    • Hosting Miễn Phí 100GB
    • Tích hợp thanh toán MoMo, ViettelPay, Vietcombank, MB..
    • Tối ưu Google PageSpeed
    • Sửa lỗi nâng cấp website
    • Viết plugin WordPress
    • Code Tool theo yêu cầu
  • Bảng giá
  • Quy trình làm việc
  • Giới thiệu
  • Liên Lạc
Trang chủ » Programming » PHP » Cẩm nang PHP Script Lập trình web động với PHP/MySQL

Cẩm nang PHP Script Lập trình web động với PHP/MySQL

Thứ Sáu, 20/11/2015 by Hoàng Quách

Nội dung

  • 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
  • shares
  • Facebook
  • Facebook Messenger
  • Gmail
  • Viber
  • Skype

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='[email protected]', $linkText='Contact Us', $attrs ='class="emailencoder"' )
{
	// remplazar aroba y puntos
	$email = str_replace('@', '&#64;', $email);
	$email = str_replace('.', '&#46;', $email);
	$email = str_split($email, 5);

	$linkText = str_replace('@', '&#64;', $linkText);
	$linkText = str_replace('.', '&#46;', $linkText);
	$linkText = str_split($linkText, 5);
	
	$part1 = '<a href="ma'; $part2 = 'ilto&#58;'; $part3 = '" '. $attrs .' >';
	$part4 = '</a>';

	$encoded = '<script type="text/javascript">';
	$encoded .= "document.write('$part1');";
	$encoded .= "document.write('$part2');";
	foreach($email as $e)
	{
			$encoded .= "document.write('$e');";
	}
	$encoded .= "document.write('$part3');";
	foreach($linkText as $l)
	{
			$encoded .= "document.write('$l');";
	}
	$encoded .= "document.write('$part4');";
	$encoded .= '</script>';

	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 '<a target="_blank" href="'.$dir.$file.'">'.$file.'</a>
'."\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":"[email protected]","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="<?xml version='1.0'?>
<users>
   <user id='398'>
      <name>Foo</name>
      <email>[email protected]</name>
   </user>
   <user id='867'>
      <name>Foobar</name>
      <email>[email protected]</name>
   </user>
</users>";

//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";
    }
}

Hiển thị liên kết dạng Tags

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[] = '<a style="font-size: ' . floor( $size ) . 'px' . '" class="tag_cloud" href="#" title="\'' . $tag . '\' returned a count of ' . $count . '">' 
		. htmlspecialchars( stripslashes( $tag ) ) . '</a>';
	}
	
	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 '<img src="http://www.gravatar.com/avatar.php?gravatar_id='.md5($email). '&default='.$default.'&size='.$size.'&rating='.$rating.'" width="'.$size.'px" height="'.$size.'px" />';
}

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';
}

Tạo hyperlinks từ chuỗi chứa URL

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://)[-a-zA-Z0-9@:%_+.~#?&//=]+)',
 '<a href="\1">\1</a>', $text);
 $text = eregi_replace('([[:space:]()[{}])(www.[-a-zA-Z0-9@:%_+.~#?&//=]+)',
 '\1<a href="http://\2">\2</a>', $text);
 $text = eregi_replace('([_.0-9a-z-]+@([0-9a-z][0-9a-z-]+.)+[a-z]{2,3})',
 '<a href="mailto:\1">\1</a>', $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ích bài viết này, hãy ủng hộ chúng tôi bằng cách đăng ký nhận bài viết mới ở bên dưới và đừng quên chia sẻ kiến thức này với bạn bè của bạn nhé. Bạn cũng có thể theo dõi blog này trên Twitter và Facebook

  • shares
  • Facebook
  • Facebook Messenger
  • Gmail
  • Viber
  • Skype

Chuyên mục: PHP Tìm kiếm: học lập trình web, lập trình web động, php, PHP Script, php snippets

Tôi giúp gì cho bạn?

HOÀNG WEB

Địa chỉ: Tây Sơn, Phường Quang Trung, Quận Đống Đa, Hà Nội

Hotline: 0987 342 124 – 0868 292 303 (8h:00 – 21h:00)

Email: [email protected]

Website: www.hoangweb.com

KẾT NỐI VỚI TÔI

  • Facebook
  • GitHub
  • YouTube

SẢN PHẨM

  • Plugin Thanh Toán Quét Mã QR Code Tự Động
  • WP2Speed – Tối ưu Google Speed
  • 23WebHost – Hosting Miễn Phí 100GB

LIÊN KẾT

  • Có nên thuê thiết kế website giá rẻ?
  • Hướng dẫn thanh toán
  • Chính sách hoàn tiền
  • Trung tâm hỗ trợ

Copyright © 2023 | All rights reserved | HOANG WEB
Mọi hình thức sao chép nội dung trên website này mà chưa được sự đồng ý đều là trái phép.