Giao tiếp ở đây đơn giản là nhận thông tin từ người dùng và xử lý chúng.
Nhận thông tin từ người dùng có2 cách chính:
1 Tạo những cái ô có thể điền thông tin vào, nút nhấn để gửi.
2 (nghe hơi lạ nhưng cũng là 1 cách) Bạn có 1 danh sách, người dùng muốn xem cụ thể cái gì thì click vào. Hành động click vào thể hiện lựa chọn của người dùng, cũng là một hình thức lựa chọn dữ liệu từ người dùng. Bài viết sẽ đề cập tới phương thức này.
Xử lý ở đây có rất nhiều ví dụ:
1 Bạn vào một diễn đàn - đăng nhập - lúc này mật khẩu bạn nhập (dữ liệu đầu vào) vào sẽ được so sánh với mật của bạn lúc đăng ký xem có trùng không - không trùng thì báo sai mật khẩu- đây cũng là 1 khâu xử lý.
2 Bạn vào một blog, forum gửi bài, nội dung bài viết, tiêu đề (dữ liệu đầu vào), bài viết được lưu ở đâu đó - đây cũng gọi là xử lý.
3 Cụ thể hơn, bạn viết 1 chương trình cho người dùng nhập vào 2 con số, tính tổng 2 số. Code hoàn thiện ở cuối bài, tiếp theo đây là phần hướng dẫn.Tạo một biến $users là một mảng, chứa vài mảng nhỏ khác:Để hiểu thêm về mảng ở đây, mời các bạn đọc lại bài php mảng kết hợp.
Mã nguồn:[Chọn]
$users =array(
array('name' => 'Tuấn', 'gender'=> 'Nam', 'city' => 'Hồ Chí Minh'),
array('name' => 'Dung', 'gender'=> 'Nữ', 'city' => 'Hà Nội'),
array('name' => 'Trang', 'gender'=> 'Nữ', 'city' => 'Huế'),);
Ví dụ, ta muốn tìm ra thành phố của bạn tên "Dung" (Dung ở vị trí thứ 2 trong mãng $users nên có số thứ tự là 1)thì ta dùng code sau:
Mã nguồn:[Chọn]
echo $user[1]['city'];
Tiếp đến, để lựa chọn thông tin của ai sẽ được hiễn thị thì việc ta cần làm là giúp người dùng lựa chọn và nhận kết quả lựa chọn từ người dùng.
Để bắt đầu, bạn hãy tạo 1 file tên là php-get.php với nội dung như sau:
Mã nguồn:[Chọn]
<?php
echo$_GET['id'];
?> Save file này lại và duyệt nó trên trình duyệt, ví dụ :
localhost/php-get.php?id=1
chú ý phần sau dấu"?"Bạn sẽ thấy nội dung trang là số 1, tương tự, hay thay đôi giá trị sau dấu "=".
Giá trị sau dấu "=" sẽ là giá trị cuả biến mãng $_GET['id'].
$_GET đơn thuần chỉ là một mảng kết hợp, và các khóa là các tham số được gửi trên đường dẫn (trong truờng hợp này là ID).
Bạn có thể gửi kèm nhiều tham số cùng một lúc, ví dụ: hãy tạo một file mới với nội dung như sau:
Mã nguồn:[Chọn]
<?php
echo$_GET['id']
echo$_GET['name'];
?>
Save file này lại và duyệt nó trên trình duyệt, ví dụ :
localhost/php-get.php?id=1&]name=Trang/b]
Lúc này nội dung hiện ra sẽ là 1 Trang. Ta dùng dấu "&" ghép các tham số lại với nhau để truyền đi.
Hiện giờ các bạn đã nắm bắt được vấn đề. Để người dùng có thể chọn tên của bạn muốn hiễn thị thông tin cụ thể, ta in ra sẵn một danh sách với link có các tham số id=0, 1, 2...
Ta dùng Vòng lặp để in ra danh sách:
Mã nguồn:[Chọn] for($i=0;$i<count($users);$i++)
{
echo '<li><a href="php-get.php?id='.$i.'">'.$users[$i]['name'].'</a></li>';
}
Để in ra giá trị của khóa city cho một bạn, ta dùng 1 code:
Mã nguồn:[Chọn]
echo $users[ $_GET['id'] ]['city'];
Ví dụ, khi ?id=1 thì đạon code trên sẽ được hiễu đơn giản là:
Mã nguồn:[Chọn]
echo $users[1]['city'];
Ta cần lưu ý một vấn đề:
Chuyện gì sẽ sảy ra nếu một người dùng vì lí do nào đó (tò mò - phá phác..) sửa lại đường dẫn như thế này :
localhost/php-get.php?id=5 hoặc
localhost/php-get.php?id=abc
Rõ ràng trong mảng $users của chúng ta chỉ có 3 phần tử, thay khóa bằng 5 hay abc đơn giản chẳng cho ta một kết quả gì.
Điều này không hề dơn giản và trong một vài trường hợp rất ư là nguy hiểm.
Ta hãy lấy một ví dụ chương trình tính giá trị a*b (a x b) với a, b được nhập từ người dùng qua phuơng thức GET.
Mã nguồn:[Chọn]
<?php
echo$_GET['a']*$_GET['b'];
?> Để chạy chương trình tính toán, ta duyệt : localhost//php-get.php?a=3&b=5
Kết quả nhận được sẽ là 15. Bỏ bớt tham số b ra (localhost//php-get.php?a=3) kết quả bằng 0. Điều gì nguy hiểm trong trường hợp này? Bạn hãy tưởng tựợng a là số lượng mặt hàng, b là đơn giá và đây là trang dùng để bạn tính tiền. Thật không hay để một ai đó mua hàng trăm món đồ với giá 0 đồng.Để tránh việc này sảy ra, ta luôn phải kiểm tra dữ liệu từ người dùng! Và quả thật kiểm tra dữ liệu từ người dùng là công việc quan trọng bật nhất trong thiết kế web(cũng như bất kỳ phần mềm nào khác).
Ở đây mình chỉ xin trình bày cách kiểm tra xem a và b đã có giá trị hay chưa, chứ chưa tính tới việc có đúng kiểu giá trịnh hay chưa (trường hợp a,b được thay thế bằng chữ cái thì sao?)
Ta dùng hàm isset() đề kiểm tra.isset() - đọc là "is set" (tiếng anh ấy) - trà về đúng khi một biến đã được khai báo, ngược lại sai. và code kiểm tra của chúng ta như sau:
Mã nguồn:[Chọn] Mã nguồn:[Chọn]
<?php
if(isset($_GET['a']) && isset($_GET['b']))
{
echo$_GET['a']*$_GET['b'];
}else{
echo'thieu du lieu dau vao';
}
?>
Lúc này nếu thử bỏ tham số hay hoặc b ra khỏi đường dẫn thì ta sẽ nhận được cảnh báo 'thieu du lieu dau vao' thay vì số 0.
Đây chỉ là một ví dụ để các bạn thấy được nguy cơ (thật ra khi làm trang bán hàng mà tính toán như thế thì dỡ lắm) và thực chất nguy cơ này rất lớn. Cụ thể nguy hiểm như thế nào chúng ta sẽ cùng tiềm hiểu ở cuối loạt bài về php và mysql. Còn về phần kiểm tra dự liệu người dùng nhập vào,chúng ta sẽ tiếp tục ngay sau bài nói về phương thức POST (GET và POST là hai anh em, hiểu GET rồi thì POST cũng dễ nuốt hơn phần nào)
Sau đây là full code, mời các bạn xem và ngâm cứu. Mã nguồn:[Chọn]
<!DOCTYPE html>
<html id="demo-get" lang="en">
<head>
<meta charset=utf-8 />
<meta name="viewport" content="width=620" />
<title>Ví dụ phương thức GET trong PHP</title>
<head>
<body>
<table>
<tr>
<td>
<ul>
<?php
$users= array(
array('name'=>'Tuấn','gender'=>'Nam','city'=>'Hồ Chí Minh'),
array('name'=>'Dung','gender'=>'Nữ','city'=>'Hà Nội'),
array('name'=>'Trang','gender'=>'Nữ','city'=>'Huế'),);
for($i=0;$i<count($users);$i++)
{
echo'<li><a href="php-get.php?id='.$i.'">'.$users[$i]['name'].'</a></li>';
}
?>
</ul>
</td>
<td>
<?php
if(isset($_GET['id']) && isset($users[$_GET['id']]))
{
echo"Tên:".$users[$_GET['id']]['name']."<br />Giới tính:".$users[$_GET['id']]['gender']."<br />Thành phố:".$users[$_GET['id']]['city'];
}
?>
</td>
</tr>
</table>
</body>
</html>
Nghe nhạc xả láng, chơi game đã đời, nóng bỏng mắt với kho hình ảnh HOT, SHOCK, cùng nhiều tiện ích Xổ Số, Bóng Đá... bạn đã thử qua Socbay iMedia chưa?