Gửi dữ liệu lên trình duyệt Web bằng PHP

Để gửi dữ liệu giữa các trang HTML khác nhau (hoặc đến một trang cụ thể), có hai cách để thực hiện việc này. Bằng cách bao gồm trực tiếp các tham số trong URI, (e. g.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
0) hoặc bằng cách tạo một yêu cầu POST và gửi đến một trang. Các chi tiết của hai phương pháp này được thảo luận dưới đây

Đối số GET là đối số có thể được thêm vào như một phần của URI. ví dụ như

http://localhost/mygraph.php?id=12&start=20081223&end=20090115

PHP tự động đặt tất cả các đối số đã cho vào biến mảng "siêu toàn cầu"

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
1 dưới dạng một mảng kết hợp

Có một vài điều cần lưu ý ở đây

  • Các giá trị trong chuỗi đối số trong URI phải được mã hóa URL, điều này có thể dễ dàng thực hiện với hàm PHP

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    
    2 (
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    
    3)

  • Khi các đối số được đọc từ $_GET, phải bỏ trích dẫn bằng lệnh gọi tới

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    
    4

  • Một số trình duyệt hạn chế độ dài của URI mà chúng sẽ đọc (thường là < 2048byte), điều đó có nghĩa là có giới hạn về lượng dữ liệu có thể được gửi dưới dạng đối số URI

  • Một số trình duyệt sẽ cho phép cú pháp

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    
    5 tôi yêu cầu gửi mảng
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    
    0

Cách xác định chuỗi đối số này chủ yếu hữu ích khi

  • Các đối số là ngắn

  • Khi người dùng có thể đánh dấu một URI

  • Khi dữ liệu không nhạy cảm (vì nó có thể được nhìn thấy trong URI)

  • Khi nào biểu đồ có thể xem được bằng cách nhấp vào liên kết (thêm về điều này khi chúng ta so sánh phương thức GET với phương thức POST bên dưới)

"Cách tốt nhất" khi sử dụng phương pháp này là gửi một khóa ngắn (hoặc id) tới tập lệnh biểu đồ và chính tập lệnh biểu đồ sẽ sử dụng id này để trích xuất dữ liệu thực từ DB (hoặc tệp văn bản thuần túy). Bằng cách này, cùng một tập lệnh biểu đồ cốt lõi có thể được sử dụng trong các ngữ cảnh khác nhau để hiển thị dữ liệu mong muốn

Cảnh báo

Đây là một chủ đề khá nâng cao và nên sử dụng các phương thức khác để gửi dữ liệu tới tập lệnh trừ khi thông số kỹ thuật yêu cầu rõ ràng rằng yêu cầu POST được tạo. Hơn nữa, điều này đòi hỏi bạn phải hiểu rất rõ về các tiêu đề yêu cầu HTTP và sự khác biệt giữa phía máy chủ và phía trình duyệt, vì vậy nếu bạn không chắc chắn rằng mình có nền tảng cần thiết, chúng tôi thực sự khuyên bạn nên tránh xa phương pháp này

Hai trong số các hạn chế rõ ràng với phương thức GET là a) độ dài của dữ liệu bị hạn chế và b) dữ liệu hiển thị trực tiếp trong URI. Một cách khác để gửi dữ liệu như một phần của yêu cầu HTTP là sử dụng phương thức POST

Thật không may, điều này không dễ dàng như chỉ thực hiện một số phép thuật và sau đó chúng ta có được chức năng tương tự như với phương thức GET. Ngay cả một số tác giả cũng hiểu sai điều này trong một số sách giáo khoa PHP rất nổi bật. Thật không may, chúng ta sẽ mất quá nhiều thời gian để thảo luận về tất cả các chi tiết của tiêu đề yêu cầu HTTP (như được mô tả trong

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
1) nhưng chúng tôi sẽ giải thích những điều cơ bản nhất

Đầu tiên. hãy cho biết yêu cầu HTTP là gì

  • Yêu cầu POST HTTP được sử dụng để gửi dữ liệu đến một URI được chỉ định từ máy khách. Máy khách thường là một trình duyệt WEB nhưng cũng có thể (như chúng ta sẽ sử dụng nó) là một tập lệnh gửi yêu cầu đến cùng một máy chủ hoặc đến một máy chủ khác. Dữ liệu được mã hóa URL và chuyển vào phần thân của yêu cầu. Không có giới hạn về mặt lý thuyết về độ dài của dữ liệu

Một sự hiểu lầm phổ biến hơn nữa là có thể sử dụng phương thức PHP

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
2 để tạo một yêu cầu POST. Điều này thậm chí còn được đưa ra như một ví dụ trong các ghi chú cho phương pháp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
2 trong hướng dẫn sử dụng PHP (Xem
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
4). Cái này sai. Không thể sử dụng phương thức
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
2 để gửi tiêu đề POST. Cố gắng làm điều này cho thấy một sự hiểu lầm cơ bản về vai trò của máy chủ và máy khách

  • Phương thức

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    
    2 được sử dụng để gửi một hoặc nhiều tiêu đề từ máy chủ đến máy khách (i. e. Trình duyệt web)

  • Yêu cầu HTTP POST đi từ máy khách (i. e. trình duyệt WEB) đến máy chủ

Hình 13. 1. Đăng vs. hướng dữ liệu header()

Gửi dữ liệu lên trình duyệt Web bằng PHP

Lưu ý rằng hình ảnh được đơn giản hóa rất nhiều để giúp minh họa điểm quan trọng về hướng dữ liệu. Ví dụ: yêu cầu bài đăng được hiển thị bắt nguồn từ trình duyệt có thể bắt nguồn từ bất kỳ ứng dụng khách nào, ví dụ: một tập lệnh khác đảm nhận vai trò của ứng dụng khách

Do đó, không bao giờ có thể "mô phỏng" lệnh gọi POST bằng cách sử dụng hàm

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
2. Về cơ bản, có ba cách (chính xác) để mô phỏng yêu cầu POST như được mô tả bên dưới

Trước khi chúng tôi tiếp tục, trước tiên hãy tóm tắt lại cách sử dụng phổ biến nhất của yêu cầu POST, tôi. e. trong một lần gửi biểu mẫu HTML. Khi dữ liệu được nhập vào biểu mẫu trên trang HTML và người dùng nhấn nút "Gửi", dữ liệu từ biểu mẫu sẽ được đóng gói dưới dạng yêu cầu POST được gửi đến máy chủ tại URI được chỉ định (URI hành động). Máy chủ sẽ trả lời lại yêu cầu POST (với dữ liệu được gửi lại từ mục tiêu của yêu cầu đăng) và trình duyệt sẽ hiển thị câu trả lời trong cửa sổ thay cho trang biểu mẫu HTML gốc

Tuy nhiên, có một sự khác biệt quan trọng khi chúng tôi thực hiện việc này theo cách thủ công từ một tập lệnh (chạy trên máy chủ) so với dữ liệu gửi từ biểu mẫu ban đầu từ trình duyệt đến máy chủ. Sau khi đưa ra yêu cầu POST (xuất phát từ biểu mẫu HTML), trình duyệt sẽ tự động thay thế trang hiện tại bằng phản hồi từ yêu cầu POST dưới dạng trang "mới" (theo mặc định sử dụng cùng một cửa sổ đích như yêu cầu được tạo từ đó)

Điều này không thể thực hiện được khi gửi yêu cầu đăng bài "giả mạo" tới một trang vì chúng tôi không phải là trình duyệt. Thay vào đó, những gì chúng ta sẽ thấy trong trình duyệt là trang gửi yêu cầu POST chứ không phải mục tiêu của yêu cầu đăng. Điều tốt nhất chúng tôi có thể thực hiện là hiển thị câu trả lời nội tuyến trong trang cuộc gọi, sau đó được hiển thị trong trình duyệt

Điều này có nghĩa là không thể tạo yêu cầu POST và sau đó bằng cách nào đó hiển thị trực tiếp câu trả lời dưới dạng hình ảnh kết quả. Thay vào đó, những gì chúng tôi có thể làm là gửi dữ liệu tới tập lệnh hình ảnh (thông qua tiêu đề POST) và sau đó tập lệnh biểu đồ có thể ghi hình ảnh vào một tệp có thể truy cập được từ máy chủ

Vì vậy, để tóm tắt. Những gì chúng ta có thể làm với yêu cầu đăng là gửi dữ liệu đến tập lệnh

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
8 từ tập lệnh
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
9. Sau đó,
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
8 có thể thực thi một số câu lệnh, chẳng hạn như tạo biểu đồ và lưu trữ trên máy chủ. Hình ảnh được lưu trữ này sau đó có thể được đọc bằng tập lệnh
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
9, chẳng hạn như thông qua thẻ
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
2

Cách tạo yêu cầu POST

Về nguyên tắc, có ba cách để xây dựng một yêu cầu POST để gửi dữ liệu đến một URI được chỉ định như hình bên dưới

Sau khi chúng tôi thực hiện yêu cầu (với bất kỳ phương pháp nào trong ba phương pháp được hiển thị bên dưới), máy chủ sẽ trả lời lại bằng phản hồi do URI tạo. Phản hồi này là bất kỳ đầu ra nào được gửi bởi tập lệnh mà chúng tôi đang gửi yêu cầu của mình tới. Thông thường, đây chỉ là mã trả về cho biết yêu cầu có thành công hay không

Hãy nhớ rằng đây là các cuộc gọi được thực hiện từ tập lệnh

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
9 đang chạy trên máy chủ A đến tập lệnh
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
8 đang chạy trên máy chủ B. Không có trình duyệt nào tham gia vào các cuộc gọi này ngoài yêu cầu ban đầu để chạy
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
9. Hình bên dưới minh họa giai đoạn đầu tiên khi yêu cầu được gửi đến bên B

Hình 13. 2. Giai đoạn yêu cầu của tiêu đề POST

Gửi dữ liệu lên trình duyệt Web bằng PHP

1. Yêu cầu ban đầu được thực hiện bằng cách gọi một. tập lệnh php, e. g. http. //máy chủ cục bộ/a. php trong trình duyệt

2. Khi một. php script được thực thi, nó sẽ tạo tiêu đề POST và gọi script b. php trên máy chủ B (có thể là cùng một máy chủ). Vì trình duyệt đang hiển thị tập lệnh. php chúng tôi không bao giờ có thể thay đổi điều đó trực tiếp nhưng chúng tôi có thể hiển thị câu trả lời từ b. php trong trang được hiển thị bởi một. php

Hình 13. 3. Giai đoạn trả lời của yêu cầu POST

Gửi dữ liệu lên trình duyệt Web bằng PHP

3. các b. php trả lời trả lời bằng ví dụ linh hoạt lặp lại mã trả lời

4. Tập lệnh chạy trình duyệt nhận dữ liệu cuối cùng của nó (là phản hồi từ b. php) và sau đó hoàn thành yêu cầu ban đầu đã bắt đầu ở bước 1

Ghi chú. Tất cả các phương pháp

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
6 bên dưới đều giả định rằng dữ liệu đã được mã hóa url

  1. Tạo yêu cầu phát trực tuyến

    Ưu điểm của phương pháp này là nó có sẵn theo mặc định trong PHP >= 4. 3 và tất nhiên là trong PHP5,6 mà không cần cài thêm thư viện

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    

  2. Mở một ổ cắm trực tiếp và ghi vào nó

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    

  3. Sử dụng CURL để xử lý tất cả các chi tiết cần thiết

    lưu ý 1. Điều này yêu cầu các thư viện cuộn tròn được cài đặt và cuộn tròn đó được bật trong cài đặt PHP

    Lưu ý 2. Tùy thuộc vào ứng dụng, có thể có nhiều tùy chọn khác cần được điều chỉnh. Cái được sử dụng dưới đây chỉ là những thứ cần thiết

    lưu ý 3. Sử dụng CURL là cách chung nhất để xử lý các yêu cầu POST và đơn giản hóa sự phức tạp bổ sung nếu chúng tôi muốn thêm mã hóa (i. e. HTTPS) trong xử lý kết nối

    Làm cách nào để gửi dữ liệu tới trình duyệt web bằng PHP?

    Đang gửi dữ liệu tới trình duyệt .
    Mở đầu tiên của bạn. php trong trình soạn thảo văn bản của bạn, nếu nó chưa có
    Đặt con trỏ của bạn giữa các thẻ PHP (
    Trên dòng mới, gõ phpinfo();
    Thay đổi tiêu đề của trang bằng cách thay First bằng Test trong dòng 3 của HTML (Script 1. 2). .
    Lưu tập lệnh của bạn dưới dạng thử nghiệm

    Cái nào được sử dụng để gửi dữ liệu đến trình duyệt web?

    Câu trả lời đúng là HTTP. Giao thức được sử dụng giữa máy chủ web và trình duyệt web để truyền các trang HTML được gọi là HTTP. Giao thức truyền tải siêu văn bản (HTTP) là một giao thức lớp ứng dụng trong mô hình bộ giao thức Internet dành cho các hệ thống thông tin siêu phương tiện, cộng tác, phân tán.

    PHP có thực thi trong trình duyệt không?

    PHP không phải là một phần của trình duyệt của bạn . Và đây là nơi mọi thứ thay đổi từ góc nhìn thế giới đơn giản, lấy trình duyệt làm trung tâm. Khi bạn tải xuống một trình duyệt web, bạn sẽ nhận được HTML, CSS và JavaScript, nhưng bạn không nhận được PHP. Các tập lệnh PHP—mà bạn sắp viết—phải được thông dịch bởi chương trình thông dịch PHP, được gọi là php.

    Tại sao tệp PHP của tôi không mở trong trình duyệt?

    PHP không được cài đặt đúng cách trên hệ thống của bạn hoặc máy chủ không được cài đặt đúng cách . Mô-đun PHP không được tải trong apache của bạn. Bạn đã không đặt tập lệnh của mình ở đúng nơi. Đặt các tệp của bạn vào /XAMPP/htdocs và sau đó trỏ trình duyệt của bạn tới. http. // localhost/my_php_script. php.