2011-04-20 50 views
5

¿Está bien o es correcto poner un parámetro url get en una acción de formulario?agregar parámetros de URL a un formulario 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> 

Cuando envíe el formulario de la URL se cambia a:

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

prefiero la URL para leer

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

¿Sería posible para añadir un campo oculto en la forma

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

si esa es la forma en que lo haría (campos ocultos). su mejor práctica es utilizar publicaciones al consultar y obtener (que usas) cuando sabes exactamente qué se está solicitando, como cuando se usan variables para navegación, entonces los malhechores encuentran que es un poco más difícil manipular el ect de consulta –

+0

@Lawrence, hay absolutamente no hay diferencia entre GET y POST desde un punto de vista de seguridad. Ambos son igualmente texto plano. GET se usa generalmente para solicitudes (como, por ejemplo, consígame este documento con ID 5) y POST generalmente se usa para cualquier cosa que requiera más de unos cientos de bytes de datos (a veces GET se trunca) o cuando se envían datos para su procesamiento. – Brad

+0

sí, no es que noté ninguna diferencia, pero suelo usar publicaciones cuando uso los métodos de jquery ajax. Gracias por la entrada chicos – goingsideways

Respuesta

14

En mi opinión usted sh debería agregarlos como campos ocultos. No hay ningún punto para tratar de pasar parametros si puede hacerlo a través de campo de formulario oculto

usar que:

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

A no ve ninguna razón por la que no puede o no debe hacerlo de esa manera. Mi método preferido de manejarlo sin embargo sería:

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

El par nombre/valor de DO/búsqueda pasa a través del botón de prensa, y si se desea crear varias acciones en un formulario a continuación, puede tener diferentes valores para cada botón de envío, manejando el formulario de múltiples maneras.

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

Alternativamente, puede utilizar un caso de construcción:

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

normalmente uso post mí mismo, pero estoy seguro de get funcionaría de la misma manera. Espero que responda tu pregunta.

2

Creo que igual que Teodor, no debería haber ninguna razón para no enviar la variable como un campo oculto. Pero en caso de que tenga una buena razón para hacer eso ... ¿Ha intentado añadir un & al final de la url:

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

FWIW, al agregar y al final de la URL de la animación no ayuda a mantener los parámetros en la URL de la acción. –

Cuestiones relacionadas