Mục đích của bài viết này là giới thiệu các bạn một số hàm quen thuộc trong PHP, cách xử lí code, viết code dễ nhìn... Tuấn cũng không giỏi code gì đâu, nhưng có một số cái mình biết thì sẽ chia sẻ với các bạn .
Demo: http://tintoi.com/demo/ping.phpDownload: http://download.tintoi.com/ping-server.rar
Chương trình Ping Server
Ping đối với các webmaster chúng ta là khá quen thuộc rồi phải không? Nó tính thời gian gói tin đi từ máy chủ này đến một máy chủ nào đó. Vậy hôm nay chúng ta sẽ cùng làm một bài tập nhỏ để có thể viết được chương trình này.
- Phần 1: Xử lí thô dữ liệu
- Phần 2: Xuất dữ liệu đã xử lí (hiển thị)
Bước 1. Code PHP xử lí dữ liệu
Đây sẽ là "bộ não", quản lí thông tin người dùng nhập vào và thực hiện theo yêu cầu. Cũng không quá phức tạp, TinToi sẽ giải thích phía dưới.
<?php
function ping( $host, $port, $timeout )
{
$tB = microtime( true );
$fP = fSockOpen( $host, $port, $errno, $errstr, $timeout );
if ( ! $fP ) { return "Down"; }
$tA = microtime( true );
return round( ( ( $tA - $tB ) * 1000 ), 0 )." ms";
}
function is_valid_ip( $ip )
{
return preg_match('/\b(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.'.
'(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.'.
'(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.'.
'(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\b/', $ip) !== 0;
}
function is_valid_url( $url )
{
return preg_match('|^[a-z0-9-]+(.[a-z0-9-]+)*(:[0-9]+)?(/.*)?$|i',$url);
}
if( is_valid_url( $_GET['host'] ) )
{
$ipd = true;
}elseif( is_valid_ip( $_GET['host'] ) )
{
$ipd = true;
}else
{
$ipd = false;
}
?>
Giải thích code:
- Dòng 2: Hàm ping(). Có tác dụng mở một kết nối mới (fsockopen) đến một máy chủ chỉ định ($host), cổng chỉ định ($port). Vậy ở đây địa chỉ web của ta sẽ được đưa vào biến$host, cổng kết nối sẽ đưa vào biến $port
- Dòng 6: Nếu website, IP không truy cập được, trả về chuỗi "Down"
- Dòng 10: Hàm is_valid_ip(). Kiểm tra người dùng nhập IP đúng kiểu không.
- Dòng 17: Hàm is_valid_url(). Giống với hàm is_valid_ip(). Khác ở chỗ nó kiểm tra địa chỉ website (vd: google.com)
- Dòng 21: Nếu đúng địa chỉ, chuyển qua bước 2.
- Dòng 26: Nếu đúng IP, chuyển qua bước 2.
- Dòng 29: Vẫn chuyển qua bước 2 nhưng với lỗi.
Bước 2. Hiển thị
Giải thích:
- Dòng 77: Nếu biến $ipd đúng (xử lí ở bước 1) sẽ sử dụng hàm ping() để ping đến địa chỉ website người dùng chỉ định (biến $_GET['host']). Nếu $ipd sai thì sẽ không xử lí gì và tiếp tục.
Rất mong tut đơn giản của mình giúp bạn có thể hiểu thêm về một số cách viết code, sử dụng code nhuần nhuyễn hơn
Comments[ 0 ]
Đăng nhận xét