elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: ¿Eres nuevo? ¿Tienes dudas acerca del funcionamiento de la comunidad? Lee las Reglas Generales


+  Foro de elhacker.net
|-+  Programación
| |-+  Desarrollo Web
| | |-+  PHP (Moderador: #!drvy)
| | | |-+  Problema con php Condicion de session
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] 2 Ir Abajo Respuesta Imprimir
Autor Tema: Problema con php Condicion de session  (Leído 9,389 veces)
alexkof158


Desconectado Desconectado

Mensajes: 415


LOL


Ver Perfil
Problema con php Condicion de session
« en: 25 Noviembre 2009, 22:49 pm »

hopla a todos, lo
lo que pasa es que quiero comparar q si el nombre de usuario == admin entonces que me muestre la pagina de admin, y si el nombre de usuario es == secretaria me muestre otra pagina. ahora estoy utilizando este codigo para leer el nombre de la sesion asi:
Código:
<?php
session_start();
?>

<?php
if (isset($_SESSION['k_username']='admin')) {
echo '<p><a href="index.php">Redirigir a la pagina Administrador</a></p>';
}
if (isset($_SESSION['k_username']='f')) {
echo '<p><a href="index2.php">Redirigir a la pagina Secretaria</a></p>';
}else {
echo "Error, no tienes permiso.";
echo '<p><a href="index.php">Necesita Loguearse</a></p>';
exit;
}
?>

pero me dice que el error esta en la linea 6 del codigo, y el tipo de error es
Parse error: syntax error, unexpected '=', expecting ',' or ')' in C:\wamp\www\tallerphp\validar_sesion.php on line 6

Gracias y espero prontas soluciones


« Última modificación: 25 Noviembre 2009, 22:51 pm por alexkof158 » En línea

"noproxy"
Freeze.


Desconectado Desconectado

Mensajes: 2.732



Ver Perfil WWW
Re: Problema con php Condicion de session
« Respuesta #1 en: 25 Noviembre 2009, 23:06 pm »

No puedes agregar un valor a $_SESSION..
estas tratando de hacer 2 comprobaciones al mismo tiempo.
Primero fijate si la variable k_username está "seteada" con la función isset y luego si miras si tiene tal o cual valor.

Código
  1. <?php
  2. ?>
  3.  
  4. <?php
  5. if (isset($_SESSION)) {
  6.    if ($_SESSION['k_username']=='admin') {
  7. echo '<p><a href="index.php">Redirigir a la pagina Administrador</a></p>';
  8.    } elseif ($_SESSION['k_username']=='f') {
  9. echo '<p><a href="index2.php">Redirigir a la pagina Secretaria</a></p>';
  10.    }
  11. }
  12. echo "Error, no tienes permiso.";
  13. echo '<p><a href="index.php">Necesita Loguearse</a></p>';
  14. }
  15. ?>


« Última modificación: 25 Noviembre 2009, 23:25 pm por Freeze. » En línea

cassiani


Desconectado Desconectado

Mensajes: 978


« Anterior | Próximo »


Ver Perfil WWW
Re: Problema con php Condicion de session
« Respuesta #2 en: 25 Noviembre 2009, 23:21 pm »

cabe acotar que el caracter '=' se uriliza solo para asignación y para condición un doble '=='.
En línea

Freeze.


Desconectado Desconectado

Mensajes: 2.732



Ver Perfil WWW
Re: Problema con php Condicion de session
« Respuesta #3 en: 25 Noviembre 2009, 23:25 pm »

Muy cierto ;)
Corrigiendo..
En línea

alexkof158


Desconectado Desconectado

Mensajes: 415


LOL


Ver Perfil
Re: Problema con php Condicion de session
« Respuesta #4 en: 26 Noviembre 2009, 05:10 am »

No puedes agregar un valor a $_SESSION..
estas tratando de hacer 2 comprobaciones al mismo tiempo.
Primero fijate si la variable k_username está "seteada" con la función isset y luego si miras si tiene tal o cual valor.

Código
  1. <?php
  2. ?>
  3.  
  4. <?php
  5. if (isset($_SESSION)) {
  6.    if ($_SESSION['k_username']=='admin') {
  7. echo '<p><a href="index.php">Redirigir a la pagina Administrador</a></p>';
  8.    } elseif ($_SESSION['k_username']=='f') {
  9. echo '<p><a href="index2.php">Redirigir a la pagina Secretaria</a></p>';
  10.    }
  11. }
  12. echo "Error, no tienes permiso.";
  13. echo '<p><a href="index.php">Necesita Loguearse</a></p>';
  14. }
  15. ?>

seteads?? :huh: :huh: :huh: :huh:
te refieres a esto
Código:
<?php
//session_start();
//datos para establecer la conexion con la base de mysql.
mysql_connect('localhost','root','')or die ('Ha fallado la conexión: '.mysql_error());
mysql_select_db('empresa')or die ('Error al seleccionar la Base de Datos: '.mysql_error());
function quitar($mensaje)
{
$nopermitidos = array("'",'\\','<','>',"\"");
$mensaje = str_replace($nopermitidos, "", $mensaje);
return $mensaje;
}
if(trim($_POST["usuario"]) != "" && trim($_POST["password"]) != "")
{
// Puedes utilizar la funcion para eliminar algun caracter en especifico
//$usuario = strtolower(quitar($HTTP_POST_VARS["usuario"]));
//$password = $HTTP_POST_VARS["password"];
// o puedes convertir los a su entidad HTML aplicable con htmlentities
$usuario = strtolower(htmlentities($_POST["usuario"], ENT_QUOTES));
$password = $_POST["password"];
$result = mysql_query('SELECT password, usuario FROM usuarios WHERE usuario=\''.$usuario.'\'');
if($row = mysql_fetch_array($result)){
if($row["password"] == $password){
session_start();
$_SESSION["k_username"] = $row['usuario'];
echo 'Has sido logueado correctamente '.$_SESSION['k_username'].' <p>';
//echo '<a href="inicio.php">Index</a></p>';
header("location: inicio.php");

//Elimina el siguiente comentario si quieres que re-dirigir automáticamente a index.php
//Ingreso exitoso, ahora sera dirigido a la pagina principal.
/*<SCRIPT LANGUAGE="javascript">
location.href = "inicio.php";
</SCRIPT>*/
}else{
echo 'Password incorrecto';
}
}else{
echo 'Usuario no existente en la base de datos';
}
mysql_free_result($result);
}else{
echo 'Debe especificar un usuario y password';
}
mysql_close();
?>
porfa explicame..
graciass
En línea

"noproxy"
cassiani


Desconectado Desconectado

Mensajes: 978


« Anterior | Próximo »


Ver Perfil WWW
Re: Problema con php Condicion de session
« Respuesta #5 en: 26 Noviembre 2009, 05:52 am »

lo que quiere decir es que primero haces una comparación y luego la otra y no como lo tenias.
En línea

alexkof158


Desconectado Desconectado

Mensajes: 415


LOL


Ver Perfil
Re: Problema con php Condicion de session
« Respuesta #6 en: 26 Noviembre 2009, 07:18 am »

lo que quiere decir es que primero haces una comparación y luego la otra y no como lo tenias.
vale listo, la condicion se efectua pero no redirecciona a la pagina de inicio creo que es porke no crea la session,  la pagina de inicio le hago un include_once("validar_sesion.php"); para que incluya a esta para que se pueda ver si esta la session creada, pero al parecer aun no esta creada... que hago mal?? :huh:
que estoy haciendo  mal??
En línea

"noproxy"
[u]nsigned


Desconectado Desconectado

Mensajes: 2.376

Vue SSr


Ver Perfil WWW
Re: Problema con php Condicion de session
« Respuesta #7 en: 26 Noviembre 2009, 17:17 pm »

Respondo apurado porque estoy en el trabajo... ;)

Esta línea está mal:
Código
  1. if($row = mysql_fetch_array($result)){

Debería ser:

Código
  1. while($row = mysql_fetch_array($result)){

Si alguien pusiera como user algo como ' OR 1=1' conseguiria acceso sin epecificar una contraseña (SQL Injection).


Código
  1. $_SESSION["k_username"] = $row['usuario'];
  2. echo 'Has sido logueado correctamente '.$_SESSION['k_username'].' <p>';
  3. //echo '<a href="inicio.php">Index</a></p>';
  4. header("location: inicio.php");

1.  session_start() debe usarse UNA SOLA VEZ, y debe ser la primera sentencia del script.
2. No podes usar header() si ya has mostrado algo en la pagina, es decir no podes usar un echo o printf antes de header.

Saludos
En línea

No hay atajo ante la duda, el misterio se hace aquí...
Se hace carne en cada uno, el misterio es existir!
Castg!
Wiki

Desconectado Desconectado

Mensajes: 1.191



Ver Perfil WWW
Re: Problema con php Condicion de session
« Respuesta #8 en: 26 Noviembre 2009, 18:09 pm »

yo tengo un porblema asi, lo que pasa es que no me setea la variable session, cuando llego a mi casa, (toy en el cole) subo el code que lo tengo enlocal host
En línea

[u]nsigned


Desconectado Desconectado

Mensajes: 2.376

Vue SSr


Ver Perfil WWW
Re: Problema con php Condicion de session
« Respuesta #9 en: 26 Noviembre 2009, 18:52 pm »

Mira, si queres usar sesiones, y algun script externo que trabaje sobre estas (llamdo con include_once, include, requiere...)tenes que usar session_start(); dentro del script principal. Esta sentencia solo debe aparecer una vez, y solo en el script principal (no en los que se llamen mediante include o el metodo que sea..)

Por ejemplo supongamos que el script principal sea sesion.php, y tenemos un script llamdo sesion_check.php que tiene una rutina que comprueba la variable $_SESSION, es decir, que controla si esta definida, quevalor tiene, etc..un ejemplo sencillo de ambos script seria el siguiente:

sesion.php
Código
  1. <?php
  2. echo "A continuacion usare un script externo para trabajar con \$_SESSION<br />\n";
  3. include_once("sesion_check.php");
  4. ?>
  5.  

Y el script sesion_check.php seria este:

Código
  1. <?php
  2. if( isset($_SESSION['nombre']) )
  3. {
  4. echo "\$_SESSION['nombre']: ".$_SESSION['nombre'];
  5. }
  6. else
  7. {
  8. $_SESSION['nombre'] = "UNSIGNED";
  9. echo "\$_SESSION['nombre'] creada con valor ".$_SESSION['nombre'];
  10. }
  11. ?>

En este segundo (que usara como 'externo') no uso session_start(); ya que lo debo usar en el script principal(sesion.php).

En el script principal session_start(); debe solo usarse una vez, y de ser posible debe ser la primera linea, o el interprete de PHP nos dara un Warning:

Código
  1. <?php
  2. echo "xD"; //he agregado esta linea ANTES de session_start() para provocar un Warning
  3. echo "A continuacion usare un script externo para trabajar con \$_SESSION<br />\n";
  4. include_once("sesion_check.php");
  5. ?>

Citar
xD
Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at C:\AppServ\www\test\sesion.php:2) in C:\AppServ\www\test\sesion.php on line 3
A continuacion usare un script externo para trabajar con $_SESSION
$_SESSION['nombre']: UNSIGNED

Espero haber aclarado algunas dudas..

Saludos
En línea

No hay atajo ante la duda, el misterio se hace aquí...
Se hace carne en cada uno, el misterio es existir!
Páginas: [1] 2 Ir Arriba Respuesta Imprimir 

Ir a:  

WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines