Foros del Web » Programando para Internet » PHP »

Problemas con sesiones en php

Estas en el tema de Problemas con sesiones en php en el foro de PHP en Foros del Web. Muy buenas tardes gente de forosdelweb, he estado viendo los comentarios y la dudas de los usuarios de este foro y la verdad veo que ...
  #1 (permalink)  
Antiguo 27/07/2010, 16:04
Avatar de Pedrin00089  
Fecha de Ingreso: julio-2010
Ubicación: Ocosingo, Chiapas, Mexico
Mensajes: 33
Antigüedad: 13 años, 8 meses
Puntos: 0
Pregunta Problemas con sesiones en php

Muy buenas tardes gente de forosdelweb,

he estado viendo los comentarios y la dudas de los usuarios de este foro y la verdad veo que la mayoria de las dudas se solucionan,

Tengo un sistema web en php y todo marcha bien pero estuve viendo algunos aspectos de seguridad que debe de tener, entonces la problematica es que cuando uno kiere entrar con la url de la pagina protegida de igual manera entra sin ningun problema sin que tenga la nesecidad de logearse, entonces mi pregunta es como le puedo hacer para que el programa verifique si el usuario esta logeado cada vez que quiere entrar con la url de la pagina. y si esta logeado que lo redireccione a una pagina exclusiva para el en caso contrario que lo redireccione a la pagina de login.php.......

si ya lo han echo y tienen codigos se los agradeceria muchismo...acontinuacion les pongo el codigo del login y de validar.php

/////////////login.php/////////aqui solicito los datos del usuario
<body>
<form name='formulario' method='post' action='validar.php'>

<p>Usuario:
<input type='text' name='usuario'>
Contrase&ntilde;a:
<input type='password' name='Password' />

<br />
<p>-----------------------------------
<input type='submit' name='Registrar' value='Entrar' />
------------------------<br>
<br>
<br />
</form>
</body>

///////////////validar.php/////////

<body>
<?php
$Usuario = $_POST["usuario"];
$Password = $_POST["Password"];
if (!$Usuario || !$Password ) {
?>
<script languaje="javascript">
error();
window.location="principal.html";
</script>
<?

}
else {

include ("conectar.php");
$Link=Conectar();
$resp = mysql_query("select Nombre_Usuario,Password,Cargo from usuarios where Nombre_Usuario='$Usuario' and Password='$Password'");
$sql = mysql_fetch_array($resp);


if($_POST['Password'] != $sql['Password']) {
?>
<script language="javascript">
invalido();
window.location="principal.html";
</script>
<?
} else {
if($_POST['Usuario'] == $sql['Usuario']&& $_POST['Password']==$sql['Password']&&$sql['Cargo']=="Administrador"){

?>
<script language="javascript">window.location="menuadmin.p hp";</script>
<?
}else{
echo"Gracias por su visita..Por el momento no tenemos actividades Disponibles para ty!!!";
echo'<br><br>';
echo"<a href=principal.html>Salir</a>";
}
}

}

?>


como pueden ver este es el codigo que utilizo.... saludos..
  #2 (permalink)  
Antiguo 27/07/2010, 16:10
 
Fecha de Ingreso: abril-2010
Ubicación: Colombia
Mensajes: 229
Antigüedad: 14 años
Puntos: 2
Respuesta: Problemas con sesiones en php

Lo que puedes hacer es que en cada pagina validas que la sesion este creada si esta vacia lo redireccionas al login

if (empty($_SESSION["usuario"])){
echo "<script>
parent.location.href='login.php';
</script>";

}
  #3 (permalink)  
Antiguo 27/07/2010, 16:15
Avatar de ylellan  
Fecha de Ingreso: mayo-2010
Ubicación: en un lugar de Veracruz
Mensajes: 432
Antigüedad: 13 años, 10 meses
Puntos: 36
Respuesta: Problemas con sesiones en php

pues primero hago un inicio de sesion:

Código PHP:
<?php 
session_start
(); 
?>

<!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>
<link rel="icon" href="images/stop.ico" type="image/x-icon">
<link rel="shortcut icon" href="images/stop.ico" type="image/x-icon">
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Documento sin t&iacute;tulo</title>
<SCRIPT>
function validar(formulario){
  // primera comprobación
  if(formulario.usuario.value == ''){
    // informamos del error
    alert('INGRESE SU RPE');
    // seleccionamos el campo incorrecto
    formulario.usuario.focus();
    return false;
  }
  if(formulario.contrasena.value == ''){
    // informamos del error
    alert('INGRESE SU CONTRASEÑA');
    // seleccionamos el campo incorrecto
    formulario.contrasena.focus();
    return false;
  }
  return true;
}
//-->
function fo()
{
form1.usuario.focus();
}
</script>

<style type="text/css">
<!--
#Layer2 {
    position:absolute;
    width:200px;
    height:115px;
    z-index:1;
    left: 560px;
    top: 200px;
}
#Layer3 {
    position:absolute;
    width:200px;
    height:58px;
    z-index:1;
    left: 250px;
    top: 414px;
}
#Layer4 {
    position:absolute;
    width:331px;
    height:67px;
    z-index:2;
    left: 11px;
    top: 14px;
}
.Estilo1 {
    font-size: 36px;
    font-weight: bold;
}
-->
</style>
</head>
<body>
<div id="Layer1">
  <form id="form1" onsubmit=" return validar(this)" name="form1" method="post" action="consultar_pas.php"><P align="center">&nbsp;</p>
    <P align="center">&nbsp;</p>
    <P align="center" class="Estilo1"><font face="ARIAL">INICIO DE SESION</font></p>
    <br />
    <br /></label>
   <center class="Estilo8">  <table width="313" border="0" >
      <tr>
        <th colspan="2"   bgcolor="#33CC33" scope="col"><div align="center" class="Estilo11">DATOS : </div>          
          <div align="center" class="Estilo8"></div></th>
      </tr>
      <tr>
      <?php if ($_GET["errorusuario"]=="pai"){echo '<td colspan="2" align="center" 
        bgcolor=red><span class="Estilo3">Contraseña Incorrecta</span></td>'
;}
        if (
$_GET["errorusuario"]=="pui"){echo '<td colspan="2" align="center" 
        bgcolor=red><span class="Estilo3">NO EXISTE USUARIO</span></td>'
;}
         if (
$_GET["errorusuario"]=="in"){echo '<td colspan="2" align="center" 
        bgcolor=red><span class="Estilo3">Usuario Invalido</span></td>'
;}
         if (
$_GET["errorusuario"]==""){echo ' <td colspan="2" align="center" 
            bgcolor=#FFFFFF><span class="Estilo3"><span class="Estilo6">Introduce Tus Datos</span></span></td>'
;}
        
?>
      </tr>
      <tr bgcolor="#FFFFFF">
        <th width="97" scope="col"><div align="left" class="Estilo14">RPE:</div></th>
        <th width="200" scope="col"><div align="left" class="Estilo8">
            <input name="usuario" type="text" id="usuario" value="<?php if (isset($_SESSION['usuario'])){ echo $_SESSION['usuario']; } ?>" style="text-transform: uppercase;"/>
          </div>
          
          <span class="Estilo8">
          </label>          
          </span></th>
      </tr>
      <tr bgcolor="#FFFFFF">
        <td height="43"><div align="left" class="Estilo14"><strong>CONTRASE&Ntilde;A:</strong></div></td>
        <td><div align="left">
          <input name="contrasena" type="password" id="contrasena" />
        </div></td>
      </tr>
      <tr bgcolor="#FFFFFF">
        <td height="43" colspan="2"><label>
        <center><input type="submit" name="Submit" value="ENTRAR" />   
          <input type="button" name="Submit2" value="CANCELAR" onclick="javascript:window.close();"/>
        </center>       </label>
          <div align="center"><span class="Estilo8">
          </span><span class="Estilo8">          </span></div></td>
      </tr>
    </table> 
   </center> 
   </form>
   </body>
</html>
Código PHP:
<?php 
session_start
(); 
include(
"conexion.php"); 
//guardamos los valores que fueron enviados por el formulario en variables de sesion 
$_SESSION['usuario'] = $_POST['usuario']; 
$usuario=$_POST['usuario'];
$contrasena=$_POST['contrasena'];
conectar();
$queEmp_usuario=mysql_query("SELECT alias,password,tipo FROM password WHERE alias='$usuario'");
$existe_usuario=mysql_num_rows($queEmp_usuario); 
$registro=mysql_fetch_row($queEmp_usuario);
desconectar();
if(
$existe_usuario>0)
{
if(
$registro[1]==$contrasena && $registro[1]!='')
{

    
$_SESSION['tipo']=$registro[2];    
$_SESSION['usuario']=$registro[0];
$_SESSION["admitido"]= "si";
header ("Location:bien.php");    
}
else
{
//contraseña incorrecta incorrecto
header("Location: password.php?errorusuario=pai");
}

}
else
{
//contraseña incorrecta incorrecto
header("Location: password.php?errorusuario=pui");

    
?>
y para que nadie entre al menu principal solo agrego este codigo:

seguridad.php
Código PHP:
<?php
session_start
();
if(
$_SESSION["admitido"] != "si"){
    
header("location: password.php");
    exit();
}
?>
pero en cada pag incluyo el archivo y ya
  #4 (permalink)  
Antiguo 27/07/2010, 16:17
Avatar de Pedrin00089  
Fecha de Ingreso: julio-2010
Ubicación: Ocosingo, Chiapas, Mexico
Mensajes: 33
Antigüedad: 13 años, 8 meses
Puntos: 0
gracias por tu respuesta amigoo PEPELUIS1

pero en la pagina de inicio de sesion osea login.php no tengo que escribir nada de codigos ahi?

muchisimas gracias amiga de veracruz..yo soy estudiante universitario de chiapas..hoy en la noche checo tu codigo y mañana te digo que paso! sale gracias por tu respuesta..

Cita:
Iniciado por ylellan Ver Mensaje
pues primero hago un inicio de sesion:

Código PHP:
<?php 
session_start
(); 
?>

<!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>
<link rel="icon" href="images/stop.ico" type="image/x-icon">
<link rel="shortcut icon" href="images/stop.ico" type="image/x-icon">
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Documento sin t&iacute;tulo</title>
<SCRIPT>
function validar(formulario){
  // primera comprobación
  if(formulario.usuario.value == ''){
    // informamos del error
    alert('INGRESE SU RPE');
    // seleccionamos el campo incorrecto
    formulario.usuario.focus();
    return false;
  }
  if(formulario.contrasena.value == ''){
    // informamos del error
    alert('INGRESE SU CONTRASEÑA');
    // seleccionamos el campo incorrecto
    formulario.contrasena.focus();
    return false;
  }
  return true;
}
//-->
function fo()
{
form1.usuario.focus();
}
</script>

<style type="text/css">
<!--
#Layer2 {
    position:absolute;
    width:200px;
    height:115px;
    z-index:1;
    left: 560px;
    top: 200px;
}
#Layer3 {
    position:absolute;
    width:200px;
    height:58px;
    z-index:1;
    left: 250px;
    top: 414px;
}
#Layer4 {
    position:absolute;
    width:331px;
    height:67px;
    z-index:2;
    left: 11px;
    top: 14px;
}
.Estilo1 {
    font-size: 36px;
    font-weight: bold;
}
-->
</style>
</head>
<body>
<div id="Layer1">
  <form id="form1" onsubmit=" return validar(this)" name="form1" method="post" action="consultar_pas.php"><P align="center">&nbsp;</p>
    <P align="center">&nbsp;</p>
    <P align="center" class="Estilo1"><font face="ARIAL">INICIO DE SESION</font></p>
    <br />
    <br /></label>
   <center class="Estilo8">  <table width="313" border="0" >
      <tr>
        <th colspan="2"   bgcolor="#33CC33" scope="col"><div align="center" class="Estilo11">DATOS : </div>          
          <div align="center" class="Estilo8"></div></th>
      </tr>
      <tr>
      <?php if ($_GET["errorusuario"]=="pai"){echo '<td colspan="2" align="center" 
        bgcolor=red><span class="Estilo3">Contraseña Incorrecta</span></td>'
;}
        if (
$_GET["errorusuario"]=="pui"){echo '<td colspan="2" align="center" 
        bgcolor=red><span class="Estilo3">NO EXISTE USUARIO</span></td>'
;}
         if (
$_GET["errorusuario"]=="in"){echo '<td colspan="2" align="center" 
        bgcolor=red><span class="Estilo3">Usuario Invalido</span></td>'
;}
         if (
$_GET["errorusuario"]==""){echo ' <td colspan="2" align="center" 
            bgcolor=#FFFFFF><span class="Estilo3"><span class="Estilo6">Introduce Tus Datos</span></span></td>'
;}
        
?>
      </tr>
      <tr bgcolor="#FFFFFF">
        <th width="97" scope="col"><div align="left" class="Estilo14">RPE:</div></th>
        <th width="200" scope="col"><div align="left" class="Estilo8">
            <input name="usuario" type="text" id="usuario" value="<?php if (isset($_SESSION['usuario'])){ echo $_SESSION['usuario']; } ?>" style="text-transform: uppercase;"/>
          </div>
          
          <span class="Estilo8">
          </label>          
          </span></th>
      </tr>
      <tr bgcolor="#FFFFFF">
        <td height="43"><div align="left" class="Estilo14"><strong>CONTRASE&Ntilde;A:</strong></div></td>
        <td><div align="left">
          <input name="contrasena" type="password" id="contrasena" />
        </div></td>
      </tr>
      <tr bgcolor="#FFFFFF">
        <td height="43" colspan="2"><label>
        <center><input type="submit" name="Submit" value="ENTRAR" />   
          <input type="button" name="Submit2" value="CANCELAR" onclick="javascript:window.close();"/>
        </center>       </label>
          <div align="center"><span class="Estilo8">
          </span><span class="Estilo8">          </span></div></td>
      </tr>
    </table> 
   </center> 
   </form>
   </body>
</html>
Código PHP:
<?php 
session_start
(); 
include(
"conexion.php"); 
//guardamos los valores que fueron enviados por el formulario en variables de sesion 
$_SESSION['usuario'] = $_POST['usuario']; 
$usuario=$_POST['usuario'];
$contrasena=$_POST['contrasena'];
conectar();
$queEmp_usuario=mysql_query("SELECT alias,password,tipo FROM password WHERE alias='$usuario'");
$existe_usuario=mysql_num_rows($queEmp_usuario); 
$registro=mysql_fetch_row($queEmp_usuario);
desconectar();
if(
$existe_usuario>0)
{
if(
$registro[1]==$contrasena && $registro[1]!='')
{

    
$_SESSION['tipo']=$registro[2];    
$_SESSION['usuario']=$registro[0];
$_SESSION["admitido"]= "si";
header ("Location:bien.php");    
}
else
{
//contraseña incorrecta incorrecto
header("Location: password.php?errorusuario=pai");
}

}
else
{
//contraseña incorrecta incorrecto
header("Location: password.php?errorusuario=pui");

    
?>
y para que nadie entre al menu principal solo agrego este codigo:

seguridad.php
Código PHP:
<?php
session_start
();
if(
$_SESSION["admitido"] != "si"){
    
header("location: password.php");
    exit();
}
?>
pero en cada pag incluyo el archivo y ya


---amiga serias tan amble de comentar tus codigos es que la verdad no muy se entiende...gracias...!!

Última edición por GatorV; 27/07/2010 a las 16:36

Etiquetas: cvander/chillando.png
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 21:52.