Foros del Web » Programando para Internet » PHP »

problemas con controlar el acceso a una sesion

Estas en el tema de problemas con controlar el acceso a una sesion en el foro de PHP en Foros del Web. Amigos el problema que tengo es el siguiente: Quiero hacer un sistema en el que se pueda controlar una sesion de usuario, y que el ...
  #1 (permalink)  
Antiguo 19/01/2009, 14:20
 
Fecha de Ingreso: diciembre-2008
Mensajes: 454
Antigüedad: 15 años, 4 meses
Puntos: 2
Pregunta problemas con controlar el acceso a una sesion

Amigos el problema que tengo es el siguiente:
Quiero hacer un sistema en el que se pueda controlar una sesion de usuario, y que el contenido del formulario sea también un campo captcha.

tengo lo siguiente:

1- formulario de ingreso con captcha
2- pagina de control de inicio de sesion
3- pagina de control de sesiones para que sean paginas seguras
4- pagina de inicio con acceso restringido
5- pagina de salir y eliminar la sesion
6- pagina del captcha

1-
Código HTML:
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Documento sin t&iacute;tulo</title>
</head>

<body>
<form id="form1" name="form1" method="post" action="control.php">
  <p>
    <label>
    <input type="text" name="pass" />
    </label>
  </p>
  <p>
    <label>
    <img src="script.php" align="absmiddle"><input type="text" name="code" />
    </label>
  </p>
  <p>
    <label>
    <input type="submit" name="Submit" value="Enviar" />
    </label>
  </p>
</form>
</body>
</html> 
2-
Código PHP:
$conn mysql_connect("dominio""usuario""clave") or die(mysql_error());
mysql_select_db("bd"$conn) or die(mysql_error());

$pass $_POST['pass'];

$ask "SELECT * FROM tabla WHERE campo=(SHA1('$pass'))";

$resultx mysql_query($ask);
$rowq mysql_fetch_array($resultx);

$url $rowq['campo2'];
$level $rowq['campo3'];

if (
mysql_num_rows($resultx)!=0){

    
session_start();
    
$_SESSION['level'] = $level;

if (isset(
$_POST['code']) && strlen($_POST['code']) == && isset($_SESSION['code']) && strtolower($_POST['code'])==$_SESSION['code']) {
    
    
header("Refresh: 2; URL=inicio.php");
    echo 
"Great your going to be redirected to the inicio page";
    
    } elseif (
$_POST['code'] != $_SESSION["code"]) {
    
    
header("Refresh: 2; URL=index.php");
    echo 
"Sorry wrong digits";
    
    } elseif (
$_POST['pass'] != $passw) {
    
    
header("Refresh: 2; URL=index.php");
    echo 
"Sorry wrong password";
    
    } else {
    
    
header("Refresh: 2; URL=index.php");
    echo 
"Sorry nothing typed good";
    
    }
    } 
3-
Código PHP:
session_start();

$conn mysql_connect("dominio""usuario""clave") or die(mysql_error());
mysql_select_db("bd"$conn) or die(mysql_error());

$pass $_SESSION['norte'];

$ask "SELECT * FROM tabla WHERE campo=(SHA1('$pass'))";
$resultx mysql_query($ask) or die (mysql_error());
$rowq mysql_fetch_array($resultx) or die (mysql_error());

if (
$rowq['campo'] != $pass) {
    
//si no existe, envio a la página de autentificacion
    
header("Location: index.php?=denied_access");
    
//ademas salgo de este script
    
exit();

4-
Código PHP:
include"sessioncode.php"
Código HTML:
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Documento sin t&iacute;tulo</title>
</head>

<body>
<p>welcome</p>
<p><a href="salir.php">salir </a></p>
</body>

</html> 
5-
Código PHP:
session_start();
session_destroy(); 
6-
Código PHP:
session_start();

$codigoaleatorio 'E3fhIA4dKjm9irQpN1aZgceTUtwLF6XMnkD5BG7YbJlP8qsR2CHWyouOxs';
        
$code substr($codigoaleatoriomt_rand(0strlen($codigoaleatorio)-1), 4);
$text $code 
$_SESSION["code"] = $text
$height 20
$width 50
 
$image_p imagecreate($width$height); 
$black imagecolorallocate($image_p255255255); 
$white imagecolorallocate($image_p000); 
$font_size 11
 
imagestring($image_p$font_size52$text$white); 
imagejpeg($image_pnull80); 

Mi problema es el siguiente la pagina de control de inicio de sesion (punto 2-) no está haciendo lo que le mando, porque será??

Ayuda porfa
  #2 (permalink)  
Antiguo 19/01/2009, 15:06
Avatar de argy  
Fecha de Ingreso: octubre-2007
Ubicación: Longitud 75º Latitud 18º Sur
Mensajes: 614
Antigüedad: 16 años, 6 meses
Puntos: 18
Respuesta: problemas con controlar el acceso a una sesion

después de hacer tu consulta lo lógico sería que primero sepas con mysql_num_rows() si regresa 1 resultado(la cantidad), luego con mysql_fetch_array(), regresar los campos para poder crear tus variables de sesión y luego preguntar que nivel es y de acuerdo redireccionarlo a la respectiva página o sección.
__________________
Software libre para un mundo libre.

Eventualmente en el foro.
  #3 (permalink)  
Antiguo 19/01/2009, 15:08
 
Fecha de Ingreso: diciembre-2008
Mensajes: 454
Antigüedad: 15 años, 4 meses
Puntos: 2
Respuesta: problemas con controlar el acceso a una sesion

Ya lo tengo por si a alguien le interesa:

el problema estaba en la seguna pagina y tercera pagina

aqui les dejo el codigo

Código PHP:
session_start();
$conn mysql_connect("dominio""usuario""clave") or die(mysql_error());
mysql_select_db("bd"$conn) or die(mysql_error());

$pass $_POST['pass'];

$ask "SELECT * FROM tabla WHERE campo=(SHA1('$pass'))";

$resultx mysql_query($ask);
$rowq mysql_fetch_array($resultx);

$url $rowq['campo1'];
$level $rowq['campo2'];

if (
mysql_num_rows($resultx)!=0){
    
//usuario y contraseña válidos
    //defino una sesion y guardo datos
    
session_start();
    
$_SESSION['north'] = $level;
if (
$_POST["code"] == $_SESSION["code"])  {
    
header ("Location:inicio.php");
    }
// there was no match
elseif(isset($_POST['code']))
{
    
header("Location: index.php?errorcode");
}
unset(
$_SESSION['text']);
}else {
    
//si no existe le mando otra vez a la portada
    
header("Location: index.php?errorpass");
}
mysql_free_result($resultx);
mysql_close(); 

Código PHP:
session_start();

$conn mysql_connect("dominio""usuario""clave") or die(mysql_error());
mysql_select_db("bd"$conn) or die(mysql_error());

$pass $_SESSION['north'];

$ask "SELECT * FROM tabla WHERE campo2='$pass'";
$resultx mysql_query($ask) or die (mysql_error());
$rowq mysql_fetch_array($resultx) or die (mysql_error());

if (
$rowq['level'] != $pass) {
    
//si no existe, envio a la página de autentificacion
    
header("Location: index.php?=denied_access");
    
//ademas salgo de este script
    
exit();

Suerte
  #4 (permalink)  
Antiguo 19/01/2009, 15:09
 
Fecha de Ingreso: diciembre-2008
Mensajes: 454
Antigüedad: 15 años, 4 meses
Puntos: 2
Respuesta: problemas con controlar el acceso a una sesion

Gracias Argy pero fue mas simple que que tu respuesta pero tienes toda la razon, lo que tu dices es y no hay por donde perderse

lo que pasa es que el nivel de acceso lo dejo para que solamente vean secciones segun el nivel
  #5 (permalink)  
Antiguo 19/01/2009, 15:12
Avatar de argy  
Fecha de Ingreso: octubre-2007
Ubicación: Longitud 75º Latitud 18º Sur
Mensajes: 614
Antigüedad: 16 años, 6 meses
Puntos: 18
Respuesta: problemas con controlar el acceso a una sesion

claro a veces no es sólo que te salga el código y ya todo OK, sino que también las técnicas y buenas prácticas de programación (que por cierto sigo aprendiendo jejeje).
__________________
Software libre para un mundo libre.

Eventualmente en el foro.
  #6 (permalink)  
Antiguo 19/01/2009, 19:06
Avatar de acoevil  
Fecha de Ingreso: julio-2008
Ubicación: localhost/colombia/sevillaValle.php
Mensajes: 1.123
Antigüedad: 15 años, 9 meses
Puntos: 32
Respuesta: problemas con controlar el acceso a una sesion

Podrias editar tu post easy y colocarle el nombre a cada pagina?? es que me gusto el codigo jeje

Salu2
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 01:31.