Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] session star

Estas en el tema de session star en el foro de PHP en Foros del Web. hola buen dia tengo un inconveniente con el siguiente codigo para crear seguridad en una pagina con inicio de sesion, previamente ya he ingresado los ...
  #1 (permalink)  
Antiguo 04/03/2013, 17:24
 
Fecha de Ingreso: abril-2012
Ubicación: colombia
Mensajes: 62
Antigüedad: 12 años
Puntos: 0
Información session star

hola buen dia tengo un inconveniente con el siguiente codigo para crear seguridad en una pagina con inicio de sesion, previamente ya he ingresado los datos que se me piden como lo son cedula y contrasena, pero no me funciona y siempre me devuelve a index y no entra al respectivo modulo este es mi codigo en php

valido.php
Código PHP:
Ver original
  1. <?php
  2. include ("bd.inc");
  3. include ('funciones.php');
  4. //usuario y clave pasados por el formulario
  5. $cedula = $_POST['cedula'];
  6. $contrasena = $_POST['contrasena'];
  7. //usa la funcion conexiones() que se ubica dentro de funciones.php
  8. if (conexiones($cedula, $contrasena)){
  9.     //si es valido accedemos a ingreso.php
  10.     header('Location:ingreso.php');
  11. } else {
  12.     //si no es valido volvemos al formulario inicial
  13.     header('Location: index.php');
  14. }
  15. ?>

funciones.php

Código PHP:
Ver original
  1. <?php
  2. include ("bd.inc");
  3. //funcion para conectar a la base de datos y verificar la existencia del usuario
  4. function conexiones($cedula, $contrasena) {
  5.     //conexion con el servidor de base de datos MySQL
  6.     $cedula=$_POST['cedula'];
  7.     $contrasena=$_POST['contrasena'];
  8.     $nombre=$_POST['nombre'];
  9.     $conn = mysql_connect($bdServerName, $bdServerUser, $bdServerPassword);
  10.     //seleccionar la base de datos para trabajar
  11.     $db = mysql_select_db("$bdName", $conn);
  12.     $tipo="general";
  13.     //sentencia sql para consultar el nombre del usuario
  14.     $cons = "SELECT * FROM usuarios WHERE cedula ='$cedula' AND contrasena ='$contrasena'";
  15.     //ejecucion de la sentencia anterior
  16.     $ejecutar_sql=mysql_query($sql,$conn);
  17.     //si existe inicia una sesion y guarda el nombre del usuario
  18.     if (mysql_num_rows($ejecutar_sql)!=0){
  19.         //inicio de sesion
  20.         session_start();
  21.         //configurar un elemento usuario dentro del arreglo global $_SESSION
  22.         $_SESSION['cedula']=$cedula;
  23.         //retornar verdadero
  24.         return true;
  25.     } else {
  26.         //retornar falso
  27.         return false;
  28.     }
  29. }
  30. //funcion para verificar que dentro del arreglo global $_SESSION existe el nombre del usuario
  31. function verificar_cedula(){
  32.     //continuar una sesion iniciada
  33.     session_start();
  34.     //comprobar la existencia del usuario
  35.     if ($_SESSION[cedula]){
  36.         return true;
  37.     }
  38. }
  39. ?>

ingreso.php

Código PHP:
Ver original
  1. <?php
  2. include ('funciones.php');
  3. include ("bd.inc");
  4. //uso de la funcion verificar_usuario()
  5. if (verificar_cedula()){
  6.     //si el usuario es verificado puede acceder al contenido permitido a el
  7.     print "Hola $_SESSION[cedula]<br/>Ingresa a otra parte del sistema si deseas <a href='moduloadministrador.php'>clic aqui</a><br/>";
  8.     print "Desconectarse <a href='salir.php'/>aqui</a>";
  9. } else {
  10.     //si el usuario no es verificado volvera al formulario de ingreso
  11.     header('Location:index.php');
  12. }
  13. ?>




bueno aqui dejo el codigo pero no entiendo por que no me entra y me devuelve a index.
__________________
edwinarley

Última edición por edwinarley; 04/03/2013 a las 17:30
  #2 (permalink)  
Antiguo 04/03/2013, 17:53
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: session star

Programación es OFF-TOPIC de este foro.

Muevo el post al foro de PHP.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #3 (permalink)  
Antiguo 04/03/2013, 19:27
Avatar de xtimed  
Fecha de Ingreso: julio-2009
Ubicación: BCN - México
Mensajes: 226
Antigüedad: 14 años, 9 meses
Puntos: 41
Respuesta: session star

Te faltan las comillas en la variable de session cedula:

$_SESSION['cedula']

lo mas seguro que sea eso
__________________
Genio es todo aquel que conoce sus cualidades
  #4 (permalink)  
Antiguo 04/03/2013, 20:52
Avatar de rodrigo791  
Fecha de Ingreso: noviembre-2009
Ubicación: Uruguay
Mensajes: 1.339
Antigüedad: 14 años, 5 meses
Puntos: 168
Respuesta: session star

funciones.php

if (mysql_num_rows($ejecutar_sql)!=0){
//inicio de sesion
session_start();

eso no es correcto, esa linea la tenes que poner en la 1era linea del archivo que sea en el cual uses sesiones, basta con que hagas esto:
Código PHP:
Ver original
  1. if (mysql_num_rows($ejecutar_sql)!=0){
  2.         //configurar un elemento usuario dentro del arreglo global $_SESSION
  3.         $_SESSION['cedula']=$cedula;
  4.         //retornar verdadero
  5.         return true;

y el session_start() al comienzo de funciones.php
tambien te faltan comillas en la SESSION cedula
  #5 (permalink)  
Antiguo 05/03/2013, 06:20
 
Fecha de Ingreso: abril-2012
Ubicación: colombia
Mensajes: 62
Antigüedad: 12 años
Puntos: 0
Respuesta: session star

bueno un buen dia señores programadores en PHP y MYSQL, anoche me mate dandole a esto de las sessiones y de tanto darle ya pude realizar el ingreso, pero ahora como hago para que en cada formulario se me valide ese ingreso con el session_star(), ejemplo: tengo modulo1.php que es donde ya ingreso, pero existen mas modulos por decir modulo2.php, modulo3.php y asi sucecivamente entonces como hago para ponerle a estos modulos esa seguridad con session? dejo el codigo aqui funiconando para el que lo necesite, pero agradezco aporte para mi inquietud

Código PHP:
Ver original
  1. <?
  2. // Configura los datos de tu cuenta aqui en el include es la coneccion a la base de datos, contraseña y demas por si no conocen
  3. include('config.php');
  4.  
  5.  
  6. // Conectar a la base de datos
  7. mysql_connect ($bdServerName, $bdServerUser, $bdServerPassword);
  8. mysql_select_db($bdName) or die('No se puede seleccionar la base de datos');
  9.  
  10. if ($_POST['cedula']) {
  11. //Comprobacion del envio del nombre de usuario y password
  12. $cedula=$_POST['cedula'];
  13. $contrasena=$_POST['contrasena'];
  14. $nombre=$_POST['nombre'];
  15.  
  16.  
  17. if ($contrasena==NULL) {
  18. echo "La password no fue enviada";
  19. }else{
  20. $query = mysql_query("SELECT cedula,contrasena FROM usuarios WHERE cedula = '$cedula'") or die(mysql_error());
  21. $data = mysql_fetch_array($query);
  22. if($data['contrasena'] != $contrasena) {
  23. echo "<script type='text/javascript'>window.location.href='usuarionovalido2.php'</script>";
  24. }else{
  25. $query = mysql_query("SELECT cedula,contrasena FROM usuarios WHERE cedula = '$cedula'") or die(mysql_error());
  26. $row = mysql_fetch_array($query);
  27. $_SESSION["s_cedula"] = $row['cedula'];
  28. $_SESSION["logeado"] = "SI";
  29.  
  30.             $cedula=$row["cedula"];
  31.             $contrasena=$row["contrasena"];
  32.             $nombre=$row["nombre"];
  33.            
  34. //echo ("Bienvenido <strong>".$_SESSION['s_cedula']." </strong> ya puedes acceder a la seccion de ".'<a href="moduloadministrador.php">Miembros</a>'."");
  35. }
  36. }
  37. }
  38. ?>
__________________
edwinarley
  #6 (permalink)  
Antiguo 05/03/2013, 12:41
Avatar de xtimed  
Fecha de Ingreso: julio-2009
Ubicación: BCN - México
Mensajes: 226
Antigüedad: 14 años, 9 meses
Puntos: 41
Respuesta: session star

Solo crea una condición en cada página, si existe la session cedula entra, si no, lo redireccionas al login, sencillo, y al momento de hacer logout, destruyes todas las sessiones para que no te quede volando.
__________________
Genio es todo aquel que conoce sus cualidades
  #7 (permalink)  
Antiguo 05/03/2013, 13:01
 
Fecha de Ingreso: abril-2012
Ubicación: colombia
Mensajes: 62
Antigüedad: 12 años
Puntos: 0
Información Respuesta: session star

hola entiendo entonces lo haria asi.
Código PHP:
Ver original
  1. <?php
  2. if(($_SESSION["cedula"] = $_POST["cedula"] || $_SESSION["contrasena"] = $_POST["contrasena"]))
  3. {
  4. include('config.php');
  5. ?>


y al final cierro todo asi

Código PHP:
Ver original
  1. <?php
  2. mysql_close($conexion);
  3. }
  4. else
  5. include('usuarionovalido2.php');
  6. ?>

pero no me funciona y no se porque se queda cargando la pagina y no muestra nada, algun aporte
__________________
edwinarley
  #8 (permalink)  
Antiguo 05/03/2013, 13:36
Avatar de xtimed  
Fecha de Ingreso: julio-2009
Ubicación: BCN - México
Mensajes: 226
Antigüedad: 14 años, 9 meses
Puntos: 41
Respuesta: session star

Código PHP:
Ver original
  1. <?php
  2. if(!$_SESSION["cedula"])
  3. {
  4.    header("Location:login.php");
  5. }
  6. ?>
con eso que pongas al inicio de cada página debería de funcionarte, debes tener un boton de logout en algun lugar, ahí pondrias algo así:
Código PHP:
Ver original
  1. <?php
  2. header("Location:login.php");
  3. ?>
__________________
Genio es todo aquel que conoce sus cualidades
  #9 (permalink)  
Antiguo 05/03/2013, 13:55
 
Fecha de Ingreso: abril-2012
Ubicación: colombia
Mensajes: 62
Antigüedad: 12 años
Puntos: 0
Información Respuesta: session star

hola gracias por su ayuda con esto de las sesiones pero tengo una pregunta en este codigo

Código PHP:
Ver original
  1. <?php
  2. if(!$_SESSION["cedula"])
  3. {
  4.   header("Location:login.php");// esta parte se supone que login.php es un formulario, para mi seria el formulario que me pide la cedula y la contraseña
  5. }
  6. ?>

agradezco me saque de esta duda que tengo, pues ya coloque el que me dejo en el foro y pues entra tal como esta pero como se que el codigo funciona y no lo esta pasando sin que haga nada. gracias de ante mano
__________________
edwinarley
  #10 (permalink)  
Antiguo 05/03/2013, 14:08
Avatar de xtimed  
Fecha de Ingreso: julio-2009
Ubicación: BCN - México
Mensajes: 226
Antigüedad: 14 años, 9 meses
Puntos: 41
Respuesta: session star

login.php sería tu formulario donde pides usuario y contraseña. eso es correcto
__________________
Genio es todo aquel que conoce sus cualidades
  #11 (permalink)  
Antiguo 06/03/2013, 14:43
 
Fecha de Ingreso: abril-2012
Ubicación: colombia
Mensajes: 62
Antigüedad: 12 años
Puntos: 0
Información Respuesta: session star

aun no he podido darle solucion coloco entrada.php que seria el login.php, pero se me queda y no me muestra la pagina entonces no entiendo que este haciendo mal, y me preoucpa pues ya me han ingresado a la base de datos y a los usuarios les han cambiado las contraseñas, por ello necesito implementar este codigo en cada pagina para que tenga algo mas de seguridad. agradezco cualquier aporte dejo aqui el codigo que por ahora llevo

Código PHP:
Ver original
  1. <?php
  2. if(!$_SESSION["cedula"])
  3. {
  4. //header("Location:moduloadministrador.php");
  5. }
  6. ?>

y en un formulario aparte esto para que me lo llame desde un boton en los formularios y me destruya la sesion.

Código PHP:
Ver original
  1. <?php
  2. header("Location:INICIO.php");
  3. ?>
__________________
edwinarley
  #12 (permalink)  
Antiguo 08/03/2013, 15:39
 
Fecha de Ingreso: abril-2012
Ubicación: colombia
Mensajes: 62
Antigüedad: 12 años
Puntos: 0
Información Respuesta: session star

bueno creo que lo logre poner en cada formulario session star() asi:

Código PHP:
Ver original
  1. <?php
  2.  if($_SESSION["s_cedula"]==true) {
  3.  echo "OK, tienes el acceso permitido";
  4.  }
  5.  else {
  6.   echo "<script type='text/javascript'>window.location.href='usuarionovalido2.php'</script>";
  7. // echo "Error, no tienes permiso.";
  8.  
  9.  }
  10.  ?>

pero no entiendo por que no me funciona el boton salida segura que tiene este codigo
Código PHP:
Ver original
  1. <?php
  2. header("Location:INICIO.php");
  3. ?>
__________________
edwinarley
  #13 (permalink)  
Antiguo 08/03/2013, 15:47
 
Fecha de Ingreso: abril-2012
Ubicación: colombia
Mensajes: 62
Antigüedad: 12 años
Puntos: 0
Respuesta: session star

Listo visitantes de la web ya me funciono todo bueno aqui queda el codigo para aquellos que lo necesiten y ahora mirare a ver como realizo la bitacora que esa si ni idea como hacerla... cierro el tema pues ya encontre solucion.
__________________
edwinarley

Etiquetas: mysql
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 20:59.