Tôi đã đưa ra một quyết tâm dễ dàng bằng cách sử dụng một hình thức đơn giản ẩn trên trang web của mình với cùng thông tin mà người dùng đã đăng nhập. Ví dụ: Nếu bạn muốn người dùng đăng nhập vào biểu mẫu này, bạn có thể thêm một cái gì đó như thế này vào biểu mẫu sau đây.
Cho đến nay tôi biết tôi là người đầu tiên ẩn biểu mẫu và gửi nó qua việc nhấp vào liên kết. Có liên kết gửi một biểu mẫu ẩn với thông tin. Sẽ không an toàn 100% nếu bạn không thích phương thức đăng nhập tự động trên trang web của mình với mật khẩu đang ngồi trên khu vực văn bản mật khẩu biểu mẫu ẩn ...
Được rồi, vì vậy đây là công việc. Hãy để nói
$hidden_forum = '
';
1 là tài khoản và $hidden_forum = '
';
2 là mật khẩu.Đầu tiên làm biểu mẫu trong tập lệnh PHP của bạn. Nếu bạn không thích HTML trong đó, hãy sử dụng dữ liệu tối thiểu và sau đó
$hidden_forum = '
';
3 trong giá trị ở dạng ẩn. Tôi chỉ sử dụng giá trị PHP và tiếng vang ở bất cứ nơi nào tôi muốn pref bên cạnh nút biểu mẫu vì bạn không thể thấy nó.Mẫu PHP để in
$hidden_forum = '
';
PHP và liên kết để gửi biểu mẫu
Forum
Forum 0.
Forum
0 liên kết với phần tử
Forum
2.Hãy nhìn vào họ một cách chi tiết.
Xây dựng một xmlhttprequest theo cách thủ công
$hidden_forum = '
';
4 là cách an toàn và đáng tin cậy nhất để thực hiện các yêu cầu HTTP. Để gửi dữ liệu biểu mẫu với $hidden_forum = '
';
4, hãy chuẩn bị dữ liệu bằng cách mã hóa URL và tuân thủ các chi tiết cụ thể của các yêu cầu dữ liệu biểu mẫu.Hãy xem xét một ví dụ:
Click Me!
Và bây giờ JavaScript:
const btn = document.querySelector['button'];
function sendData[data] {
console.log['Sending data'];
const XHR = new XMLHttpRequest[];
const urlEncodedDataPairs = [];
// Turn the data object into an array of URL-encoded key/value pairs.
for [const [name, value] of Object.entries[data]] {
urlEncodedDataPairs.push[`${encodeURIComponent[name]}=${encodeURIComponent[value]}`];
}
// Combine the pairs into a single string and replace all %-encoded spaces to
// the '+' character; matches the behavior of browser form submissions.
const urlEncodedData = urlEncodedDataPairs.join['&'].replace[/%20/g, '+'];
// Define what happens on successful data submission
XHR.addEventListener['load', [event] => {
alert['Yeah! Data sent and response loaded.'];
}];
// Define what happens in case of error
XHR.addEventListener['error', [event] => {
alert['Oops! Something went wrong.'];
}];
// Set up our request
XHR.open['POST', '//example.com/cors.php'];
// Add the required HTTP header for form data POST requests
XHR.setRequestHeader['Content-Type', 'application/x-www-form-urlencoded'];
// Finally, send our data.
XHR.send[urlEncodedData];
}
btn.addEventListener['click', [] => {
sendData[{ test: 'ok' }];
}]
Đây là kết quả trực tiếp:
Sử dụng xmlhttprequest và đối tượng formData
Xây dựng một yêu cầu HTTP bằng tay có thể là quá sức. May mắn thay, đặc tả XMLHTTPREQUEST cung cấp một cách mới hơn, đơn giản hơn để xử lý các yêu cầu dữ liệu biểu mẫu với đối tượng
Forum
0.Đối tượng
Forum
0 có thể được sử dụng để xây dựng dữ liệu biểu mẫu để truyền hoặc để lấy dữ liệu trong một yếu tố biểu mẫu để quản lý cách gửi.Sử dụng đối tượng này được chi tiết trong việc sử dụng các đối tượng FormData, nhưng đây là hai ví dụ:
Sử dụng một đối tượng formdata độc lập
Click Me!
Bạn nên quen thuộc với mẫu HTML đó. Bây giờ cho JavaScript:
const btn = document.querySelector['button'];
function sendData[data] {
const XHR = new XMLHttpRequest[];
const FD = new FormData[];
// Push our data into our FormData object
for [const [name, value] of Object.entries[data]] {
FD.append[name, value];
}
// Define what happens on successful data submission
XHR.addEventListener['load', [event] => {
alert['Yeah! Data sent and response loaded.'];
}];
// Define what happens in case of error
XHR.addEventListener['error', [event] => {
alert['Oops! Something went wrong.'];
}];
// Set up our request
XHR.open['POST', '//example.com/cors.php'];
// Send our FormData object; HTTP headers are set automatically
XHR.send[FD];
}
btn.addEventListener['click', [] => {
sendData[{ test: 'ok' }];
}];
Đây là kết quả trực tiếp:
Sử dụng xmlhttprequest và đối tượng formData
Xây dựng một yêu cầu HTTP bằng tay có thể là quá sức. May mắn thay, đặc tả XMLHTTPREQUEST cung cấp một cách mới hơn, đơn giản hơn để xử lý các yêu cầu dữ liệu biểu mẫu với đối tượng
Forum
0.Đối tượng
Forum
0 có thể được sử dụng để xây dựng dữ liệu biểu mẫu để truyền hoặc để lấy dữ liệu trong một yếu tố biểu mẫu để quản lý cách gửi.
Send me your name:
Sử dụng đối tượng này được chi tiết trong việc sử dụng các đối tượng FormData, nhưng đây là hai ví dụ:
window.addEventListener["load", [] => {
function sendData[] {
const XHR = new XMLHttpRequest[];
// Bind the FormData object and the form element
const FD = new FormData[form];
// Define what happens on successful data submission
XHR.addEventListener["load", [event] => {
alert[event.target.responseText];
}];
// Define what happens in case of error
XHR.addEventListener["error", [event] => {
alert['Oops! Something went wrong.'];
}];
// Set up our request
XHR.open["POST", "//example.com/cors.php"];
// The data sent is what the user provided in the form
XHR.send[FD];
}
// Get the form element
const form = document.getElementById["myForm"];
// Add 'submit' event handler
form.addEventListener["submit", [event] => {
event.preventDefault[];
sendData[];
}];
}];
Đây là kết quả trực tiếp:
Sử dụng xmlhttprequest và đối tượng formData
Xử lý dữ liệu nhị phân
Nếu bạn sử dụng đối tượng
Forum
0 có biểu mẫu bao gồm các tiện ích Click Me!
2, dữ liệu sẽ được xử lý tự động. Nhưng để gửi dữ liệu nhị phân bằng tay, có thêm việc phải làm.Có nhiều nguồn cho dữ liệu nhị phân, bao gồm
Click Me!
3, Click Me!
4 và WEBRTC. Thật không may, một số trình duyệt di sản không thể truy cập dữ liệu nhị phân hoặc yêu cầu các cách giải quyết phức tạp. Để tìm hiểu thêm về API Click Me!
3, hãy xem sử dụng các tệp từ các ứng dụng web.Cách gửi dữ liệu nhị phân ít phức tạp nhất là sử dụng phương pháp
Click Me!
7 của ____ 20, được thể hiện ở trên. Nếu bạn phải làm điều đó bằng tay, nó khó khăn hơn.Trong ví dụ sau, chúng tôi sử dụng API
Click Me!
3 để truy cập dữ liệu nhị phân và sau đó xây dựng yêu cầu dữ liệu biểu mẫu nhiều phần bằng tay:
text data:
file data:
Send Me!
Như bạn thấy, HTML là một
Forum
2 tiêu chuẩn. Không có gì kỳ diệu đang diễn ra. "Phép thuật" nằm trong JavaScript:$hidden_forum = '
';
0Đây là kết quả trực tiếp:
Sự kết luận
Tùy thuộc vào trình duyệt và loại dữ liệu bạn đang xử lý, việc gửi dữ liệu biểu mẫu qua JavaScript có thể dễ dàng hoặc khó khăn. Đối tượng
Forum
0 nói chung là câu trả lời và bạn có thể sử dụng polyfill cho nó trên các trình duyệt kế thừa.