PDA

View Full Version : xin hỏi về phương thức post và get trong php



neverstop
21-08-2006, 15:04
tuy có đọc sách nói về các phương thức này nhưng ko hiểu lắm nên mới hỏi 1 câu như vậy. mong mọi người giải thích rõ giúp mình với, mình vẫn ko phân biệt đc sự khác nhau giữa chúng.
có 1 ý này nữa, mình đọc 1 bài mẫu, khi lấy các thông tin từ form gửi đến thì dùng mảng $_POST["tên"] để lấy giá trị, nhưng cũng có 1 bài lại kiểm tra giá trị của nút Submit này được nhấn hay ko (trong trường hợp có nhiều nút submit chẳng hạn) thì lại dùng isset($_GET["tên nút submit"]). như vậy nghĩa là sao ạ?

phamduyvt
21-08-2006, 15:09
hàm isset kiểm tra có khai báo biến hay chưa
exam: if(!isset($name)) echo "name is empty";

neverstop
22-08-2006, 03:19
như vậy thì cả get và post đều dùng để gửi dữ liệu, chỉ có điều là post thì không cho phép nhìn thấy dữ liệu trên url, còn get thì cho phép nhìn thấy, hơn nữa còn có thể thay đổi url để gửi nữa.
mình nói như vậy có phải không nhỉ?
bọn họ lấy tên post với get làm mình cứ nghĩ 1 cái là lấy, 1 cái là gửi, cứ rối tung cả lên.

dungdeveloper
22-08-2006, 08:14
hàm isset kiểm tra có khai báo biến hay chưa
exam: if(!isset($name)) echo "name is empty";

Hàm isset không phải để kiểm tra có khai báo biến hay chưa đâu bạn ơi. Xem thêm ở đây nhé : http://www.php.net/manual/en/types.comparisons.php

amida
22-08-2006, 08:26
http://www.php.net/manual/en/function.isset.php
Không phải kiểm tra khai báo thì làm gì nhỉ :). That is, returns TRUE if var exists, FALSE otherwise.

nkkha
22-08-2006, 20:45
theo tui thì như sau. Giả sử ta có mã:
$truong = $_POST['ten']
khi server thực hiện, nó sẽ lấy dữ liệu tại TextBox ten, dữ liệu dạng Text được truyền vào biến $truong.

$submit1 = $_GET['ten_submit'];
khi server xử lý, nó sẽ trả về 1 (true) cho biến $submit1, để xử lý theo yêu cầu. Và các biến khác (các nút submit khác) sẽ trả về giá trị 0 (false). Như vậy tùy theo nút submit bạn nhấp vào mà server sẽ chuyển đến một yêu cầu (request) khác nhau...

neverstop
22-08-2006, 21:10
ừ, phương thức post mình cũng nghĩ như thế, cụ thể hơn thì thế này: khi nhập xong dữ liệu và gửi đi thì server sẽ lấy thông tin ở các thẻ trong form thông qua mảng $_POST[].
còn về phương thức get, server cũng lấy thông tin ở các thẻ trong form được, chỉ có điều dùng mảng $_GET[] thôi. ngoài ra ở phương thức get trình duyệt có thể gửi thông tin đến server mà ko cần qua các thẻ trong form mà qua trực tiếp url trên trình duyệt.

mình nghĩ vậy có đúng ko nhỉ? còn có điểm nào thiếu sót mong các bạn giúp đỡ. xin cảm ơn.

chimtrum
23-08-2006, 16:04
Hạn chế của phương thức GET là chuỗi query bị hạn chế về chiều dài (bao nhiêu thì không nhớ rõ lắm).còn POST thì không.

nbminh
23-08-2006, 17:17
Tại server, việc lấy thông tin của biến trên form thông qua $_GET hay $_POST tùy thuộc vào thuộc tính method của form.

<form action="" method="GET">
Dữ liệu sẽ được gửi lên server qua phương thức GET. Biến và giá trị của biến sẽ được gửi lên server thông qua URL. Người dùng có thể nhìn thấy tên biến và giá trị của biến đó trên URL. Có thể sửa bằng tay được tên biến và giá trị. Tại server mảng $_GET sẽ chứa các biến của form.

<form action="" method="POST">
Dữ liệu sẽ được gửi lên server qua phương thức POST. Tại server mảng $_POST sẽ chứa các biến của form.

neverstop
23-08-2006, 20:00
cám ơn các bạn đã trả lời giúp mình.

girl_dethuong
23-09-2009, 15:46
Mình cũng ko hỉu lém về phương thức POST và GET. Đọc xong các góp ý của các bạn, mình hiểu thêm được một ít òi. Thanks các bạn nha!
Have a nce day!!!

Scripted
23-09-2009, 22:43
nếu bạn sử dụng $_REQUEST thì nó lấy được cả 2 !!

thuyduongcd
29-09-2009, 10:35
Nói chung cả hai đều dùng để truyền biến (tạm gọi là vậy) qua trang nhận action.
Với GET: tất cả bao nhiêu biến đều có tên trên URL

VD: http://yourdomian/index.php?var1=abc&var2=xyz
Ưu điểm: Dễ bookmark nếu cần. Và nếu muốn thực hiện thì chỉ cần gõ lại URL kia là có thể thực hiện được. Không cần thông qua form.
Nhược điểm: Giới hạn số ký tự tối đa là 1024 ký tự.

Với POST: các biến chỉ được send qua header, không thấy được tên biến trong URL
Ưu điểm & nhược điểm: ngược lại với GET.

Ứng dụng:
GET thường dùng khi trang đó có thể cho người dùng bookmark hoặc hiển thị một cách "tường minh".

VD: http://yourdomain/music.php?category=3&page=2
Trang này thường dùng liệt kê danh sách những bài nhạc có thể loại là 3 và liệt kê ở trang 2 (nếu có nhiều trang)

POST thường dùng với các form chứa dữ liệu "nhạy cảm" (như password chẳng hạn, chẳng ai dùng index.php?username=abc&password=xyz) hoặc những form field có nhiều ký tự (post bài chẳng hạn)

phuongthom
03-10-2009, 01:17
Bình thường thì khi post hay get thì sẽ tự động thêm dấu \ (slash) vào các ký tự \,",'
vậy có khi nào mà php ko tự thêm slash vào ko, hình như chế độ này chỉnh trong cấu hình php được :-?

thuyduongcd
03-10-2009, 10:05
Cái hình như đó là cái này đây:

magic_quotes_gpc on/off
Nếu set on thì tự động thêm, off thì ngược lại.

Nhưng từ PHP 6.0.0 trở đi không còn xài cái này được nữa rồi. Tự làm thôi :(