Problema con menu html y sessiones

Puse ese titulo porque es por donde creo que anda la cosa porque en realidad no me muestra error, solo que hace una acción inesperada, una vez iniciada la session dentro del sistema, doy click en una opción del menu html donde utilizo "do" como indice, este me redirecciona hacia la página mostrar.php y me muestra el error javascript que tengo previsto para cuando la opción del select de mi página index.php es 0, eso es lo que actualmente esta pasando, tengo dividido cada tipo de usuario que es la opción del select en una página diferente y lo que hago es llamar a esa página según la opción del select, aquí te envío la página index.php, mostrar.php y la del usuario administrador admin.php, Disculpa que incluya los códigos pero es la mejor manera de que puedas entender, en mostrar.php $user es el select. Muchas Gracias, Saludos.
index.php:
<select id="user" name="user"> <option value="0">Seleccione</option> <option value="1">Administrador</option> <option value="2">Arrendados</option> <option value="3">Conmutados</option> </select>
<p align="right"><span class="style1">Usuario</span>
<input name="username" type="text" />
<p align="right"><span class="style1">Contraseña</span>
<input name="password" type="password" />
mostrar.php :
session_start();
require_once("functions.inc.php");
// Recoger los Datos
if(isset($_REQUEST["user"])) {
$user = $_REQUEST["user"];
}
else{
$user = 0;
}
if ($user == 0) {
echo('
<script type="text/javascript"><!--
');
Echo('alert("***Ha ocurrido un error de autentificación.Verifique los datos e inténtelo de nuevo, si el problema persiste contacte con su proveedor de Servicios");');
echo('location. Replace("http://webmail.caonao.cu/stat/")');
echo('
// --></script>
');
}
else if ($user == 1) {
include('admin.php');
}
else if ($user == 2) {
include('arrendados.php');
}
else if ($user == 3) {
include('conmutados.php');
}
?>
admin.php :
<?php
global $wHat;
echo "
<html>
\n\r
<head>
\n\r
<link type=\"text/css\" rel=\"stylesheet\" href=\"look.css\" />
\n\r"; // head ********************
if ( !isset($_SESSION["usuario"]) || !isset($_SESSION["password"]) ){
$usuario = $_REQUEST["username"];
$clave = $_REQUEST["password"];
} else {
$usuario = $_SESSION["usuario"];
$clave = $_SESSION["password"];
}
$row = TestingUser($usuario,$clave);
$user = $row['username'];
$pass = $row['pass'];
if (($usuario !== $user) and ($clave !== $pass))
{
echo('
<script language="JavaScript" >');
echo('alert("Ha ocurrido un error de autentificación.Verifique los datos e inténtelo de nuevo, si el problema persiste contacte con su proveedor de Servicios");');
echo('location.replace("http://webmail.caonao.cu/stat/")');
echo('</script>
');
} else {
/*if(!isset($_SESSION["valido"])){
checkUserActive($usuario,$clave);
}*/
$m = array (
1 => array (0 => "jan", 1 => "Enero"),
2 => array (0 => "feb", 1 => "Febrero"),
3 => array (0 => "mar", 1 => "Marzo"),
4 => array (0 => "apr", 1 => "Abril"),
5 => array (0 => "may", 1 => "Mayo"),
6 => array (0 => "jun", 1 => "Junio"),
7 => array (0 => "jul", 1 => "Julio"),
8 => array (0 => "aug", 1 => "Agosto"),
9 => array (0 => "sep", 1 => "Septiembre"),
10 => array (0 => "oct", 1 => "Octubre"),
11 => array (0 => "nov", 1 => "Noviembre"),
12 => array (0 => "dec", 1 => "Diciembre"),
);
}
?>
<title> Estadisticas generales </title>
<meta http-equiv="" content="text/html; charset=iso-8859-1">
<head>
<script type="text/javascript" src="/javascripts/overlibs/overlib.js"><!-- overLIB (c) Erik Bosrup --></script>
</head>
<body>
<div id="overDiv" style="position:absolute; visibility:hidden; z-index:1000;"></div>
<div id="top"></div>
<div id="container">
<div id="menu">
<ul>
<li><a href="?do=correo">Estadisticas de Correo</a></li>
<li><a href="?do=conexion">Estadisticas de Conexion</a></li>
<li><a href="bye.php">Salir</a></li>
</ul>
<h2>Meses Anteriores</h2>
<?php
$now = date("n");
echo "
<ul>
";
for ($i = 1; $i <= $now; $i++){
echo "
<li><a href=\"?m=".$i."\">".$m[$i][1]."</a></li>
";
}
echo "
</ul>
";
?>
</div>
<div id="info">
<?php
if(isset($_GET["do"])){
$what = addslashes($_GET["do"]);
}
switch ($wHat) {
default :
if ( !isset($_GET["m"] ) ) {
$mes = date("M");
} else {
$mes = $m [$_GET["m"]][0];
}
if ( !isset ( $_GET["y"] ) ) {
$anno = date("Y");
} else {
$anno = $_GET["y"];
}
/*echo "
<table>
";
$sql = "SELECT SUM(Duration) AS TOTAL FROM AcctTable WHERE LogoutDate LIKE '%" . $mes . "%' AND LogoutDate LIKE '%" . $anno . "%'" ;
$result = mysql_query($sql);
$row = mysql_fetch_array($result);
$ttime = round($row[0]/3600,1)." hrs";
if ($ttime < 1) {
$ttime = round($row[0]/60,1)." min";
}
echo "</td>
</tr>
<tr class=\"thead\">
<td>Usuario</td>
<td>Tiempo Total en el Mes de </td>
</tr>
";
$color= "#EEF6FF";
echo "
<tr bgcolor=\"".$color."\">
<td>".$ttime."</td>
</tr>
";
echo "
</table>
";*/
echo "
<table>
";
$qry = mysql_query("SELECT UserName, SUM(Duration) AS SUMA FROM AcctTable WHERE LogoutDate LIKE...
Respuesta
1
Me gustaría saber que quieres decir con eso de que 'te redirecciona' a la página mostrar.php
Ese 'redireccionamiento' que no se ve en el código que envías, es la clave.
Si, por supuesto, cuando doy click en la opción del menu en vez de hacer lo que le digo que son las opciones de un case que vas a ver allí me envía a la página que le dio origen a la que actualmente estoy que es mostrar.php y en ningún momento le digo que haga eso, es como si perdiera los datos de registro o algo así, aunque puse un echo al final de la página y la session esta llegando. Saludos,
Dieter.
Sigues sin mostrarme cómo realizas el redireccionamiento desde las opciones del menú.
Para ver el problema, necesito saber en qué página está el menú y el código de ese menú.
Este es el código del menu html que esta en la página admin.php dentro del código que te envíe te especifico la página a la que se refiere cada código:
<li><a href="?do=correo">Estadisticas de Correo</a></li>
<li><a href="?do=conexion">Estadisticas de Conexion</a></li>
<li><a href="bye.php">Salir</a></li>
<h2>Meses Anteriores</h2>
$now = date("n");
echo "
<ul>
";
for ($i = 1; $i <= $now; $i++){
echo "
<li>".$m[$i][1]."</li>
";
}
echo "
</ul>
el indice "do" esta inicializado aqui :
if(isset($_GET["do"])){
$what = addslashes($_GET["do"]);
}
switch ($wHat) {
Y según el valor de $what debe realizar lo que le digo en cada caso, en el caso del "correo' es una llamada a una función que devuelve la interface del router que devuelve el MRTG que es un sistema que brinda estadísticas de trafico, esta interface es un numero ip y lo que hago es concatenarlo en dependencia del usuario y la contraseña con una url para que cada usuario vea su estadística, eso estaba funcionando pero ahora no me deja ver esa página porque como te dije cada vez que hago click en el menu, lo que hace es devolverme el error javascript de la página mostrar.php para el caso que toma valor 0 que es cuando en el select no se selecciona ningún usuario por eso es que te digo que redirecciona hacia esa página, en realidad no hiciste desde el punto de vista de código tal redirección.Saludos,
Dieter.
Puesto que la redirección del menú la haces mediante una etiqueta <a>, no se envía ningún dato de formulario a excepción del do que añades a la URL.
Por lo tanto, allí donde después intentas leer $_REQUEST["user"], $_REQUEST["password"] y $_REQUEST["username"] no te devolverá nada.
Estos datos deberías almacenarlos en las variables de sesión y usarlos de ahí directamente. Así no te confundirías con las variables.
Según lo que veo, estando en mostrar.php si la variable $user vale 1 incluyes admin.php.
Una vez incluido, puedes pulsar sobre la opción de menú, que te llevará a la 'misma página' es decir a mostrar.php donde, como ya te he comentado anteriormente, parece que buscas valores en $_REQUEST que no encontrarás seguro (el único que hay es do).
Concretamente buscará si existe $_REQUEST["user"] y, como no, $user será fijado a 0, y por lo tanto, te dará el error que dices que te da.
Mis recomendaciones, ya te les ha dado anteriormente y las reitero: no uses $_REQUEST para esto, usa las variables de sesión.
Perdona pero parece que no nos entendemos. Tus tres respuestas anteriores son exactamente iguales. No lo entiendo. Se supone que deberías comentar acerca de lo que te explico. Si lo entiendes, si te parece bien o no. Si has probado lo que te propongo...
Hola amigo, es que parece que esto tiene algún problema y esta enviando la pregunta 3 veces no se por que, por eso es que te llega de esa manera pero solo la estoy enviando una sola vez, te voy a finalizar esta pregunta y luego voy a abrir otra con el código de lo que entiendo me quieres decir. Muchas gracias, Saludos,
Dieter.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas