Mẫu đăng ký lạc đề php. PHP _SELF trong thuộc tính hành động của biểu mẫu

Một trong những ưu điểm chính PHP là cách nó hoạt động với các biểu mẫu HTML. Điều chính ở đây là mỗi phần tử biểu mẫu sẽ tự động có sẵn cho các chương trình PHP của bạn. Vì thông tin chi tiết về cách sử dụng các biểu mẫu trong PHP, hãy đọc phần này. Đây là một mẫu HTML mẫu:

Ví dụ 1 Hình thức đơn giản nhất HTML

Tên của bạn:

Tuổi của bạn:

Không có gì đặc biệt về hình thức này. Cái này dạng thông thường HTML không có bất kỳ thẻ đặc biệt nào. Khi người dùng điền vào biểu mẫu và nhấp vào nút gửi, trang action.php sẽ được gọi. Tệp này có thể có nội dung như:

Ví dụ #2 Hiển thị dữ liệu biểu mẫu

Xin chào, .
Bạn già rồi.

Ví dụ đầu ra của chương trình này:

Xin chào, Sergey. Bạn 30 tuổi.

Nếu bạn không tính đến các đoạn mã bằng htmlspecialchars() và (int), nguyên tắc hoạt động của mã này phải đơn giản và dễ hiểu. htmlspecialchars() đảm bảo rằng các ký tự HTML "đặc biệt" được mã hóa chính xác để HTML hoặc Javascript độc hại không được chèn vào trang của bạn. Trường tuổi mà chúng ta biết phải là một số, chúng ta có thể chỉ cần chuyển đổi thành một số nguyên, số nguyên này sẽ tự động loại bỏ các ký tự không mong muốn. PHP cũng có thể thực hiện việc này một cách tự động bằng cách sử dụng phần mở rộng bộ lọc. Các biến $_POST["name"] và $_POST["age"] được tự động đặt cho bạn sử dụng PHP. Trước đây chúng tôi đã sử dụng biến superglobal $_SERVER, nhưng ở đây chúng tôi cũng sử dụng biến superglobal $_POST, chứa tất cả dữ liệu POST. thông báo rằng phương thức gửi(phương thức) của biểu mẫu của chúng tôi là POST. Nếu chúng ta sử dụng phương pháp LẤY, thì thông tin biểu mẫu của chúng tôi sẽ nằm trong biến siêu toàn cục $_GET . Ngoài ra, bạn có thể sử dụng biến $_REQUEST nếu nguồn dữ liệu không quan trọng. Biến này chứa hỗn hợp dữ liệu GET, POST, COOKIE.

15 năm trước

Theo đặc tả HTTP, bạn nên sử dụng phương thức POST khi bạn đang sử dụng biểu mẫu để thay đổi trạng thái của nội dung nào đó ở cuối máy chủ. Ví dụ: nếu một trang có biểu mẫu cho phép người dùng thêm nhận xét của riêng họ, như thế này ở đây, biểu mẫu nên sử dụng POST. Nếu bạn nhấp vào "Tải lại" hoặc "Làm mới" trên một trang mà bạn đã truy cập thông qua POST, thì đó hầu như luôn là lỗi -- bạn không nên đăng cùng một nhận xét hai lần -- đó là lý do tại sao những trang này không được đánh dấu trang hoặc lưu vào bộ nhớ đệm.

Bạn nên sử dụng phương thức GET khi biểu mẫu của bạn đang lấy thứ gì đó ra khỏi máy chủ và không thực sự thay đổi bất cứ điều gì. Ví dụ: biểu mẫu cho công cụ tìm kiếm nên sử dụng GET, vì việc tìm kiếm trên một trang Web sẽ không thay đổi bất kỳ điều gì mà khách hàng có thể quan tâm và việc đánh dấu trang hoặc lưu vào bộ nhớ đệm các kết quả của truy vấn công cụ tìm kiếm cũng hữu ích như việc đánh dấu trang hoặc lưu vào bộ đệm một trang HTML tĩnh.

1 năm trước

Đáng làm rõ:

POST không an toàn hơn GET.

Lý do chọn GET so với POST liên quan đến nhiều yếu tố khác nhau như mục đích của yêu cầu (bạn có đang "gửi" thông tin không?), kích thước của yêu cầu (có các giới hạn về độ dài của một URL và các tham số GET được gửi trong URL) và mức độ dễ dàng mà bạn muốn Hành động có thể được chia sẻ -- Ví dụ: Tìm kiếm của Google là GET vì nó giúp bạn dễ dàng sao chép và chia sẻ truy vấn tìm kiếm với người khác chỉ bằng cách chia sẻ URL.

Bảo mật chỉ được xem xét ở đây do thực tế là GET dễ chia sẻ hơn POST. Ví dụ: bạn không muốn GET gửi mật khẩu vì người dùng có thể chia sẻ URL kết quả và vô tình để lộ mật khẩu của họ.

Tuy nhiên, GET và POST đều dễ dàng bị chặn bởi kẻ độc hại có vị trí tốt như nhau nếu bạn không triển khai TLS/SSL để bảo vệ kết nối mạng.

Tất cả các Biểu mẫu được gửi qua HTTP (thường là cổng 80) đều không an toàn và ngày nay (2017), không có nhiều lý do chính đáng để một trang web công cộng không sử dụng HTTPS (về cơ bản là HTTP + Bảo mật lớp vận chuyển).

Như một phần thưởng, nếu bạn sử dụng TLS, bạn sẽ giảm thiểu rủi ro người dùng nhận được mã (AD) được đưa vào lưu lượng truy cập mà bạn không đặt ở đó.

Hướng dẫn PHP này bao gồm các khái niệm cơ bản ngôn ngữ: xử lý biểu mẫu bằng cách gửi yêu cầu đến các trang web, cấu trúc điều khiển PHP cơ bản khi xử lý biểu mẫu, ghi dữ liệu từ Biểu mẫu PHP vào tệp, hàm ngày trong PHP date().

1. Hãy để chúng tôi nhắc bạn rằng tất cả các tệp php chỉ được kiểm tra khi Denver đang chạy và chỉ từ thanh địa chỉ trình duyệt. Chạy tập tin php nhấn đúp chuột nó bị cấm!

2. Phóng Denver.

Bài tập 1: Xử lý một biểu mẫu đơn giản

TRONG bài học này PHP hãy xem xét việc xử lý một biểu mẫu trên trang HTML, tạo các biến PHP cho các trường biểu mẫu.

1. Tạo một hình như trong Hình. 3.1. Điều này được hiểu là khi nhấn vào nút Gửi đơn hàng, dữ liệu từ biểu mẫu sẽ được chuyển đến quản trị viên và khách hàng sẽ thấy phản hồi Đơn hàng được xử lý trên màn hình. Nếu bạn cảm thấy khó viết một biểu mẫu, hãy triển khai mã bên dưới hình và lưu nó vào thư mục php_2 dưới tên forma_bob.html Chúng tôi xin nhắc bạn rằng địa chỉ của trình xử lý biểu mẫu được ghi trong thuộc tính hành động của thẻ biểu mẫu .

Hình 3.1

2. Để người dùng nhận được phản hồi sau khi gửi dữ liệu, cần tạo trình xử lý biểu mẫu trong PHP. Tạo mã bên dưới và lưu nó vào thư mục php_2 dưới dạng zakaz.php

3. Kiểm tra chức năng của trình xử lý. Để thực hiện việc này, hãy chạy tệp forma_bob.html thông qua trình duyệt bằng cách nhập thanh địa chỉđịa chỉ trình duyệt http://localhost/php_2/forma_bob.html

4. Nhập bất kỳ số nào vào các trường biểu mẫu và nhấp vào nút Gửi đơn hàng. Kết quả trong hình. 3.2.

Hình 3.2

Biến dạng

Mục đích chung của việc sử dụng mẫu đơn đặt hàng là lấy thông tin đặt hàng của khách hàng mà họ đã nhập trên bàn phím. Trong tập lệnh PHP, mỗi trường biểu mẫu có thể được truy cập dưới dạng một biến có cùng tên với trường biểu mẫu. TRONG Ngôn ngữ PHP Các biến rất dễ nhận biết vì chúng bắt đầu bằng ký hiệu đô la $.

Bạn có thể truy cập nội dung của trường tyreqty theo các cách sau:

$tireqty //kiểu ngắn

$_POST[‘tireqty’] //kiểu trung bình

$HTTP_POST_VARS['tireqty'] //kiểu dài

Chúng tôi sẽ sử dụng kiểu dài để tham chiếu các biến biểu mẫu, nhưng để dễ sử dụng, chúng tôi sẽ xây dựng các phiên bản ngắn của ứng dụng. Thật tiện lợi và cách thức an toàn thao tác dữ liệu hoạt động hiệu quả trong tất cả các hệ thống, bất kể phiên bản và cài đặt đã chọn.

Khi sao chép nội dung của biến này sang biến khác, chúng ta sử dụng toán tử gán, được biểu thị trong PHP bằng dấu bằng (=). Dòng mã sau đây tạo một biến mới có tên $tireqty và gói nội dung của $_POST['tireqty'] vào biến mới này:

$tireqty=$_POST['tireqty']

Vì tập lệnh này không tạo ra bất kỳ đầu ra nào nên việc nó được đặt ở trên hay ở dưới tệp . Thông thường khối này được đặt ở đầu tập lệnh.

5. Trong tệp zakaz.php, thay đổi mã như sau và kiểm tra chức năng của biểu mẫu. Kết quả trong hình. 3.3. Các con số có thể khác nhau tùy thuộc vào dữ liệu bạn đã nhập.

Hình 3.3

Bài tập 2: Tạo máy tính cho biểu mẫu Phụ tùng ô tô của Bob

Trong bài học PHP này chúng ta sẽ đề cập đến số học cơ bản Hàm PHP cho các tính toán.

1. Lưu file forma_bob.html với tên forma_bob_2.html

2. Lưu tệp zakaz.php dưới tên zakaz_2.php

3. Trong tệp forma_bob_2.html, thay đổi dạng “Phụ tùng ô tô từ Bob” sao cho giống như trong Hình. 3.4. Đừng quên đổi tên trình xử lý thành zakaz_2.php. Nếu bạn không biết, bạn có thể triển khai mã bên dưới.

Hình 3.4

4. Tạo một biểu mẫu xử lý mới trong tệp zakaz_2.php, sử dụng kiến ​​thức thu được từ các bài học trước. Quá trình xử lý phải chứa dữ liệu và điều kiện đầu ra sau:

1. Giá thành của mỗi sản phẩm được xác định bằng một hằng số. Một hằng số trong PHP được xác định bởi hàm định nghĩa. Ví dụ định nghĩa("POKRPRICE",10); Tham số đầu tiên của hàm là tên của hằng, được viết bằng chữ in hoa, tham số thứ hai là giá trị của hằng số.

2. Phép toán logic OR được ký hiệu là ||

3. Phép toán logic AND được ký hiệu là && .

4. Phép so sánh: lớn hơn >, nhỏ hơn< , больше или равно >= , nhỏ hơn hoặc bằng

Công tắc

Trong bài viết này, hộp kiểm là các thành phần được tạo bởi thẻ đầu vào có giá trị thông số loại là hộp kiểm. Biểu mẫu sử dụng số lượng "công tắc" thay đổi được xây dựng theo cách tương tự. Lưu ý rằng việc lựa chọn giá trị nút radio cụ thể (nghĩa là giá trị của thuộc tính giá trị) là không quan trọng. Một ví dụ được hiển thị trong danh sách dưới đây:






Tuy nhiên, việc xử lý biểu mẫu này khác với quá trình xử lý được mô tả cho các trường văn bản. TRONG trong trường hợp này cần phải xác định xem người truy cập trang web đã bật công tắc này hay công tắc kia. Nếu được bật thì phần tử mảng tương ứng sẽ tồn tại; nếu không thì phần tử đó sẽ bị thiếu. Danh sách sau đây là một ví dụ Tập lệnh PHP in ra các nút radio đã bật:

Nút radio

Trước khi mô tả quá trình xử lý các nút radio, cần phải nhớ cách chúng hoạt động. Bản chất của các nút radio (các phần tử được tạo bởi thẻ đầu vào có giá trị tham số loại bằng radio ) là khi chọn một nút, người dùng sẽ tự động bỏ chọn nút khác trong cùng một bộ. Các nút được kết hợp thành một bộ rất đơn giản: tất cả các nút trong bộ đều có cùng tên.

Nhưng các giá trị (tức là các tham số giá trị) của các nút trong bộ là khác nhau. Và giá trị của nút đã chọn cùng với tên của bộ sẽ được gửi đến trang web. Tương tự như trường hợp với Trường văn bản và các nút radio, tên của các bộ nút radio phải được định dạng như tên của các phần tử mảng trong PHP. Một ví dụ về hình thức như vậy được đưa ra trong danh sách sau:

// bộ nút đầu tiên
// bộ nút thứ hai
// bộ nút thứ ba

Xử lý các nút radio kết hợp các ý tưởng sử dụng cả trường văn bản và nút radio trong quá trình xử lý. Nếu tác giả của trang html chưa đặt giá trị mặc định và người dùng chưa chọn một nút cụ thể trong bộ nút radio thì phần tử này sẽ không có trong mảng (như đối với các công tắc).

Nếu nút này được chọn thì phần tử mảng tương ứng sẽ chứa giá trị của nó (như đối với các trường văn bản). Dưới đây là danh sách ví dụ xử lý một biểu mẫu có nhiều bộ nút radio.

Vì vậy, không có gì khó khăn để xử lý hình dạng phức tạp KHÔNG.

Một trong những chủ đề trước đã thảo luận về việc lấy dữ liệu từ một biểu mẫu. Trong chủ đề này, tôi sẽ cho bạn biết chi tiết hơn cách gửi biểu mẫu đến máy chủ một cách chính xác, cũng như xử lý biểu mẫu trong PHP.

Gửi biểu mẫu

Trường đầu vào. Các phần tử biểu mẫu phổ biến nhất là các trường đầu vào khác nhau. Chúng được tạo bằng cách sử dụng nhiều loại thẻ và thẻ. Gửi dữ liệu từ các phần tử này rất đơn giản. Thẻ có thuộc tính tên chỉ định tên của tham số. Và giá trị tham số là văn bản mà người dùng sẽ viết vào trường đầu vào. Ngoài ra, thẻ có thể có thuộc tính giá trị chỉ định giá trị mặc định. Giá trị này sẽ được gửi đến máy chủ nếu người dùng không nhập gì cả. Ví dụ: hãy tạo một biểu mẫu và thêm các trường nhập vào biểu mẫu đó:

1
2
3
4
5
6
7
8
9
10
11
12
13

Trang

lựa chọn. Dữ liệu được gửi từ thẻ như thế này: Bản thân thẻ này có thuộc tính tên. Và thuộc tính giá trị không có trên thẻ mà nằm trên các mục trong danh sách, tức là trên các thẻ. Thông thường, mỗi mục có giá trị thuộc tính giá trị riêng. Người dùng chọn mục nào thì giá trị tham số sẽ được lấy từ mục đó. Trong trường hợp này, văn bản trong thẻ không quan trọng, chỉ sử dụng thuộc tính. Thêm thẻ vào biểu mẫu:

12
13
14
15
16
17
18

Sở thích

Thể thao Thiên nhiên Điện ảnh Văn học

Nút radio. Tất cả các nút radio trong cùng một nhóm phải có cùng thuộc tính tên. Giá trị này không chỉ đặt tên tham số mà còn nhóm các nút radio thành một nhóm mà chỉ có thể chọn một nút radio. Thuộc tính giá trị được đặt khác nhau. Hãy thêm các nút radio vào biểu mẫu:

Hộp kiểm. Không giống như các nút radio, mỗi hộp kiểm là một thành phần biểu mẫu riêng biệt. Tất cả các hộp kiểm đều độc lập với nhau và mỗi hộp kiểm sẽ gửi dữ liệu của nó đến máy chủ. thuộc tính tên tất cả các hộp kiểm phải có một hộp kiểm khác và thuộc tính giá trị có thể giống hoặc khác nhau. Tuy nhiên, hộp kiểm không có bất kỳ dữ liệu cụ thể nào. Nó có thể được chọn hoặc không. Vì vậy, không có ích gì khi đặt nó thành một giá trị dài. Nó có thể được cung cấp một giá trị của một ký tự, ví dụ: 1. Trên máy chủ, ý nghĩa của giá trị này sẽ như sau: nếu có một giá trị thì hộp kiểm đã được chọn và nếu không có giá trị thì đó là không được chọn. Hãy thêm các hộp kiểm vào biểu mẫu và tạo nút gửi:

Xử lý dữ liệu từ biểu mẫu

Trong ví dụ được đề xuất, một biểu mẫu đã được tạo để gửi dữ liệu đến tập lệnh có tên takeform.php. Vì vậy, bạn cần tạo tập lệnh này. Đây sẽ không chỉ là một chương trình mà còn là một trang sẽ được tạo tùy thuộc vào dữ liệu nhận được từ biểu mẫu. Biểu mẫu được gửi bằng phương thức POST. Tập lệnh lấy dữ liệu này từ mảng siêu toàn cầu $_POST. Các phần tử mảng có thể được sử dụng đơn giản trong một tập lệnh, nhưng nếu bạn cần làm việc với chúng nhiều thì việc viết tên phần tử mỗi lần sẽ rất bất tiện. Việc ghi giá trị vào một biến và truy cập nó sẽ dễ dàng hơn. Hãy tạo một tệp takeform.php và ghi nó vào giá trị biến từ hai phần tử biểu mẫu đầu tiên:

Takeform.php:

Chúng tôi chưa thêm thuộc tính giá trị vào thẻ. Nếu bạn không nhập bất cứ thứ gì vào đó, giá trị sẽ trống. Thông thường, bạn cần kiểm tra xem người dùng đã viết gì đó vào trường nhập liệu hay chưa. Có một hàm cho việc này được gọi là rỗng(), hàm này trả về true nếu biến chứa giá trị trống và nếu không thì trả về false. Trên trang chấp nhận dữ liệu từ biểu mẫu, chúng tôi sẽ kiểm tra xem có nội dung nào được nhập vào hay không. Chúng tôi đã ghi giá trị từ nó vào biến $self và chúng tôi sẽ kiểm tra nó. Nếu nó chứa một giá trị thì chúng ta sẽ thêm một khối vào trang và đặt văn bản từ biến vào đó. Nếu biến trống thì khối sẽ không được tạo.

13
14
15
16
17

if (!empty($self)) ( echo "

Về tôi:

"; echo "".$self.""; )

lựa chọn. Văn bản từ các trường đầu vào thường được sử dụng riêng. Nó được ghi vào cơ sở dữ liệu hoặc xuất ra trang. Tuy nhiên, dữ liệu từ các phần tử biểu mẫu khác được sử dụng hơi khác một chút. Sau khi nhận được dữ liệu từ biểu mẫu, tập lệnh không hiển thị dữ liệu đó mà dựa trên đó xác định những hành động nào cần thực hiện. Hãy tạo thành một phần của trang tùy thuộc vào lựa chọn mục danh sách của người dùng:

Xin lưu ý thẻ mở đầu

Nó xuất hiện trước quá trình xử lý dữ liệu, ở dòng 19 và phần kết thúc xuất hiện ở cuối, ở dòng 28. Do đó, không chỉ mã HTML mà cả một thẻ cụ thể cũng được chia thành các phần. Đây là thực tế phổ biến.

Nút radio. Tất cả các nút radio trong cùng một nhóm đều có cùng thuộc tính giá trị. Theo đó, một phần tử của mảng $_POST được tạo cho toàn bộ nhóm. Giá trị từ nút radio mà người dùng chọn sẽ được ghi vào đó. Hãy thêm kết quả của việc chọn nút radio vào trang:

Hộp kiểm. Mỗi hộp kiểm được xử lý riêng biệt. Thông thường, một hộp kiểm không chứa dữ liệu cụ thể nên nó chỉ được kiểm tra xem nó có chứa giá trị hay không. Nếu có một giá trị thì người dùng đã chọn giá trị đó và điều này sẽ được tính đến khi xử lý dữ liệu biểu mẫu. Hãy thêm thông tin vào trang về những gì người dùng đã chọn:

Đây là cách dữ liệu từ các biểu mẫu được gửi đến máy chủ và được xử lý trong Tập lệnh PHP. Tùy thuộc vào các nhiệm vụ khác nhau, việc làm việc với các biểu mẫu được thực hiện khác nhau, nhưng dựa trên các ví dụ được đưa ra, bạn có thể dễ dàng sử dụng dữ liệu từ các biểu mẫu theo cách mình cần.

Bài viết này đi sâu vào chi tiết về cách sử dụng biến PHP _SELF.

Biến PHP _SELF là gì?

Biến PHP _SELF trả về tên và đường dẫn của tệp hiện tại (liên quan đến gốc tài liệu). Bạn có thể sử dụng biến này trong thuộc tính hành động của biểu mẫu. Ngoài ra còn có một số sắc thái mà bạn nên biết. Tất nhiên, chúng ta không thể bỏ qua những sắc thái này.

Hãy xem xét một vài ví dụ.

Echo $_SERVER["PHP_SELF"];

1) Giả sử rằng tập tin php tọa lạc tại địa chỉ sau:

Http://www.yourserver.com/form-action.php

Trong trường hợp này, biến PHP _SELF sẽ chứa:

"/form-action.php"

2) Giả sử tệp php của bạn nằm ở địa chỉ này:

Http://www.yourserver.com/dir1/form-action.php

PHP_SELF sẽ là:

"/dir1/form-action.php"

PHP _SELF trong thuộc tính hành động của biểu mẫu. Tại sao cô ấy lại cần ở đó?

Thường xuyên Biến PHP _SELF được sử dụng trong thuộc tính hành động của thẻ biểu mẫu. Thuộc tính hành động chỉ định địa chỉ mà nội dung của biểu mẫu sẽ được gửi sau khi xác nhận (người dùng nhấp vào nút có loại = "gửi"). Theo quy định, đây chính là trang mà biểu mẫu đã rời đi.

Tuy nhiên, nếu đổi tên tệp được tham chiếu theo biểu mẫu, bạn sẽ cần đổi tên tệp trong thuộc tính hành động, nếu không biểu mẫu sẽ không hoạt động.

Biến PHP _SELF sẽ giúp bạn tránh khỏi những sửa đổi không cần thiết vì địa chỉ trang sẽ được tạo tự động dựa trên tên tệp.

Giả sử bạn có một tệp biểu mẫu có tên form-action.php và bạn muốn biểu mẫu được gửi đến cùng một tệp sau khi xác nhận. Thông thường họ viết như thế này:

Nhưng bạn có thể sử dụng biến PHP _SELF thay vì form-action.php. Trong trường hợp này, mã sẽ trông như sau: