2010-08-05 33 views
45

Có cách nào để đặt $_POST['var'] mà không sử dụng trường liên quan đến biểu mẫu (không có loại = 'ẩn') và chỉ sử dụng PHP. Một cái gì đó nhưĐặt biến POST mà không sử dụng biểu mẫu

$_POST['name'] = "Denniss"; 

Có cách nào để làm điều này không?

CHỈNH SỬA: Có người đã hỏi tôi về một số giải thích về điều này. Ví dụ: tôi có trang có biểu mẫu trên đó, Biểu mẫu có dạng như sau:

<form method='post' action='next.php'> 
<input type='text' name='text' value='' /> 
<input type='submit' name='submit' value='Submit'/> 
</form> 

Khi nút gửi được nhấp, tôi muốn được chuyển hướng đến next.php. Có cách nào để tôi đặt biến $ _POST ['text'] thành một giá trị khác không? Làm thế nào để làm cho điều này liên tục để khi tôi nhấp vào nút gửi khác (ví dụ) $ _POST ['text'] sẽ là những gì tôi đặt trên next.php mà không cần sử dụng một trường ẩn.

Hãy cho tôi biết nếu điều này vẫn chưa rõ ràng và cảm ơn sự giúp đỡ của bạn.

+3

Bạn có nghĩa là trong mã máy chủ hoặc từ phía máy khách khi người dùng truy cập một số trang? –

+2

Bạn có thể xây dựng những gì bạn đang cố gắng làm không? cURL có thể là một tùy chọn, các phiên có thể là một tùy chọn khác. Quá mơ hồ để đưa ra câu trả lời chính xác. –

+0

Cái gì? Và tại sao bạn không muốn sử dụng một lĩnh vực ẩn? Đó là những gì họ đang cho. –

Trả lời

64

Vâng, chỉ cần đặt nó vào giá trị khác:

$_POST['text'] = 'another value'; 

này sẽ ghi đè giá trị trước đó tương ứng với text khóa của mảng. $_POST là superglobal mảng kết hợp và bạn có thể thay đổi các giá trị như một mảng PHP thông thường PHP.

Thận trọng: Thay đổi này chỉ hiển thị trong cùng phạm vi thực thi PHP. Khi quá trình thực hiện hoàn tất và trang đã tải, mảng $_POST sẽ bị xóa. Việc gửi biểu mẫu mới sẽ tạo một mảng $_POST mới.

Nếu bạn muốn duy trì giá trị trong quá trình gửi biểu mẫu, bạn sẽ cần đặt giá trị đó dưới dạng thuộc tính input của thẻ value hoặc truy lục thuộc tính từ cửa hàng dữ liệu.

+0

và điều này sẽ ở lại khi tôi nhấp vào nút gửi khác mà không đặt nó vào một trường ẩn? – denniss

+0

@denniss: Nó sẽ ghi đè lên lần nữa nếu một trường được đặt tên là 'văn bản' khi bạn gửi biểu mẫu. Tại sao không sử dụng một phiên có thể nếu bạn muốn bảo tồn một giá trị nhất định. – Sarfraz

+0

true, tôi chỉ muốn biết nếu có một cách để làm điều đó với POST – denniss

2

bạn có thể làm điều đó bằng ajax hoặc bằng cách gửi header http + nội dung như:

POST /xyz.php HTTP/1.1 
Host: www.mysite.com 
User-Agent: Mozilla/4.0 
Content-Length: 27 
Content-Type: application/x-www-form-urlencoded 

userid=joe&password=guessme 
+0

làm cách nào để bạn "echo" dữ liệu userid = joe & password = guessme? – Sydwell

+1

'parse_str (file_get_contents ('php: // input'));' – stillstanding

+0

Điều này khá thú vị. Dường như điều này có thể được sử dụng như là một thay thế cho CURL để đặt giá trị được đăng. Tôi có đúng không? – Sydwell

6

Nếu bạn muốn thiết lập $ _POST [ 'text'] để giá trị khác, tại sao không sử dụng:

$_POST['text'] = $var; 

trên next.php?

+1

Câu trả lời cho "tại sao không sử dụng" được cung cấp chính xác bởi \t @deceze (với ngoại lệ có thể là kiểm tra đơn vị cấp thấp được giải thích bởi @ Nathan Arthur). Đừng "thay đổi" $ _POST và sau đó tự hỏi tại sao thay đổi của bạn đã biến mất trong bối cảnh biểu mẫu tiếp theo. –

1

Bạn có thể làm điều đó bằng cách sử dụng jQuery. Ví dụ:

<script src="https://code.jquery.com/jquery-1.11.2.min.js"></script> 

<script> 
    $.ajax({ 
     url : "next.php", 
     type: "POST", 
     data : "name=Denniss", 
     success: function(data) 
     { 
      //data - response from server 
      $('#response_div').html(data); 
     } 
    }); 
</script> 
+5

Bạn có thể, nếu bạn đủ quan tâm, hãy có một trang web để hát một bài hát Billy Joel trong jQuery, nhưng nó không có nghĩa đó là cách tốt nhất hoặc thanh lịch nhất để làm điều đó. jQuery là tuyệt vời, nhưng tiếc là nó cung cấp cho thế giới chưa một trăm cách để lạm dụng JavaScript. EDIT: câu hỏi ban đầu được hỏi "Có cách nào để đặt $ _POST ['var'] mà không sử dụng trường liên quan đến biểu mẫu (không có loại = 'ẩn') và chỉ sử dụng PHP" Nó không hỏi "là có một cách khác để làm điều gì đó trong jQuery có thể được thực hiện tốt hơn các cách khác " –

+1

@ WebelITAustralia-upvoter savage af –

Các vấn đề liên quan