ayuda con sesiones php

Iniciado por ime, 2 Agosto 2013, 19:00 PM

0 Miembros y 1 Visitante están viendo este tema.

ime

Hola amigos del foro php tengo un problema.

cual sera el motivo cuando me logueo a mi pagina osea pongo mi user y pass puedo ingresar bien a mi pagina principal de usuario registrado, el problema esta en que cuando yo pulso f5 o recargo la pagina. me saca de mi pagina principal, pero si no recargo no pasa nada me mantiene en la pagina.

necesito una ayuda, gracias de antemano.

este es el codigo que utilizo cuando me logueo


  <?php 
    
include("conexion.php"); 
     
    if (!
$conexion) { 
        Echo 
"Error al conectar".mysqli_error();  
    } 
    if(!
$conect){ 
        echo 
"Error al seleccionar bd"mysqli_error(); 
    }                    
                      
    if(!isset(
$_SESSION)){ 
    
session_start(); 
    } 
      
       
$usuario=mysqli_real_escape_string($_POST['nombre']); 
       
$clave=mysqli_real_escape_string(md5($_POST['password'])); 
          
       
$consulta="Select * from usuarios where nom='$usuario' and pwd='$clave'"
       
$consultar=mysqli_query($consulta) or die(mysqli_error()); 
       
$re=mysqli_fetch_array($consultar); 

   if(!
$re[0]){ 
    echo 
"<script language= javascript> 
        alert('unauthenticated user') 
        location.href = 'login.php' 
        </script>"

    }else{ 
    
$_SESSION['Nombre']=$re['Nombre']; 
    
header("Location: index.php"); 
    } 

?>


1mpuls0

Cuando ingresas por primera vez es porque lo envías desde un formulario las variables $_POST['nombre'] y $_POST['password']
Después que ingresas nuevamente (actualizando) las variables ya no existen porque no existió el formulario :P

Lo que puedes hacer es que las variables $_POST['nombre'] y $_POST['password'] las guardes en una variable de sesion.

$_SESSION['name'] = $_POST['nombre'];
$usuario=mysqli_real_escape_string($_SESSION['name']);
... etc.

Saludos.
abc

ime

ok gracias amigo hay lo voy a checar aurita y te comento, saludos.

ime

Una pregunta no afecta este codigo que tengo, tambien tengo que crear el del password dentro del else?



if(!$re[0]){
    echo "<script language= javascript>
        alert('unauthenticated user')
        location.href = 'login.php'
        </script>";
    }
     else{
    $_SESSION['Nombre']=$re['Nombre'];
    header("Location: index.php");
    }

1mpuls0

No debe afectar.

Una pregunta.
Esa parte del código esta en una pagina (archivo .php) a parte?.
Se supone que un usuario puede llegar a ella?.

Lo pregunto para analizar un poco mejor el caso y ver las posibles alternativas de validaciones xD
abc

ime

#5
Hola amigo asi me quedo el codigo pero me hace lo mismo me saca de la pagina cuando refresco la pagina, que es lo que puedo hacer?.

Si es un archivo aparte imaginate es asi:

este es el formulario para login

<form  action="validar.php" method="POST">
<table width="309" height="168" border="1" align="center">
     <tr>
       <td height="45" colspan="2" align="center"><strong>LOGIN USERS..</strong> </td>
     </tr>
     <tr>
       <td width="101" height="10" align="center"><strong>User</strong></td>
       <td width="192"><input name="nombre" type="text" size="30" style="height:28px"/></td>
     </tr>
     <tr>
       <td height="10" align="center"><strong>Password</strong></td>
       <td><input name="password" type="password" size="30" style="height:25px"/></td>
     </tr>
     <tr>
       <td height="34" colspan="2" align="center">
         <input type="submit" name="Submit" value="Accept"/>
 <input type="reset" name="Submit" value="Clear"/>
       </td>
     </tr>
   </table>
</form>


validar.php

<?php
include(
"conexion.php");

if (!$conexion) {
Echo "Error al conectar".mysqli_error(); 
}
if(!$conect){
echo "Error al seleccionar bd"mysqli_error();
}                   
                 
if(!isset($_SESSION)){
session_start();
}
 $_SESSION['Nombre']=$_POST['nombre'];
         
$_SESSION['passwrd']=$_POST['password'];    

   $usuario=mysqli_real_escape_string($_SESSION['Nombre']);
   $clave=mysqli_real_escape_string(md5($_SESSION['passwrd']));
     
   $consulta="Select * from usuarios where Nombre='$usuario' and Password='$clave'";
   $consultar=mysqli_query($consulta) or die(mysqli_error());
   $re=mysqli_fetch_array($consultar);

   if(!
$re[0]){
echo "<script language= javascript>
alert('unauthenticated user')
location.href = 'usuarios.php'
</script>"
;
}else{
$_SESSION['Nombre']=$re['Nombre'];
header("Location: principal.php");
}

?>


1mpuls0

#6
Qué página es la que actualizas?.

qué contiene conexion.php? ya se que los datos de conexion pero para descartar que eso este causado algun problema.
abc

ime

cuando ya me logueo me manda a una pagina principal, si pulso f5(refrescar o actualizar) dentro de la pagina principal ,al parecer destruye la sesion y me saca de la pagina principal, enviandome a logueo de nuevo.saludos

1mpuls0

Cita de: ime en  2 Agosto 2013, 20:10 PM
cuando ya me logueo me manda a una pagina principal, si pulso f5(refrescar o actualizar) dentro de la pagina principal ,al parecer destruye la sesion y me saca de la pagina principal, enviandome a logueo de nuevo.saludos

:huh: puede que en esa página se encuentre el problema.  :¬¬
puedes mostrar tu codigo.
abc

ime

Este es la pgina principal

<?

include("conexion.php");
session_start();
   
   if(!$_SESSION){
echo "<script language= javascript>
alert('unauthenticated user')
location.href = 'usuarios.php'
</script>";
}
$nombrs = $_SESSION['Nombre'];

?>
<html>
<head>
<link rel="shortcut icon" type="image/x-icon" href="imagenes/signal12.ico"/>
<title>Pagina principal</title>
<link rel="stylesheet" href="estilos.css" type="text/css"/>
<meta content="9" http-equiv="REFRESH"></meta>
<style type="text/css">
<!--
@import url("estilo.css");
-->
    </style>
<script language="javascript">
function Abrir_ventana (pagina) {
var opciones="toolbar=no, location=no, directories=no, status=no, menubar=no, scrollbars=no, resizable=no, width=590, height=500, top=200, left=270";
window.open(pagina,"",opciones);
}
</script>
</head>
<body>

<div id="contenedor">
    <div id="cabecera">
     <p align="right"><a href="salir.php">Close Session</a></p>
     <? echo "<h4><p align='right'>"."Welcome: ".$_SESSION['Nombre']."</h4></p>"?>
</div>
    </div>

<div class="cuerpo">
  <div class="logo">
    <div align="center"><img src="imagenes/logo-azul.jpg" alt="texto" width="777" height="53">
    </div>
  </div>
    <div class="uno">

    </div>
    <h3 align="center"><strong>ALERT HISTORY</strong></h3>

    <center><div class="dos" style=" height: 340; width: 710; font-size: 12px; overflow: auto; empty-cells: show">
<?
include("conex.php");
?>
  </div>
 
    <div align="center"></div>
  <div class="tres">
    <div align="center"><br>
      <strong>ACTIVITIES</strong> </div>
  </div>
    <div class="cuatro">
      <table width="622" border="1" align="center" bordercolor="#000000">
        <tr>
          <td width="218" bgcolor="#FFBF00"><div align="center"><strong># OF ACOUNTS </strong></div></td>
          <td width="228" bgcolor="#FFBF00"><div align="center"><strong>OPERATION</strong></div></td>
          <td width="218" bgcolor="#FFBF00"><div align="center"><strong>TIME SINCE LAST SIGNAL </strong></div></td>
        </tr>
        <tr>
          <td height="26" bgcolor="#CCCCCC">
              <div align="center">
<?php
$db odbc_connect('db1',"","");
if (!$db) {
    exit('Error en la conexión a la base de datos');
} else {
    $consulta "SELECT COUNT(*) as numero FROM Datos";
    $result odbc_exec($db$consulta);
    if (!$result) {
exit("Error en la consulta");
    } else {
$valor odbc_fetch_array($result);
    }
}    
?>

                <input name="textfield" type="text" size="30" value=<?php echo "$valor[numero]"?> style="text-align: center">
            </div>
          <td bgcolor="#D8D8D8">
            <div align="center">
              <select name="select" onChange="Abrir_ventana(this.value)">
<option value="">-------------------None---------------</option>
<option value="agregar_nuevo_usuario.php">Insert Users</option>
</select>
            </div>
          </td>
        <tr>
          <td height="26" colspan="3" align="center" bgcolor="#D8D8D8">
            <div align="center">
<br>
<form name="search" method="post" action="searchs.php">
                  <strong>Account Search</strong>
              <input name="buscar" type="text" size="25" style="border: 2px ridge grey">
                  <input type="submit" name="Submit" value="Searchs">
            </div>
      </table>
      </form>
    </div>
  </div>
</div>