Algunas veces necesitamos usar las variables que nos llegan por GET o POST y necesitamos listarlas todas. O, en mi caso, cuando se hace la actualización de php 4 a php 5 algunas aplicaciones dejan de trabajar porque no tienen declaradas correctamente las variables . Por eso hice este sencillo script que aprovecha que las variables GET y POST vienen en un array y las declara con sus respectivos nombres y valores.
Código :
<? /***VARIABLES POR GET ***/ $numero = count($_GET); $tags = array_keys($_GET);// obtiene los nombres de las varibles $valores = array_values($_GET);// obtiene los valores de las varibles // crea las variables y les asigna el valor for($i=0;$i<$numero;$i++){ $$tags[$i]=$valores[$i]; } /***VARIABLES POR POST ***/ $numero2 = count($_POST); $tags2 = array_keys($_POST); // obtiene los nombres de las varibles $valores2 = array_values($_POST);// obtiene los valores de las varibles // crea las variables y les asigna el valor for($i=0;$i<$numero2;$i++){ $$tags2[$i]=$valores2[$i]; } /* ahora solo hay que llamar las variables por su nombre ej: http://misitio.com/estearchivo.php?usuario=cristalab&password=sangre para verlas solo pones la variable por su nombre echo "nombre de usuario: ".$usuario."<br> password: ".$password; en vez de usar $_GET['usuario'] y $_GET['password'] */ ?>
Nota informativa:
PHP4 trabajaba por defecto el parametro register_globals="on" lo que significa que cuando usabas una variable por GET o POST solo la invocabas (ej: para mostrar la variable $usuario de un formulario solo ponias echo $usuario;).
PHP5 por el contrario usa el parametro register_globals="off" por defecto, como una medida de seguridad y eficiencia del codigo [ mas info ] (ej: para mostrar la variable $usuario de un formulario debes poner echo $_POST['usuario']; ).
A pesar de los beneficios de este cambio, muchos scripts antiguos no toman en cuenta este asunto y pueden dejar de funcionar, para esos casos , ( y para que no te pase siquiera por la cabeza poner de nuevo register_globals en "on" !! ) es este script.
¿Sabes SQL? ¿No-SQL? Aprende MySQL, PostgreSQL, MongoDB, Redis y más con el Curso Profesional de Bases de Datos que empieza el martes, en vivo.
Por Antonio el 01 de Diciembre de 2006
En el script basta con usar $_REQUEST para usar indistintamente variables $_POST y $_GET y no duplicar el algoritmo.
Por Freddie el 01 de Diciembre de 2006
Antonio_blog :
Por Capt.Mahou el 01 de Diciembre de 2006
Por Freddie el 01 de Diciembre de 2006
Capt.Mahou_blog :
Con globals en on era facil hacer pasar una variable post por get o peor aun, una variable interna del sistema usando get. Ahora mismo, el problema más comun en la programación PHP es SQL Injection. Pero eso es de todos los lenguajes.
Por Antonio el 01 de Diciembre de 2006
Por Capt.Mahou el 01 de Diciembre de 2006
if (!empty($_GET)) extract($_GET);
if (!empty($_POST)) extract($_POST);
if (!empty($_SERVER)) extract($_SERVER);
Por Otaku_ RzO el 01 de Diciembre de 2006
Ahora con estas notas me haces la vida más fácil.
Se agradece el aporte.
Por John (Clab) el 01 de Diciembre de 2006
Capt.Mahou :
if (!empty($_GET)) extract($_GET);
if (!empty($_POST)) extract($_POST);
if (!empty($_SERVER)) extract($_SERVER)
Por Max el 01 de Diciembre de 2006
php.net :
mas info acerca de SQL inyection, en los comentarios de ese post
PD: No es
spamPor Maikel el 02 de Diciembre de 2006
Y para evitar la inyección a sql, lo mejor es validar todos los datos que vengan del cliente $_GET o $_POST con funciones basadas en regexp (olvidandote de is_numeric y demas) y estos los vaya a usar en una sentencia sql.
En fin, buen tip. Aunque en lo personal no me gusta registrar las variables globales.
Por Max el 02 de Diciembre de 2006
Por Maikel el 02 de Diciembre de 2006
Por Cesar el 15 de Diciembre de 2006
Por Sisco el 15 de Diciembre de 2006
Alguien ha tenido problemas de sesiones con firefox?
En una tienda (oscommerce) me ocurre que paso unas variables al sistema seguro del banco cambiando de url, cuando el banco me devuelve las variables y retorna a mi url se pierden la sesión y las variables. En IE no ocurre, y realiza el pedido con los datos asignados correctamente.
Por Sisco el 15 de Diciembre de 2006
Sisco :
Alguien ha tenido problemas de sesiones con firefox?
En una tienda (oscommerce) me ocurre que paso unas variables al sistema seguro del banco cambiando de url, cuando el banco me devuelve las variables y retorna a mi url se pierden la sesión y las variables. En IE no ocurre, y realiza el pedido con los datos asignados correctamente.
Quizás esto no va aquí... mejor en php, perdón...
Por JAZS el 06 de Enero de 2007
Por Pedro el 11 de Enero de 2007
Sisco :
Sisco :
Alguien ha tenido problemas de sesiones con firefox?
En una tienda (oscommerce) me ocurre que paso unas variables al sistema seguro del banco cambiando de url, cuando el banco me devuelve las variables y retorna a mi url se pierden la sesión y las variables. En IE no ocurre, y realiza el pedido con los datos asignados correctamente.
Quizás esto no va aquí... mejor en php, perdón...
Pues mira, núnca he usado oscommerce, pero en los sitios que he hecho con pagos en línea, hago que todos los enlaces enviados y devueltos sean seguros, así me evito problemas. El asunto, es que -como todo enlatado- oscommerce tiene sus reglas para la devolución o redirección de ejecución de archivos externos.
Por alguien el 09 de Marzo de 2007
tomen en cuenta que esta "tomando" literalmente hablando TODOS los valores que le pasen por get y post...pequeña atrocidad!!
Por Iván el 23 de Marzo de 2007
Tengo problemas al enviar una varible POST me dice este mensaje:Notice: Undefined index: txt_name in C:\www\prueba.php on line 6.....todo lo demás funciona pero estoy enviando a grabare en la base datos mysql y sale este error.
Por favor si alguien me puede ayudar
Por *Rogelio el 21 de Abril de 2007
O ¿hay forma de enviar solo, ciertas variables por POST/GET?
Por None el 02 de Junio de 2007
Por Dan el 29 de Junio de 2007
1.- si deshabilito register_globals en el servidor y luego uso la funcion import_request_variables en la web estoy en las mismas o es más seguro así?
2.- Que es mejor usar?:
Código :
o:
Código :
Por llyha el 21 de Julio de 2007
include("conecta.php");
?>
<form action="procedimiento.php" method="post" name="frmproce">
<center><h2><font face="arial">Procedimientos de Estado</font></h2></center><br>
<center><table cellpadding="5">
<tr>
<td><font face="arial">Código:</font>
</td><? if (isset($_POST["BUSCAR"])) {
$_POST["recopro"] = "SELECT * FROM procedimiento WHERE cod_procedimiento =". $_POST["ncopro"];
$_POST["recopros"] = mysql_query($_POST["recopro"],$_POST["enlace"]);
if ($_POST["ncopros"] = mysql_fetch_array($_POST["recopros"])){
echo $_POST["ncopros"]["cod_procedimiento"];
echo $_POST["ncopros"]["nom_procedimiento"];
}
?>
<td colspan="2"><input type="text" name="vcoproce" value="<? echo $_POST["ncopros"]["cod_procedimiento"]; ?>" onKeyPress = "fl_SoloNumeros()">
</td>
</tr>
<tr>
<td><font face="arial">Nombre:</font>
<td colspan="2"><input type="text" name="vnompro" value="<? echo $_POST["ncopros"]["nom_procedimiento"]; }?>">
</td>
</tr>
<tr>...
Por llyha el 21 de Julio de 2007
Agradezco todo la ayuda posible.
Por cristian andres (col el 07 de Septiembre de 2007
<<a href='cambiarpractica.php?idd=".$result['id_practica']."'><input type='button' value='MODIFICAR' /></a>
y funciona muy bien en firefox pero en explorer no "ALGUIEN PUEDE AYUDARME"
Por Luis el 01 de Octubre de 2007
Por pepe el toro el 01 de Octubre de 2007
yo no lo mate
torito!!!!!!!!!!!!!!
Por elias el 01 de Octubre de 2007
Por Rodolfo el 01 de Noviembre de 2007
Por Miguel el 21 de Noviembre de 2007
Por ismael el 01 de Julio de 2008
Por susan el 06 de Agosto de 2008
una pregunta a cerca de las variables GET y POST...
yo necesito regresar el valor de esas variables a otro formulario...
pero como podria mandarlas por http si no se aceptan variables php en el enlace?..
por que el valor de la variable es otra variable!
Por Israel el 10 de Septiembre de 2008
vusuario1 = 1
vusuario2 = 2
vinternosum = 4
de las cuales, solamente las dos primeras forman parte de los valores que yo espero obtener de un formulario, y la tercera lleva el mismo nombre que una variable que se utiliza internamente en el código que procesa la información, que es el siguiente:
<?php
include("extraerVariablesHttp.php"); // Incluimos el código que expone este Tip
// Realizo una operación con los datos enviados por el usuario
if(($vusuario1 + $vusuario2) > 3){
// Obsérvese que si la condición no se cumple, nosotros esperamos que la variable
// $vinternosum permanezca sin inicializar, pero ya trae un valor porque lo cargamos
// con el código que expone el tip!!
$vinternosum = $vusuario1 + $vusuario2;
}
// Pese a que los datos enviados por el usuario indican que este código no se
// ejecuta, una tercera variable del usuario rompe con nuestro flujo de datos
// esperado
if($vinternosum >=4){
// Este código debe ejecutarse bajo condiciones específicas, pero se está
// ejecutando en otras condiciones que no estaban previstas.
funcionPeligrosaQueEliminaBaseDeDatos();
}
?>
Por eso es recomendable, primero que nada, no registrar variables de usuario ni crear código que simule ese comportamiento, y si somos tan "valientes" o "arriesgados" de trabajar bajo esas condiciones, siempre tener el cuidado de inicializar TODAS las variables en el código, como se tendría que hacer en lenguajes como Java.
Por HEctor el 26 de Octubre de 2008
<input type="text" class="text" value="" size="20" name="nombre_infor1"/>
<input type="text" class="text" value="" size="20" name="nombre_infor2"/>
Luego como le paso un campo hidden con el numero total de "nombres", puedo crear un for para recorrerlos todos, el problema es como instancio las varibles post con el for??
Es decir en el ejemplo anterior a mi me llegan dos nombres pero no se como crear
$_POST[nombre_info1] , $_POST[nombre_info2]
lo digo porque a mi el script de este articulo no me funciona con las variables post.
gracias y un saludo
Por Consulta sobre $_POS el 24 de Noviembre de 2008
osea:
tengo un formulario que su variable es un array tengo que cargar 300 elementos y pasarlos a travez de $_POS["variable"] al llegar al destino los elementos que contiene $_POST["variable"] es de 199
ejemplo:
for($i=0;$i<301;$i++){
?>
<imput type='text' name='numero[]' value='<?=$i;?>>
<?php
}
alguien puede ayudarme??
Por Mat el 14 de Mayo de 2009
donde tengo que colocar mi if?
<?PHP
/* guardar_archivo.php */
$db_conn = require("dbconnect.inc.php");
/*
create table diplomado
(
id number(5) primary key,
claveescuela varchar2(12),
usuario varchar2(16),
contrasena varchar2(16),
nombres varchar2(100),
paterno varchar2(100),
materno varchar2(100),
mail varchar2(200),
estado varchar2(200),
deslaboral varchar2(200),
horasdis varchar2(20),
expectativas varchar2(200),
aplicacion varchar2(200),
fecha date)
*/
/* Variables del formato */
$v_claveescuela = $_POST["v_claveescuela"];
$v_usuario = $_POST["v_usuario"];
$v_contrasena = $_POST["v_contrasena"];
$v_nombres = $_POST["v_nombres"];
$v_paterno = $_POST["v_paterno"];
$v_materno = $_POST["v_materno"];
$v_mail = $_POST["v_mail"];
$v_estado = $_POST["v_estado"];
$v_deslaboral = $_POST["v_deslaboral"];
$v_horasdis = $_POST["v_horasdis"];
$v_expectativas = $_POST["v_expectativas"];
$v_aplicacion = $_POST["v_aplicacion"];
/* Funciones para armar el cuerpo del html */
function encabezado ($titulo)
{
print "<html>
<head>
</head>
<body bgcolor=#FFFFFF>
<center>
<br><h2><b><font color=#000000>Verifique sus datos</font></b></h2>
<hr size=4 width=78%>
<form>
<h1>$titulo</h1>
<input type=button value=Regresar onClick=history.back()>
<form>
</center>
</body>
</html>";
return 0;
}
/*
print "<center><b><font color=#000000 size=8>Inscripciones cerradas</font></b></center>
<input type=button value=Regresar onClick=history.back()>";
*/
function encabezado1 ($titulo)
{
print "<html>
<head>
</head>
<body bgcolor=#FFFFFF>
<center>
<br><h2><b><font color=#000000>El procedimiento tuvo éxito</font></b></h2>
<hr size=4 width=78%>
<form>
<h1>$titulo</h1>
<input type=button value=Regresar onClick=history.back()>
<form>
</center>
</body>
</html>";
return 0;
}
if ($v_claveescuela == '') {
encabezado("Escriba su clave de Red Escolar, por favor.");
}
elseif ($v_usuario == '') {
encabezado("Escriba su usuario, por favor.");
}
elseif ($v_contrasena == '') {
encabezado("Escriba su contraseña, por favor.");
}
elseif ($v_nombres == '') {
encabezado("Escriba su nombre o nombres, por favor.");
}
elseif ($v_paterno == '') {
encabezado("Escriba su apellido paterno, por favor.");
}
elseif ($v_mail == '') {
encabezado("Escriba su correo electrónico, por favor.");
}
elseif ($v_expectativas == '') {
encabezado("Escriba sus expectativas, por favor.");
}
elseif ($v_aplicacion == '') {
encabezado("Escriba su aplicación, por favor.");
}
else {
$v_clave = substr($v_claveescuela, 0, 2);
if ( $v_clave == 21 or $v_clave == 29) {
// Genera el query para insertar datos a la tabla
$cmdstr2 = oci_parse($db_conn,'INSERT INTO DIPLOMADO
(id, claveescuela, usuario, contrasena, nombres, paterno,
materno, mail, estado, deslaboral, horasdis, expectativas, aplicacion, fecha)
VALUES
(S_DIPLOMADO_ID.NEXTVAL, :claveescuela, lower(replace(:usuario,\' \',\'\')),
lower(replace(:contrasena,\' \' ,\'\')), initcap(:nombres), initcap(:paterno),
initcap(:materno), :mail, :estado, :deslaboral, :horasdis, :expectativas, :aplicacion, SYSDATE)
RETURNING fecha INTO :fecha');
// Asigna los valores del post en las variables para insertar los datos reales
oci_bind_by_name($cmdstr2, ':claveescuela', $v_claveescuela);
oci_bind_by_name($cmdstr2, ':usuario', $v_usuario);
oci_bind_by_name($cmdstr2, ':contrasena', $v_contrasena);
oci_bind_by_name($cmdstr2, ':nombres', $v_nombres);
oci_bind_by_name($cmdstr2, ':paterno', $v_paterno);
oci_bind_by_name($cmdstr2, ':materno', $v_materno);
oci_bind_by_name($cmdstr2, ':mail', $v_mail);
oci_bind_by_name($cmdstr2, ':estado', $v_estado);
oci_bind_by_name($cmdstr2, ':deslaboral', $v_deslaboral);
oci_bind_by_name($cmdstr2, ':horasdis', $v_horasdis);
oci_bind_by_name($cmdstr2, ':expectativas', $v_expectativas);
oci_bind_by_name($cmdstr2, ':aplicacion', $v_aplicacion);
oci_bind_by_name($cmdstr2, ':fecha', $fecha, 20);
oci_execute($cmdstr2, OCI_DEFAULT);
encabezado1("Usuario: $v_nombres $v_paterno $v_materno se ha guardado su registro en la base de datos con éxito, con fecha $fecha \n<br> gracias por enviarlo.\n<br>");
}
else {
print "<center><b><font color=#000000 size=8>Verifique su clave de centro de trabajo, por favor, de lo contrario usted no pernenece al estado de puebla o tlaxcala</font></b></center>
<input type=button value=Regresar onClick=history.back()>";
}
}
ocicommit($db_conn);
ocilogoff($db_conn);
?>
Por Fernando el 05 de Agosto de 2009
Por MarvE el 24 de Noviembre de 2009
Era justo lo que estaba buscando y me ahorro mucho trabajo pues tenia muchas variables por escribir!! ^-^
Por jose el 28 de Enero de 2011
C:\\rato\\php602.tmp cabe aclarar que codifico ese valor y lo decodifico.
Por Spender el 29 de Marzo de 2011
Por Roger gonzales el 23 de Mayo de 2011
No se como funciona ese metodo de SQL INYECTION .. yo para validar mis paginas... en el cliente hago la validacion para que la data llegue limpia hacia donde hago alguna insercion o consulta. la cual es una pagina aparte.
y en esa pagina hago: $_SERVER['HTTP_REFERER'] para validar que la pagina anterior sea mi mismo dominio.
si no lo es.. no lo dejo pasar.
creen que este haciendo bien??? o ya me vieron con ojos de hackeo malicioso
Por Freddie el 23 de Mayo de 2011
Roger gonzales-blog :
si no lo es.. no lo dejo pasar.
creen que este haciendo bien??? o ya me vieron con ojos de hackeo malicioso
Por Roger gonzales el 23 de Mayo de 2011
... a mi una vez por no validar mi formulario me metieron un alert(); y me pusieron una imagene n mi web!... y desde ahi soy mas estricto con respecto a las etiquetas que insertan en mis formularios...
Por favor algun consejo y/o ayuda a este pobre niño programador :=)
Por Felipillocrew el 26 de Agosto de 2011
list($var1,$var2,$var3,...,$varn)=$_POST;
Por Juanjo el 05 de Noviembre de 2011
Por el 14 de Diciembre de 2011
print_r($_POST) y print_r($_POST)
Por jose el 22 de Enero de 2013
Por Emaiengiou el 15 de Mayo de 2014
Por JOSE CAMPOS el 30 de Septiembre de 2014
Por Celia el 03 de Diciembre de 2014
Por Sebastián el 07 de Abril de 2015