PHP - COMO RESUELVO UNA VARIABLE INDEFINIDA

 
Vista:
sin imagen de perfil

COMO RESUELVO UNA VARIABLE INDEFINIDA

Publicado por anonymous (23 intervenciones) el 29/07/2015 06:31:22
Muy buenas noches queridos amigo, tengo el siguiente problema estoy creando una pagina web con registro e inicio de sesion , lo que pasa es lo siguiente que tenga una condicion :

<?php if (($_SESSION['idtusuario'] == 1) or ($_SESSION['idtusuario'] == 3) )
{
?>

<li class="page-scroll">
<a href="#"><i class="glyphicon glyphicon-shopping-cart"></i> VENTAS</a>
</li>
<?php
}
?>

Entonces cuando una persona que no esta registrada ni mucho menos ha iniciado sesion muestra idtusuario variable indefinida es obvio porque nadie ha iniciado sesion y no sabe quien es quien para cumplir esa condicion antes mencionada, entonces como lo resuelvo? intente colocarle error_reporting(E_ALL ^ E_NOTICE); pero aun sigue apareciendo.

otra cosa que quisiera si esta a su alcance una vez logueado el link para iniciar sesion se oculte ya que esta logueado
espero me puedan ayudar gracias. Imagenes adjuntadas http://i.imgur.com/fZNJsJL.png y archivo
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

COMO RESUELVO UNA VARIABLE INDEFINIDA

Publicado por unoMasDelMonton (32 intervenciones) el 29/07/2015 07:49:45
Puedes usar la función isset(). Yo suelo recoger los valores de variables globales o que provienen del usuario en varaibles locales al script y comprobando que es del tipo de dato que yo quiero y si es necesario escapando los carácteres que podrían llevarme a XSS o inyeccción de codigo por lo que haría esto en tu caso y ya que determino que el idtusuario es numérico y entero.

1
2
3
4
5
6
7
8
9
10
11
12
<?php
$idtusuario=((isset($_SESSION['idtusuario']) && is_int($_SESSION['idtusuario']))?$_SESSION['idtusuario']:false);
 
//A partir de aquí siempre estará definido $idtusuario aun que sea como false. Ten en cuenta que 0 y false se evaluan en un if como false por lo que si quieres saber cuando es solo false debes hacer if($var===false) 
 
if($idtusuario==1 || $idtusuario==3){ ?>
 
<li class="page-scroll">
<a href="#"><i class="glyphicon glyphicon-shopping-cart"></i> VENTAS</a>
</li>
<?php } ?>
}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
2
Comentar
sin imagen de perfil

COMO RESUELVO UNA VARIABLE INDEFINIDA

Publicado por anonymous (23 intervenciones) el 29/07/2015 14:17:27
buenos dias , amigo gracias por tu pronta respiuesta como veras ya aplique la linea de codigo y si me quita la noticia

$idtusuario=((isset($_SESSION['idtusuario']) && is_int($_SESSION['idtusuario']))?$_SESSION['idtusuario']:false);

pero cuando me logueo no me muestra lo que esta encerrado entre mi condicion:


if($idtusuario==1 || $idtusuario==3){ ?>

<li class="page-scroll">
<a href="#"><i class="glyphicon glyphicon-shopping-cart"></i> VENTAS</a>
</li>
<?php } ?>
}

el problema esta en que si la defino asi
if (($_SESSION['idtusuario'] == 1) or ($_SESSION['idtusuario'] == 3) )

sigue apareciendo la noticia, pero con tu condicion no pasa, solo que no me muestra lo que yo estoy permitiendole al usuario ver luego de loguearse, una vez mas gracia por tu ayuda
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

COMO RESUELVO UNA VARIABLE INDEFINIDA

Publicado por anonymous (23 intervenciones) el 29/07/2015 14:44:25
amigo, lo resolvi pero aun asi quiero aplicar de la forma que me estas mostrando ya que no quiero trabajar con error_reporting, para que no me saliera mas aplique la libreria de mi conexion en mi index.php , ayudame amigo me parece interesante esa forma. gracias
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

COMO RESUELVO UNA VARIABLE INDEFINIDA

Publicado por unoMasDelMonton (32 intervenciones) el 30/07/2015 00:18:54
Ni idea de el tipo de dato que es $_SESSION['idtusuario']. Puede que el problema de mi código resida en la función is_int().

Para saber porqué no te funciona o porqué no entra puedes usar funciones como var_dump() o print_r.

Si ves que tienes la condición y no tienes ni idea de porqué no funciona antes del if pones un
var_dump($idtusuario) Esto te dirá si es un int si es un string un array o un objeto y podrás actuar en consecuencia. Si $idtusuario es false implica que la condición al declarar la variable no es correcta por lo que deberías cambiar las condiciones de evaluarlo como correcto.

Para futuros proyectos, y si no usas un depurador, cuando tengas errores... llena el código con balizas o a la salida estándar de los valores de las variables. Crea una variable booleana que sea algo como $debug o $d y luego vas llenando el código de cosas como if($d)var_dump($variable); o if($d)echo "He entrado en la $i fase del bucle"; y cuando necesites depurar un pelín pues simplemente le das a true o la habilitas cuando se cumplan unas condiciones como una IP o un USER_AGENT especifico y a encontrar errores.

Con var_dump() puedes hasta determinar condiciones estilo var_dump( ($i==30) ) y te dirá si es true o false.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil

COMO RESUELVO UNA VARIABLE INDEFINIDA

Publicado por anonymous (23 intervenciones) el 30/07/2015 03:44:21
muchas gracias amigo, me sirvio bastante el var_dump me evaluo false la variable, cuando realmente era verdadera xq el idtusuario era entero (int) asi que cambie el boolean a true y listo, funciono sin el error_reporting y la libreria de conexion. gracias por tu aporte Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar