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 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('@', '@', $email); $email = str_replace('.', '.', $email); $email = str_split($email, 5); $linkText = str_replace('@', '@', $linkText); $linkText = str_replace('.', '.', $linkText); $linkText = str_split($linkText, 5); $part1 = '<a href="ma'; $part2 = 'ilto:'; $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; } }
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 Messenger
- Gmail
- Viber
- Skype