2011-07-28 13 views
21

Tengo un formulario php como este.php forma acción php self

<form name="form1" id="mainForm" method="post"enctype="multipart/form-data" action="<?php echo $_SERVER['PHP_SELF'];?>"> 

</form 

En acción del formulario Quiero usar el nombre de la página con los parámetros. como house.php?p_id=10111. Pero $ _SERVER ['PHP_SELF'] solo da el house.php (la URL de mi página es house.php?p_id=10111 así) Por favor, ayúdame a resolver este problema. Gracias.

+1

Esto no es una URL completa. Son los parámetros url + GET. –

+1

@Alex Ackerman: Es más bien [ruta] (http://tools.ietf.org/html/rfc3986#section-3.3) más [consulta] (http://tools.ietf.org/html/rfc3986#section- 3.4). – Gumbo

+2

sí. Alex es correcto Ahora estoy usando '$ _SERVER ['PHP_SELF']."? P_id = ". $ Id' –

Respuesta

71

¿Qué tal si lo dejamos vacío, qué pasa con eso?

<form name="form1" id="mainForm" method="post" enctype="multipart/form-data" action=""> 

</form> 

Además, puede omitir el atributo de acción y funcionará como se esperaba.

+1

Gracias por esto. Creo que esta es la forma más fácil y mejor de hacer esto. –

+11

Al dejarlo vacío, rompe la validación de w3c (en caso de que le importe) – gadlol

+10

@jBaron Sí, ese es el caso en HTML5, pero puede omitir el atributo vacío 'action =" "' por completo. Validará y funcionará como se espera. – Shef

7

Dejar el valor de acción en blanco hará que el formulario vuelva a publicarse.

12

Puede dejar en blanco o acción utiliza este código:

<form name="form1" id="mainForm" method="post" enctype="multipart/form-data" action="<?php echo $_SERVER['REQUEST_URI'];?>"> 
</form> 
0

Esto es perfecto. intente esto :)

<form name="test" method="post" enctype="multipart/form-data" action="<?php echo $_SERVER['PHP_SELF']; ?>"> 
/* Html Input Fields */ 
</form> 
+1

Esto permite ataques XSS, necesita filtrar/sanatizar PHP_SELF – Chad

+0

ok lo entiendo. gracias hombre. Es útil. –

3

Puede usar un atajo de eco también en lugar de escribir "echo blah;" como se muestra a continuación:

<form method="POST" action="<?=($_SERVER['PHP_SELF'])?>"> 
+1

Esto permite ataques XSS, necesita filtrar/sanatizar PHP_SELF – Chad

1

Otro (y en mi opinión correcta) método es utilizar la constante __FILE__ si no le gusta depender de $_SERVER variables.

$parts = explode(DIRECTORY_SEPARATOR, __FILE__); 
$fileName = end($parts); 
echo $fileName; 

Constantes mágicas y predefinidos: 1, 2.