Foros del Web » Programando para Internet » PHP »

Menús y sesiones

Estas en el tema de Menús y sesiones en el foro de PHP en Foros del Web. Hola Tengo hecha una página que funciona bien en la que para pasar de una opción a otra en el menú paso la variable correspondiente ...
  #1 (permalink)  
Antiguo 10/03/2005, 04:01
 
Fecha de Ingreso: agosto-2003
Mensajes: 174
Antigüedad: 20 años, 8 meses
Puntos: 3
Menús y sesiones

Hola
Tengo hecha una página que funciona bien en la que para pasar de una opción a otra en el menú paso la variable correspondiente por la url de la siguiente forma:

<a href="index.php?Op=1"

De esta forma al pulsar la opción se llama a index.php con la variable Op=1 y allí hay un switch case que incluye la página correspondiente a sacar. Algo parecido a esto
<?php
require_once("cuerpo.php");
$_GET['Op'];
if { empty($Op)) {
$Op=0;
}
?>
<table>
<tr>
<td>
<?php include "cabecera.htm"; ?>
</td>
</tr>

<tr>
<td> include "menu.php"; ?>
</td>

<td> <?php mostrarpagina($Op); ?>
</td>
</tr>

<tr>
<td> <?php include "pie.htm"; ?>
</td>
</tr>
</table>

y en cuerpo.php hay la siguiente función
function MostrarPagina($Op)
{
<?php
switch $Op {
case 1: include "pagina1.htm";
break;
case 2: include "pagina2.htm";
break;
case 3: include "pagina3.htm";
break;
}
?>
}

El problema que tengo es que por razones de seguridad he cambiado en php.ini register_globals a OFF y ahora ya no puedo pasar parámetros por la url.

He aprendido a utilizar sesiones, y he visto que muchos problemas se resuelven mediante variables de sesión, pero no consigo hacer que al pinchar en el botón se cambie el valor de una variable.

La idea básica es que al pulsar un botón se llame a la función MostrarPagina con el parámetro que indica el contenido que quiero mostrar. Ahora al pinchar un botón se enlaza a 'index.php?Op=2' con lo que se envía el valor de la variable por la url, pero con register globals off esto no funciona así que necesito de alguna forma hacer que al pinchar un botón se establezca una variable de sesión $Op=2 y luego se llame a la función MostrarPagina($Op).

¿Alguien puede echarme una mano?

Última edición por Gedeon; 10/03/2005 a las 04:02
  #2 (permalink)  
Antiguo 10/03/2005, 06:26
 
Fecha de Ingreso: octubre-2004
Ubicación: Barcelona
Mensajes: 195
Antigüedad: 19 años, 6 meses
Puntos: 7
Cita:
Iniciado por Gedeon
Hola
(...)
<?php
require_once("cuerpo.php");
$_GET['Op'];
if { empty($Op)) {
$Op=0;
}
?>
En el ejemplo que has puesto no pasas el valor a $Op en la línea 2, que tendría que quedar $Op = $_GET['Op']; aunque tengas register_globals en OFF tiene que funcionar.
  #3 (permalink)  
Antiguo 10/03/2005, 07:01
 
Fecha de Ingreso: agosto-2003
Mensajes: 174
Antigüedad: 20 años, 8 meses
Puntos: 3
Hola
Primero gracias por responder.

Segundo pido perdón por cometer un error. Efectivamente la línea esa debe ser $Op=$_GET['Op'];
Cometí un error al escribir el código aquí

Pero es que no me funciona ni así. le pongo un echo para controlar el valor de $Op y siempre vale 0. Esto me ocurre desde que le he pueso register globals off. y cuando le pongo register globals on deja de producirse.

No lo entiendo.

Un saludo
  #4 (permalink)  
Antiguo 10/03/2005, 09:12
 
Fecha de Ingreso: octubre-2004
Ubicación: Barcelona
Mensajes: 195
Antigüedad: 19 años, 6 meses
Puntos: 7
¿En que sitio del script haces echo $Op para comprobarlo?

Yo cambiaría la parte inicial por una similar a esta, añadiendo algún tipo de control para comprobar que $_GET['Op'] tenga un valor que tú esperes:

Código PHP:
$Op 0;
if (isset (
$_GET['Op'])){
$Op $_GET['Op'];

Después hay un problema de concepto en tu script, que te puede llevar a problemas en un futuro en scripts complejos, o con otros lenguajes de programación, y es ir con cuidado con los nombres de variables. Llamas a MostrarPagina($Op) en un punto del script y después en la definición de la función vuelves a usar $Op, un nombre que ya has usado con $_GET['Op'], en php no pasa nada, por que, en teoría, te haria falta poner global $Op para crear la confusion, pero nunca se sabe. Aparte, ¿que hace un <?php dentro de la función?

Cita:
function MostrarPagina($Op)
{
<?php
switch $Op {
case 1: include "pagina1.htm";
break;
case 2: include "pagina2.htm";
break;
case 3: include "pagina3.htm";
break;
}
?>
}
  #5 (permalink)  
Antiguo 11/03/2005, 09:59
 
Fecha de Ingreso: agosto-2003
Mensajes: 174
Antigüedad: 20 años, 8 meses
Puntos: 3
¡Gracias!
Ya encontré el problema. Resulta que el dreamweaver a veces (no se por qué) no me sube las páginas a pesar de que está bien configurado. No me da ningún error ni nada. Simplemente a veces las sube y a veces no.

Por eso yo hacía el cambio y subía la página, pero como esta no subía pues no se notaba ningún cambio.

Por otra parte, no se porque puse las etiquetas de php en medio de una función, pero creo que es porque esto de escribir en foros se me da muy mal y me lio con ello. Luego acabo escribiendo tonterías.

Un saludo
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 11:58.