Paso de variables de un página a otra.

Tengo una página index.php y una llamada boletines.php, en index.php, deseo pasar el número del mes que el usuario eligió de index.php a boletines.php, con una función válido que el usuario haya elegido un mes y ahí mismo le pido que se dirija a boletines, pero al cargar boletines.php y recuperar el número del mes que se eligió la variable mes no lleva nada.
// Si carga la página, pero no lleva ningún valor mes, al mandar el alert me indica que efectivamente, tiene el número del mes que se eligió en el select.
function cargar(validacion)
{
if(validacion.meses.value=='00')
{
alert("No has seleccionado el mes");
validacion.meses.focus();
}
else
{
alert(validacion.meses.value);
// aqui le digo que lleve la variable mes window.location.href='?P=Boletines&b=boletines&mes=<?php echo $meses?>';
}
}
<td width="120" valign="middle">
<select name="meses" size="1" class="PaginaTextoVerdeLeft">
<option value="00">- Seleccionar -</option>
<option value="01" <?php if ($meses=="01") echo "selected"; ?> >Enero</option>
<option value="02" <?php if ($meses=="02") echo "selected"; ?>>Febrero</option>
<option value="03" <?php if ($meses=="03") echo "selected"; ?>>Marzo</option>
<option value="04" <?php if ($meses=="04") echo "selected"; ?>>Abril</option>
<option value="05" <?php if ($meses=="05") echo "selected"; ?>>Mayo</option>
<option value="06" <?php if ($meses=="06") echo "selected"; ?>>Junio</option>
<option value="07" <?php if ($meses=="07") echo "selected"; ?>>Julio</option>
<option value="08" <?php if ($meses=="08") echo "selected"; ?>>Agosto</option>
<option value="09" <?php if ($meses=="09") echo "selected"; ?>>Septiembre</option>
<option value="10" <?php if ($meses=="10") echo "selected"; ?>>Octubre</option>
</select>
</td>

1 respuesta

Respuesta
1
De lo que puedo entender de tu código, lo que haces es validar el campo meses comprobando que este tenga un valor válido. De ser así, me pregunto (y ahí puede estar tu error) cuando redireccionas, haces mención a la variable de PHP $meses, siendo que esta variable esta en javascript. En este caso, en el array $_GET estas utilizando una variable que no existe, pues aun no la asignas.
La redirección que sugiero seria:
window.location.href="?P=Boletines&b=boletines&mes="+ validacion.meses.value
En este caso, pasas por URL el valor real del formulario. Luego, en el resultado, manipulas esta variable como $_GET['mes'] en php.
Espero esto sea la solución del problema. Si es así, no olvides puntuar y cerrar la pregunta. Si no, haz cualquier consulta y con gusto la responderé.
Ya lo hace..
En este caso elegí marzo y efectivamente lleva el valor 03 correspondiente a ese mes, pero el problema es que en la pagina2.php no logro capturar ese valor. ¿Alguna idea para poder capturarla?
direccion?P=Boletines&b=boletines03
Este código le modifique tomando en cuenta tu sugerencia y quedo así:
window.location.href='?P=Boletines&b=boletines&meses='+meses;
en la página del navegador me la muestra así:
pagina/index.php?P=Boletines&b=boletines&meses=04
pero en la pagina2.php cuando le pido que me imprima el valor no lleva nada
Mes seleccionado: <?php echo $meses ?>
Al manipular el paso de variables en php a través de formularios (post) o URL (get), debes utilizar los arreglos predefinidos $_GET y $_POST respectivamente. Primero vemos como se hace y después te explico por que, ¿ok?
En tu ejemplo, tienes 2 variables que las pasaste por GET (o por URL). Estas variables, por un asunto de seguridad de PHP ya no se llaman $P, $b ni $meses, sino que están contenidas en un array llamado $_GET y debes utilizarla así:
Mes: <?php echo $GET['meses'] ?>
o sea, la nomenclatura es $_GET['variable'] o en el caso que utilices formularios para pasar variables, utiliza $_POST['nombre_del_campo'].
Este 'cambio' en el manejo de variables por URL se debe a una vulnerabilidad descubierta en el registro de variables globales desde PHP4 y que permite entre otros, hacer SQL Injection (un tipo de ataques a bases de datos). La forma de prevenir esto es desactivando el registro de variables globales como las utilizas en tu código, reemplazándolas por otros predefinidos. Lo más probable es que tu servidor venga con este parámetro desactivado (y yo que tu, me adaptaría a utilizar estas variables predeterminadas, pues hace nuestro trabajo mucho más seguro)

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas