PHP - Khái niệm web
Phiên này trình bày cách PHP có thể cung cấp nội dung động theo loại trình duyệt, số được tạo ngẫu nhiên hoặc do Người dùng nhập. Nó cũng chứng minh cách trình duyệt khách hàng có thể được chuyển hướng.
Xác định Trình duyệt & Nền tảng
PHP tạo ra một số hữu ích environment variables có thể thấy trong trang phpinfo.php được sử dụng để thiết lập môi trường PHP.
Một trong những biến môi trường do PHP thiết lập là HTTP_USER_AGENT xác định trình duyệt và hệ điều hành của người dùng.
PHP cung cấp một hàm getenv () để truy cập giá trị của tất cả các biến môi trường. Thông tin có trong biến môi trường HTTP_USER_AGENT có thể được sử dụng để tạo nội dung động phù hợp với trình duyệt.
Ví dụ sau minh họa cách bạn có thể xác định trình duyệt máy khách và hệ điều hành.
NOTE- Hàm preg_match () được thảo luận trong phiên biểu thức chính quy PHP .
<html>
<body>
<?php
function getBrowser() {
$u_agent = $_SERVER['HTTP_USER_AGENT'];
$bname = 'Unknown';
$platform = 'Unknown';
$version = "";
//First get the platform?
if (preg_match('/linux/i', $u_agent)) {
$platform = 'linux';
}elseif (preg_match('/macintosh|mac os x/i', $u_agent)) {
$platform = 'mac';
}elseif (preg_match('/windows|win32/i', $u_agent)) {
$platform = 'windows';
}
// Next get the name of the useragent yes seperately and for good reason
if(preg_match('/MSIE/i',$u_agent) && !preg_match('/Opera/i',$u_agent)) {
$bname = 'Internet Explorer';
$ub = "MSIE";
} elseif(preg_match('/Firefox/i',$u_agent)) {
$bname = 'Mozilla Firefox';
$ub = "Firefox";
} elseif(preg_match('/Chrome/i',$u_agent)) {
$bname = 'Google Chrome';
$ub = "Chrome";
}elseif(preg_match('/Safari/i',$u_agent)) {
$bname = 'Apple Safari';
$ub = "Safari";
}elseif(preg_match('/Opera/i',$u_agent)) {
$bname = 'Opera';
$ub = "Opera";
}elseif(preg_match('/Netscape/i',$u_agent)) {
$bname = 'Netscape';
$ub = "Netscape";
}
// finally get the correct version number
$known = array('Version', $ub, 'other');
$pattern = '#(?<browser>' . join('|', $known) . ')[/ ]+(?<version>[0-9.|a-zA-Z.]*)#';
if (!preg_match_all($pattern, $u_agent, $matches)) {
// we have no matching number just continue
}
// see how many we have
$i = count($matches['browser']);
if ($i != 1) {
//we will have two since we are not using 'other' argument yet
//see if version is before or after the name
if (strripos($u_agent,"Version") < strripos($u_agent,$ub)){
$version= $matches['version'][0];
}else {
$version= $matches['version'][1];
}
}else {
$version= $matches['version'][0];
}
// check if we have a number
if ($version == null || $version == "") {$version = "?";}
return array(
'userAgent' => $u_agent,
'name' => $bname,
'version' => $version,
'platform' => $platform,
'pattern' => $pattern
);
}
// now try it
$ua = getBrowser();
$yourbrowser = "Your browser: " . $ua['name'] . " " . $ua['version'] .
" on " .$ua['platform'] . " reports: <br >" . $ua['userAgent'];
print_r($yourbrowser);
?>
</body>
</html>
Đây là kết quả sau trên máy của tôi. Kết quả này có thể khác nhau đối với máy tính của bạn tùy thuộc vào những gì bạn đang sử dụng.
Nó sẽ tạo ra kết quả sau:
Your browser: Google Chrome 54.0.2840.99 on windows reports:
Mozilla/5.0 (Windows NT 6.3; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko)
Chrome/54.0.2840.99 Safari/537.36
Hiển thị hình ảnh một cách ngẫu nhiên
PHP rand()hàm được sử dụng để tạo một số ngẫu nhiên. i Hàm này có thể tạo ra các số trong một phạm vi nhất định. Trình tạo số ngẫu nhiên phải được thực hiện để ngăn chặn việc tạo ra một mẫu số thường xuyên. Điều này đạt được bằng cách sử dụngsrand() hàm chỉ định số hạt giống làm đối số của nó.
Ví dụ sau minh họa cách bạn có thể hiển thị hình ảnh khác nhau mỗi lần trong số bốn hình ảnh -
<html>
<body>
<?php
srand( microtime() * 1000000 );
$num = rand( 1, 4 );
switch( $num ) {
case 1: $image_file = "/php/images/logo.png";
break;
case 2: $image_file = "/php/images/php.jpg";
break;
case 3: $image_file = "/php/images/logo.png";
break;
case 4: $image_file = "/php/images/php.jpg";
break;
}
echo "Random Image : <img src=$image_file />";
?>
</body>
</html>
Nó sẽ tạo ra kết quả sau:
Sử dụng biểu mẫu HTML
Điều quan trọng nhất cần lưu ý khi xử lý các biểu mẫu HTML và PHP là bất kỳ phần tử biểu mẫu nào trong trang HTML sẽ tự động có sẵn cho các tập lệnh PHP của bạn.
Hãy thử ví dụ sau bằng cách đặt mã nguồn trong tập lệnh test.php.
<?php
if( $_POST["name"] || $_POST["age"] ) {
if (preg_match("/[^A-Za-z'-]/",$_POST['name'] )) {
die ("invalid name and name should be alpha");
}
echo "Welcome ". $_POST['name']. "<br />";
echo "You are ". $_POST['age']. " years old.";
exit();
}
?>
<html>
<body>
<form action = "<?php $_PHP_SELF ?>" method = "POST">
Name: <input type = "text" name = "name" />
Age: <input type = "text" name = "age" />
<input type = "submit" />
</form>
</body>
</html>
Nó sẽ tạo ra kết quả sau:
Biến mặc định PHP $_PHP_SELF được sử dụng cho tên tập lệnh PHP và khi bạn nhấp vào nút "gửi" thì tập lệnh PHP tương tự sẽ được gọi và sẽ tạo ra kết quả sau:
Phương thức = "POST" được sử dụng để đăng dữ liệu người dùng lên tập lệnh máy chủ. Có hai phương pháp đăng dữ liệu lên tập lệnh máy chủ được thảo luận trong chương GET & POST của PHP .
Chuyển hướng trình duyệt
PHP header()hàm cung cấp tiêu đề HTTP thô cho trình duyệt và có thể được sử dụng để chuyển hướng nó đến một vị trí khác. Tập lệnh chuyển hướng phải nằm ở đầu trang để ngăn không cho bất kỳ phần nào khác của trang tải.
Mục tiêu được chỉ định bởi Location: tiêu đề làm đối số cho header()chức năng. Sau khi gọi hàm này,exit() có thể được sử dụng để tạm dừng phân tích phần còn lại của mã.
Ví dụ sau minh họa cách bạn có thể chuyển hướng một yêu cầu trình duyệt đến một trang web khác. Hãy thử ví dụ này bằng cách đặt mã nguồn trong tập lệnh test.php.
<?php
if( $_POST["location"] ) {
$location = $_POST["location"];
header( "Location:$location" );
exit();
}
?>
<html>
<body>
<p>Choose a site to visit :</p>
<form action = "<?php $_SERVER['PHP_SELF'] ?>" method ="POST">
<select name = "location">.
<option value = "http://www.tutorialspoint.com">
Tutorialspoint.com
</option>
<option value = "http://www.google.com">
Google Search Page
</option>
</select>
<input type = "submit" />
</form>
</body>
</html>
Nó sẽ tạo ra kết quả sau: