2011-04-20 13 views
5

Czy można poprawnie wpisać parametr url w akcji formularza?dodawanie parametrów adresu URL do formularza PHP 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> 

Kiedy przesłać formularz URL zmienia się na:

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

wolałbym URL czytać

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

byłoby najlepiej, aby dodać ukryte pole do formularz

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

tak to jest to w jaki sposób to zrobić (ukrytych pól). jego najlepsza praktyka do używania postu podczas odpytywania i pobierania (które używasz), kiedy wiesz dokładnie, co jest żądane, jak przy używaniu zmiennych do nawigacji ect, wtedy złe do'erowie uważają, że trochę trudniej manipulować zapytaniem ect –

+0

@ Lawrence, jest absolutnie nie ma różnicy między GET i POST z punktu widzenia bezpieczeństwa. Oba są równie proste. Metoda GET jest zwykle używana dla żądań (takich jak otrzymanie tego dokumentu o identyfikatorze 5), a POST jest zwykle używany do wszystkiego, co wymaga więcej niż kilkuset bajtów danych (czasami GET jest przycinany) lub podczas przesyłania danych do przetwarzania. – Brad

+0

Tak, nie zauważyłem żadnej różnicy, ale zwykle używam posta, gdy używam jquery ajax methods. Dzięki za wejście chłopaki – goingsideways

Odpowiedz

14

Moim zdaniem, ty może dodać je jako ukryte pola. Nie ma sensu, aby spróbować przekazać params jeśli można to zrobić za pomocą ukrytego pola formularza

wykorzystanie że:

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

A Nie widzę żadnego powodu, dlaczego nie mogą lub nie powinny robić w ten sposób. Mój ulubiony sposób obchodzenia się z nim jednak byłoby:

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

Nazwa pair/wartość DO/poszukiwania przepuszcza się przez naciśnięcia przycisku, a jeśli chcesz utworzyć wiele działań na formularzu można następnie mają różne wartości dla każdego przycisku przesyłania, obsługa formularza na wiele sposobów.

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

alternatywnie można użyć przypadku konstrukt:

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

normalnie używam post siebie, ale jestem pewien get będzie działać w ten sam sposób. Mam nadzieję, że odpowiada na twoje pytanie.

2

Myślę, że tak samo jak Teodor, nie powinno być powodu, aby nie przesyłać zmiennej jako ukrytego pola. Jednak w przypadku gdy masz dobry powód ku temu, że ... Czy próbowałeś dodanie & na końcu adresu URL:

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

FWIW, dodawanie i na końcu adresu URL acion nie pomaga zachować parametrów w adresie URL akcji. –

Powiązane problemy