2011-04-20 37 views
5

Việc đặt url có được tham số trong một hành động biểu mẫu không chính xác hay không?thêm thông số URL vào biểu mẫu HTML HTML

<form method='get' action='index.php?do=search'> 
    <input name='_search' type='text' value='What are you looking for?'> 
    <button type='submit'> Search </button> 
</form> 

Khi tôi gửi biểu mẫu URL được thay đổi thành:

index.php?_search=What are you looking for? (I've stripped %20) 

Tôi muốn URL để đọc

index.php?do=search&_search=What are you looking for? 

Nó sẽ là tốt nhất để thêm một lĩnh vực ẩn vào biểu mẫu

<input type='hidden' name='do' value='search' /> 
+0

yes thats cách bạn làm điều đó (trường ẩn). thực hành tốt nhất của nó để sử dụng bài đăng khi truy vấn và nhận (mà bạn đang sử dụng) khi bạn biết chính xác những gì được yêu cầu như khi sử dụng các biến cho điều hướng ect thì ác do'ers tìm thấy nó lil bit khó hơn để thao tác truy vấn của ect –

+0

@Lawrence, có hoàn toàn không có sự khác biệt giữa GET và POST từ quan điểm bảo mật. Cả hai đều là văn bản thuần túy. GET thường được sử dụng cho các yêu cầu (ví dụ, lấy cho tôi tài liệu này với ID 5) và POST thường được sử dụng cho bất kỳ thứ gì đòi hỏi nhiều hơn vài trăm byte dữ liệu (đôi khi GET bị cắt bớt) hoặc khi gửi dữ liệu để xử lý. – Brad

+0

vâng tôi không phải là tôi nhận thấy bất kỳ sự khác biệt nhưng tôi thường sử dụng bài khi sử dụng phương pháp jquery ajax. THanks cho những kẻ đầu vào – goingsideways

Trả lời

14

Theo tôi, bạn sh có thể thêm chúng dưới dạng các trường ẩn. Không có điểm để cố gắng vượt qua params nếu bạn có thể làm điều đó thông qua lĩnh vực biểu mẫu ẩn

sử dụng rằng:

<input type='hidden' name='do' value='search' /> 
3

Một không thấy bất cứ lý do tại sao bạn không thể hoặc không nên làm điều đó theo cách đó. phương pháp ưa thích của tôi xử lý nó tuy nhiên sẽ là:

<form method='get' action='index.php'> 
    <input name='_search' type='text' value='What are you looking for?' /> 
    <submit name='do' value='Search'> 
</form> 

Tên/cặp giá trị của việc phải làm/tìm kiếm được thông qua thông qua nút bấm, và nếu bạn muốn tạo ra nhiều hành động trên một hình thức sau đó bạn có thể có giá trị khác nhau cho mỗi nút gửi, xử lý biểu mẫu theo nhiều cách.

if ($_GET['do'] == "Search") { 
... do Search ... 
} else if ($_GET['do'] == "Foo") { 
... do Foo ... 
} else if ($_GET['do'] == "Bar") { 
... do Bar ... 
} 

cách khác bạn có thể sử dụng một cấu trúc trường hợp:

switch($_GET['do']) { 
    case "Search": 
     ... do Search ... 
    case "Foo": 
     ... do Foo ... 
     break; 
    case "Bar": 
     ... do Bar ... 
     break; 
} 

Tôi thường sử dụng post bản thân mình, nhưng tôi chắc chắn get sẽ làm việc cùng một cách. Hy vọng rằng câu trả lời câu hỏi của bạn.

2

Tôi nghĩ tương tự như Teodor, không có lý do gì để không gửi biến dưới dạng trường ẩn. Nhưng trong trường hợp bạn có lý do chính đáng để làm điều đó ... Bạn đã thử thêm một số & vào cuối url:

<form method='get' action='index.php?do=search&'> 
+1

FWIW, thêm vào cuối URL acion không giúp giữ các thông số trong URL hành động. –

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