Foro de elhacker.net

Programación => PHP => Mensaje iniciado por: ime en 2 Agosto 2013, 19:00 pm



Título: ayuda con sesiones php
Publicado por: ime en 2 Agosto 2013, 19:00 pm
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

Código:
  <?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");
    }

?>


Título: Re: ayuda con sesiones php
Publicado por: 1mpuls0 en 2 Agosto 2013, 19:16 pm
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.


Título: Re: ayuda con sesiones php
Publicado por: ime en 2 Agosto 2013, 19:24 pm
ok gracias amigo hay lo voy a checar aurita y te comento, saludos.


Título: Re: ayuda con sesiones php
Publicado por: ime en 2 Agosto 2013, 19:36 pm
Una pregunta no afecta este codigo que tengo, tambien tengo que crear el del password dentro del else?

Código:

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


Título: Re: ayuda con sesiones php
Publicado por: 1mpuls0 en 2 Agosto 2013, 19:46 pm
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


Título: Re: ayuda con sesiones php
Publicado por: ime en 2 Agosto 2013, 20:02 pm
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
Código:
<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
Código:
<?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");
}

?>


Título: Re: ayuda con sesiones php
Publicado por: 1mpuls0 en 2 Agosto 2013, 20:07 pm
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.


Título: Re: ayuda con sesiones php
Publicado por: 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


Título: Re: ayuda con sesiones php
Publicado por: 1mpuls0 en 2 Agosto 2013, 20:15 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.


Título: Re: ayuda con sesiones php
Publicado por: ime en 2 Agosto 2013, 20:22 pm
Este es la pgina principal
Código:
<?

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>



Título: Re: ayuda con sesiones php
Publicado por: 1mpuls0 en 2 Agosto 2013, 20:59 pm
Estoy revisando tu codigo completo y esta un poco raro xD

En las nuevas versiones de php debe ir el inicio de sesión hasta arriba del file.
Probablemente no te muestra el error por que tienes versión un poco anterior pero al subirlo a un server tal vez te de problemas.

session_start();
include("conexion.php");


en validar.php tienes
if(!isset($_SESSION))

y en principal
if(!$_SESSION){

probablemente ahí está el error

por qué tienes 2 archivos de conexión? (y en el mismo archivo).
include("conexion.php");

include("conex.php");

Seguire revisando a ver si veo algo raro xD


Título: Re: ayuda con sesiones php
Publicado por: ime en 2 Agosto 2013, 21:08 pm
tengo 2 archivos de conexion uno es para bd mysql y el otro es para acces.


Título: Re: ayuda con sesiones php
Publicado por: ime en 5 Agosto 2013, 18:16 pm
Hola amigos nuevamente estoy aqui para ver si me podrían echar la mano, tengo un problema que al pulsar F5 estando en mi pagina de usuario logueado, saca y me manda a login para poner mi user y pass


este es el codigo q utilizo, ya lo cambie,saludos

login_user.php

Código:
<?php
 session_start();
 include("conexion.php");
$valido=true;

if(isset($_POST['entrar'])){
 
$usuario=mysql_real_escape_string($_POST['nombre']);
$clave=mysql_real_escape_string(md5($_POST['pass']));

  $consulta="Select  Id, Nombre, Password from usuarios where Nombre='$usuario' and Password='$clave'";
   $result=mysql_query($consulta) or die (mysql_error());
         $filasn= mysql_num_rows($result);
         if ($filasn<=0 || isset($_GET['login']) ){
             $valido=false;
         }else{
        $rowsresult=mysql_fetch_array($result);          
        $_SESSION['idusuario']= $rowsresult['Id'];
             $valido=true;
             //guardamos en sesion el nombre del usuario
             $_SESSION["Nombre"]=$usuario;
             header("location:principal.php?login=true");
         }              
      }
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Documento sin t&iacute;tulo</title>
<link href="stile.css" rel="stylesheet" type="text/css" />
</head>

<body>
<div class="principal">
  <div class="spacio1"></div>
  <div class="spacio">
 <div align="center"><img src="imagenes/logo.png" alt="logo" width="902" height="203" /></div>
  </div>


  <div class="spacio2"></div>
  
  <div class="lista">
   <div class="lista1"></div>
<div class="lista2">
 <ul id="button">
<li><a href="" style="cursor: default"><b>USUARIO EXISTENTE</b></a></li>
<li><a href="../index.html"><b>HOME</a></b></li>
<li><a href="usuarios.php"><b>LOGIN</a></b></li>
 </ul>

</div>
<div class="lista3"></div>
  </div>
  
  <div class="centro"></div>
  <div class="centro1">
      <br>
<br>
<form  action="login_user.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="pass" type="password" size="30" style="height:25px"/></td>
      </tr>
      <tr>
        <td height="34" colspan="2" align="center">
          <input type="submit" name="entrar" value="Accept"/>
 <input type="reset" name="Submit" value="Clear"/>
        </td>
      </tr>
    </table>
<?php if ($valido==false) {
                echo '<p align=center><font color="#FF0000">* Login authentication failed...</p>';
            }?>
</form>

</div>
</div>



Título: Re: ayuda con sesiones php
Publicado por: DaNuK en 5 Agosto 2013, 20:27 pm
Prueba creando una cokie cuando inicias sesion
Código
  1. <?php
  2. include("conexion.php");
  3. $valido=true;
  4.  
  5. if(isset($_POST['entrar'])){
  6.  
  7. $usuario=mysql_real_escape_string($_POST['nombre']);
  8. $clave=mysql_real_escape_string(md5($_POST['pass']));
  9.  
  10.   $consulta="Select  Id, Nombre, Password from usuarios where Nombre='$usuario' and Password='$clave'";
  11.    $result=mysql_query($consulta) or die (mysql_error());
  12.         $filasn= mysql_num_rows($result);
  13.         if ($filasn<=0 || isset($_GET['login']) ){
  14.             $valido=false;
  15.         }else{
  16.        $rowsresult=mysql_fetch_array($result);          
  17.        $_SESSION['idusuario']= $rowsresult['Id'];
  18.             $valido=true;
  19.              //Crear Cockie
  20.              setcookie("usuario",$user,time()+7776000);                                  setcookie("password",$con,time()+7776000);
  21.             //guardamos en sesion el nombre del usuario
  22.             $_SESSION["Nombre"]=$usuario;
  23.             header("location:principal.php?login=true");
  24.         }              
  25.      }
  26. ?>
Saludos