Foros del Web » Programando para Internet » PHP »

Valor del SWITCH

Estas en el tema de Valor del SWITCH en el foro de PHP en Foros del Web. Buenas noches. Hasta ahora, nunca había tenido problemas con los SWITCHS, pero al crear un apartado de administración para una web, me está dando mil ...
  #1 (permalink)  
Antiguo 07/07/2008, 16:42
 
Fecha de Ingreso: noviembre-2007
Mensajes: 154
Antigüedad: 16 años, 5 meses
Puntos: 2
Pregunta Valor del SWITCH

Buenas noches.
Hasta ahora, nunca había tenido problemas con los SWITCHS, pero al crear un apartado de administración para una web, me está dando mil problemas.
La estructura es la misma que la de la parte pública, salvo que en la parte de administración, carga las variables de sesión y la capa de seguridad.

En la capa central de la web, tengo mediante un include, cargado un SWITCH que en teoría debería cargar las páginas, pero que sólo me muestra la que tenga como 'default'. Después de darle muchas vueltas, he incluído lo siguiente en el archivo que tengo por defecto para ver lo que envía el SWITCH:

Código PHP:
echo 'el valor de $pag es '.$pag;
echo 
$_GET['pag']; 
Mostrando que los valores que recibe siempre son 'n'.

Pongo a continuación, el SWITCH y el menú, por si encuentran algo que estuviera haciendo mal.

switch2.php
Código PHP:
<?php
$pag 
$_POST['pag'];
switch (
$pag) {
  case 
1: include('adm/home.php'); break;
  case 
2: include('adm/home2.php'); break;
  case 
3: include('adm/clientes.php'); break;
  case 
4: include('adm/gestFicheros.php'); break;
  case 
5: include('content/env_form.php'); break;
  case 
6: include('adm/uploadFichero.php'); break;
  case 
7: include('adm/cclave.php'); break;
  case 
8: include('adm/cliente.php'); break;
  
//case 10: include(''); break;
  //case "11": include(''); break;
  //default: include('adm/clientes.php');break;
  
default: include('adm/home.php');break;
}
?>
menu_ad.php
Código PHP:
<?php
if ($_SESSION['estado'] <> 2) {
    echo 
'&nbsp;';
}else{
    if (
$_SESSION['nivel'] == 2) {
    
?>
        <ul>
        <li><a href='index2.php?pag=3'><img src='img/icoClientes.png' border=0 alt='clientes' height='25' /><br />
          adm. clientes</a></li>
        <li><a href='index2.php?pag=4'><img src='img/icoBox.png' border=0 alt='fichero' height='25' /><br />
          adm. ficheros</a></li>
        <li><a href='index2.php?pag=6'><img src='img/icoLoad.png' border=0 alt='subir' height='25' /><br />
          subir fichero</a></li>
        <li><a href='index2.php?pag=7'><img src='img/icoPass.png' border=0 alt='cambioClave' height='25' /><br />
          cambiar clave</a></li>
        <li><a href='logout.php'><img src='img/icoExit.png' border=0 alt='salir' height='25' /><br />
        salir</a></li>
        </ul>
    <?php }else{
    
?>
        <ul>
        <li><a href=''><img src='img/icoProfile.png' border=0 alt='ficha' height='25' /><br />
          ficha cliente</a></li>
        <li><a href=''><img src='img/icoBox.png' border=0 alt='fichero' height='25' /><br />
          archivo</a></li>
        <li><a href='index2.php?pag=7'><img src='img/icoPass.png' border=0 alt='cambioClave' height='25' /><br />
          cambiar clave</a></li>
        <li><a href='logout.php'><img src='img/icoExit.png' border=0 alt='salir' height='25' /><br />
          salir</a></li>
        </ul>
    <?php }
}
?>
Por último, sólo decir, que la página principal, la cual contiene el 'switch.php', realiza perfectamente su función, así que no sé a qué achacarlo.

Si a alguien se le ocurre qué puede estar ocurriendo, agradercería cualquier ayuda.

Lo último, ocurre tanto en local con WAMP como en el servidor.

Saludos y muchas gracias.
  #2 (permalink)  
Antiguo 07/07/2008, 16:48
Avatar de Marvin
Colaborador
 
Fecha de Ingreso: febrero-2005
Ubicación: global $Chile->Santiago;
Mensajes: 1.991
Antigüedad: 19 años, 2 meses
Puntos: 81
Respuesta: Valor del SWITCH

Por lo que veo estas tomando el valor con $_POST[] pero estas enviandolo en la url y deberia ser con $_GET[]

Suerte!
__________________
El que dice "Solo sé que nada sé", esta asumiendo que sabe algo.
Lea las FAQ's!
  #3 (permalink)  
Antiguo 07/07/2008, 16:53
 
Fecha de Ingreso: noviembre-2007
Mensajes: 154
Antigüedad: 16 años, 5 meses
Puntos: 2
Respuesta: Valor del SWITCH

Gracias por la 'inmediata' respuesta.

Perdón, ese ha sido uno de los cambios que he hecho para probar, el código original era así:
Código PHP:
<?php
switch ($_GET['pag']) {
  case 
1: include('adm/home.php'); break;
  case 
2: include('adm/home2.php'); break;
  case 
3: include('adm/clientes.php'); break;
  case 
4: include('adm/gestFicheros.php'); break;
  case 
5: include('content/env_form.php'); break;
  case 
6: include('adm/uploadFichero.php'); break;
  case 
7: include('adm/cclave.php'); break;
  case 
8: include('adm/cliente.php'); break;
  
//case 10: include(''); break;
  //case "11": include(''); break;
  //default: include('adm/clientes.php');break;
  
default: include('adm/home.php');break;
}
?>
  #4 (permalink)  
Antiguo 07/07/2008, 17:03
Avatar de Marvin
Colaborador
 
Fecha de Ingreso: febrero-2005
Ubicación: global $Chile->Santiago;
Mensajes: 1.991
Antigüedad: 19 años, 2 meses
Puntos: 81
Respuesta: Valor del SWITCH

Haz tratado cambiando los include por include_once y/o cambiando el numero entero por char?
Código PHP:
$pag $_GET['pag'];
switch (
$pag){
    case 
'1':    include_once('adm/home.php');             break;
    case 
'2':    include_once('adm/home2.php');             break;
    case 
'3':    include_once('adm/clientes.php');         break;
    case 
'4':    include_once('adm/gestFicheros.php');     break;
    case 
'5':    include_once('content/env_form.php');     break;
    case 
'6':    include_once('adm/uploadFichero.php');     break;
    case 
'7':    include_once('adm/cclave.php');         break;
    case 
'8':    include_once('adm/cliente.php');         break;
    default:    include_once(
'adm/home.php');             break;

Tambien agregale un error_reporting(E_ALL); para saber si hay algun otro problema que no estemos viendo y tambien te sugiero rutas virtuales en vez de hacerlo con rutas absolutas.

Suerte!
__________________
El que dice "Solo sé que nada sé", esta asumiendo que sabe algo.
Lea las FAQ's!
  #5 (permalink)  
Antiguo 07/07/2008, 17:07
 
Fecha de Ingreso: noviembre-2007
Mensajes: 154
Antigüedad: 16 años, 5 meses
Puntos: 2
Respuesta: Valor del SWITCH

Muchas gracias, voy a probar y comento, aunque a ver lo que me da tiempo hoy, que aquí va siendo tarde.

Saludos
  #6 (permalink)  
Antiguo 07/07/2008, 17:19
 
Fecha de Ingreso: noviembre-2007
Mensajes: 154
Antigüedad: 16 años, 5 meses
Puntos: 2
Respuesta: Valor del SWITCH

Pues nada, al final me he liado y he probado el error_reporting, dando como valor resultante el 6135, que no tengo ni idea de qué es.

Bueno, me voy a ir a la cama, que luego me tiro toda la noche dándole a la tecla en sueños.

Saludos.
  #7 (permalink)  
Antiguo 07/07/2008, 17:29
Avatar de Marvin
Colaborador
 
Fecha de Ingreso: febrero-2005
Ubicación: global $Chile->Santiago;
Mensajes: 1.991
Antigüedad: 19 años, 2 meses
Puntos: 81
Respuesta: Valor del SWITCH

Postea el error aca! :P
__________________
El que dice "Solo sé que nada sé", esta asumiendo que sabe algo.
Lea las FAQ's!
  #8 (permalink)  
Antiguo 09/07/2008, 09:21
 
Fecha de Ingreso: noviembre-2007
Mensajes: 154
Antigüedad: 16 años, 5 meses
Puntos: 2
Respuesta: Valor del SWITCH

Ante la posibilidad de poner mal el error, copio las partes de código que más pueden afectar a esto. Sólo me falto comentar, que al pinchar sobre los enlaces del menú, la barra de direcciones recoge bien la dirección, sin embargo, sigue mostrando el valor 'default'.


El index2.php

Código PHP:
<?php
  
if (!isset($_SESSION['usuario'])) {
   
session_start();
  }
 require_once (
"content/adm_fns.php");
 require_once (
"content/usr_fns.php");

 
do_html_header ("Zona Privada - J. Briceño Asesores");
 
do_html_body ("content/switch2.php");
 
do_html_footer ();
 
?>
adm_fns.php

Código PHP:
<?php
    
require_once('content/db_fns.php');
    require_once(
'content/site_adm_fns.php');    
?>
site_adm_fns.php

Código PHP:
<?php
#=================================================
#
# V I S U A L E S
#
#=================================================

# Cabecera

    
function do_html_header ($title) {
?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">
  <head>
      <title><?php echo $title?></title>
    <link href="estilos.css" rel="stylesheet" type="text/css" />
    <link href="estilosadm.css" rel="stylesheet" type="text/css" />
    
        <meta name="description" content="Sitio web de la aseosría ___" />
        <meta name="keywords" lang="es" content="asesoria, fiscal, contable, contabilidad, laboral, mercantil, hacienda, impuestos, madrid, miraflores de la sierra, miraflores" />
        <meta name="robot" content="index,follow">
        <meta name="Author" content="">
        <meta http-equiv=?Content-Type? content=?application/xhtml+xml; charset=UTF-8? />
        
        <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /></head>

<?php
    
if ($title)
        
do_html_heading($title);        
    }


# Heading

    
function do_html_heading ($title) {
        
    }
    
    
# Nombre Empresa
    
    
function n_empresa () {
        echo 
"<span class='nombre'> &nbsp;</span>";
    }


# Cuerpo

    
function do_html_body ($file_switch) {
?>
                <body>
            <div id="contenedor">

                <div id="cabecera"><img src="img/logo-trans.png" /></div>

                <div id="menu_ad">
                    <table id="ad_menu" align="center">
                        <tr>
                            <td valign="top"><?php do_adm_menu(); ?></td>
                            <td valign="top"><?php include ('adm/home2.php'); ?></td>
                        </tr>
                    </table>
                </div>

                <div id="cuerpo">

                    <div id="principal"><?php include($file_switch); ?></div>

          <div id="relleno">&nbsp;</div>

        </div>
        
<?php    
    
}


# Footer

    
function do_html_footer () {

?>
                        <div id="pie"><?php include_once("data/pie.html"); ?></div>

            </div>

        </body>

</html>

<?php
    
}


    function 
do_adm_menu() {
        if (isset (
$_SESSION['usuario'])) {
            include (
'adm/menu_ad.php');
        }else{
            echo 
'&nbsp;';
        }
    }

#==============================================
#
# USUARIOS
#
#==============================================


#==============================================
#
# LOPD
#
#==============================================


# función contenedora de LOPD

function do_html_LOPD () {
?>    
    <h2>Acuerdo de ...</h2>
    
<?php
}


#=================================================
#
# L O G I N
#
#=================================================


# Formulario de acceso

//    function usr_form () {
//
//        if (!isset($_SESSION['usuario'])) {
//            echo do_usr_access_form(); 
//        }else{
//            echo 'Bienvenido' .$_SESSION['usuario'];
//            /*if ($_SESSION['nivel']==1) {
//                #acceso a 'ficha de cliente'
//                #echo "<br /><a href='index2.php?id=9'>Ficha de cliente</a>";
//            }*/
//        #acceso a 'logout    
//        echo "[<a href='index2.php?id=8'>salir</a>]";
//    }
//}
    
function do_usr_access_form () {
    
#index2.php
?>
        <form action='do_login.php' method='POST'>
            <fieldset>
                <legend>Acceso Usuarios</legend>
                    <label>usuario</label>
                    <input type='text' name='user' size='20' />
                    <label>contrase&ntilde;a</label>
                    <input type='password' name='pass' size='20' />
                <br />
                <br />
                    <input type='submit' value='acceder' />
            </fieldset>        
        </form>
<?php
    
}
    
# Seguridad inyección

function addslashes__recursive($var){
    if (!
is_array($var))return addslashes($var);
    
$new_var = array();
    foreach (
$var as $k => $v){
        
$new_var[addslashes($k)] = addslashes__recursive($v);
    }
    return 
new_var;
}
 
$_POST addslashes__recursive($_POST);
$_GET addslashes__recursive($_GET);
$_REQUEST addslashes__recursive($_REQUEST);
$_SERVER addslashes__recursive($_SERVER);
$_COOKIE addslashes__recursive($_COOKIE);

?>
home.php (valor 'default' del switch)

Código PHP:
<?php
    $usr_cruce 
$_SESSION['id'];
    
$usr_estado $_SESSION['estado'];
    
$usr_nivel $_SESSION['nivel'];
  
    if (
$usr_estado == ) {
          
do_html_LOPD ();

    }else{
        echo 
'inicio<br />';
        echo 
'el valor de $pag es '.$pag.'<br />';
        echo 
$_GET['pag'].'<br />';
        echo 
'el valor de error_reporting es '.error_reporting(E_ALL);
    }
?>
Bueno, espero que esto sirva de algo.

Saludos y muchas gracias.
  #9 (permalink)  
Antiguo 09/07/2008, 10:15
 
Fecha de Ingreso: noviembre-2007
Mensajes: 154
Antigüedad: 16 años, 5 meses
Puntos: 2
Respuesta: Valor del SWITCH

Ya está resuelto, se me había pasado comentar los:
$_POST = addslashes__recursive($_POST);
$_GET = addslashes__recursive($_GET);
$_REQUEST = addslashes__recursive($_REQUEST);
$_SERVER = addslashes__recursive($_SERVER);
$_COOKIE = addslashes__recursive($_COOKIE);

Que tenía como referencia dentro de: site_adm_fns.php

Muchas gracias por todo.
Saludos.
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 02:06.