PHP - Contador con variable de session

 
Vista:
Imágen de perfil de Jesus

Contador con variable de session

Publicado por Jesus (12 intervenciones) el 14/07/2015 16:22:49
Buenos dias amigos,

estoy realizando un sistema basado en php para la defensa de la tesis para el dia viernes, en el cual el inicio de sesion tiene que haber un contador que al llegar a tres intentos fallidos de sesion bloquea el usuario, realiza lo esperado pero de forma global por ejemplo si yo tengo dos intentos fallidos y viene otro usuario y ingresa de forma fallida lo bloquea a el me gustaria que realice el contador de forma individual, es decir por usuario aqui les muestro el codigo espero me puedan ayudar.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
<?php
session_start();
 
 
error_reporting(E_ALL ^ E_NOTICE);
 
 
include dirname(dirname(__FILE__))."/config.php";
 
$link=Conectarse();
 
$login = $_POST['login'];
 
$pass = $_POST['pass'];
 
$pass=sha1(md5($pass));
 
$query = sprintf("SELECT usuarios.id,
 
usuarios.login,
 
usuarios.nombreu,
 
usuarios.apaterno,
 
usuarios.amaterno,

usuarios.cedulau,
 
usuarios.email,
 
usuarios.id_nivelu,

usuarios.id_statusu
 
FROM usuarios WHERE usuarios.login='%s'&& usuarios.password = '%s'",
 
$login, $pass);
 
$result=mysql_query($query,$link);
 
$res = sprintf("SELECT login FROM usuarios WHERE login = '".$login."'");
$resultado=mysql_query($res,$link);
if(!mysql_num_rows($resultado)){
?>
 <script languaje="javascript">
  alert("Nombre de Usuario Incorrecto Verifique e Intente de Nuevo.");
  location.href = "../login.php";
 </script>
<?php
}elseif(!isset($_SESSION['intentos'])){
$_SESSION['intentos'] = 1;
 
}else{
$_SESSION['intentos'] = $_SESSION['intentos'] + 1;
}
?>
   <script languaje="javascript">
    alert("Contraseña Incorrecta\nIntento #<?php echo $_SESSION['intentos'];?> Luego de tres Intentos se bloqueara el Usuario por medidas de seguridad.");
    location.href = "../login.php";
   </script>
<?php
 
 
 
 
if(mysql_num_rows($result)){
 
if($array=mysql_fetch_array($result)){
 
$_SESSION["id"]= $array["id"];
 
$_SESSION["login"]= $array["login"];
 
$_SESSION["nombreu"]= $array["nombreu"];
 
$_SESSION["apaterno"]= $array["apaterno"];
 
$_SESSION["amaterno"]= $array["amaterno"];
 
$_SESSION["cedulau"]= $array["cedulau"];
 
$_SESSION["email"]= $array["email"];
 
$_SESSION["id_nivel"]= $array["id_nivelu"];
 
$_SESSION["id_status"]= $array["id_statusu"];
 
$id_status = $array['id_statusu'];
 
$query3  =sprintf("SELECT * FROM usuarios, status_usuario WHERE usuarios.id_statusu=status_usuarios.id_status AND usuarios.login = status_usuarios.id_status");
 
if($id_status == 2){
	header("location:/cooperativa/restringido/acceso_restringido.html");
 
}else{
 
$id_nivel = $array['id_nivelu'];
$user = $array['user'];
 
 
$query2 = sprintf("SELECT * FROM usuarios,nivel WHERE usuarios.id_nivelu=nivel.id_nivel");
 
 
if($id_nivel  == 1){
   header("Location:/cooperativa/admin/user_admin.php");
 
}elseif($id_nivel == 2){
    header("Location:/cooperativa/personal/user_personal.php");
 
}elseif($id_nivel == 3){
	header("Location:/cooperativa/standar/user_standard.php");
}
}
}
}elseif($_SESSION['intentos']>=3){
	$var=2;
	$modif=sprintf("UPDATE usuarios SET id_statusu = '".$var."' WHERE usuarios.login='".$login."'");
	$modifi=mysql_query($modif,$link);
 	$_SESSION['intentos'] = 0;
 	header("location:/cooperativa/restringido/acceso_restringido.html");
}
 
 
 
mysql_free_result($result);
 
mysql_close();
?>
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de xve
Val: 3.943
Oro
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

Contador con variable de session

Publicado por xve (6935 intervenciones) el 14/07/2015 20:25:53
Hola Jesus, creo que el problema lo tienes en el condicional... ya que si falla, nunca aumentas el valor a la variable...:


Creo que tendria que ser algo así:
1
2
3
4
5
6
7
8
9
if(!mysql_num_rows($resultado)){
	$_SESSION['intentos']++;
	?>
	<script languaje="javascript">
	alert("Nombre de Usuario Incorrecto Verifique e Intente de Nuevo.");
	location.href = "../login.php";
	</script>
	<?php
}

Cada vez que hay un error aumentas en uno la variable: $_SESSION['intentos']

Coméntanos, ok?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Jesus

Contador con variable de session

Publicado por Jesus (12 intervenciones) el 14/07/2015 20:42:35
Hola Jose Felix muchas gracias por la ayuda, el contador funciona perfecto el incrementa hasta tres los intentos fallidos y bloquea el usuario el problema esta es que lo incremente de forma global y no individual es decir si yo introduje mal mi clave ya tengo un intento si viene otro usuario e ingresa mal la clave tiene dos intyentos me gustaria que se incremente por usuario.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de xve
Val: 3.943
Oro
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

Contador con variable de session

Publicado por xve (6935 intervenciones) el 14/07/2015 22:27:09
Hola Jesus, las variables de sesión no son globales, son personales... es decir cada navegador tiene las suyas.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Jesus

Contador con variable de session

Publicado por Jesus (12 intervenciones) el 14/07/2015 23:09:02
Hola xve gracias por la informacion y la aclaracion pero me referia en cuanto a usuarios, es posible hacerlo con variables de session? que cada usuario lleve su contador de intentos fallidos?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de xve
Val: 3.943
Oro
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

Contador con variable de session

Publicado por xve (6935 intervenciones) el 15/07/2015 07:44:22
Hola Jesus, no te entiendo muy bien... lo que tu me estas preguntando, es si varios usuarios diferentes intentan acceder desde la misma maquina? y van poniendo los valores erróneamente?

Seria este tu escenario?

Porque si cada usuario tiene una maquina diferente, es lo que hemos comentado!!!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Jesus

Contador con variable de session

Publicado por Jesus (12 intervenciones) el 15/07/2015 15:28:35
no disculpa si no me supe explicar, tengo un login y por ejemplo yo tengo un intento fallido de ingreso al sistema, ya tengo en el contador 1 intento fallido, ok pero si viene otro usuario y el logueo no fue exitoso le suma los dos intentos fallidos, el mio y el de el lo que quiero es que cada usuario tenga su contador de intentos fallidos de forma individual.

Y muchas gracias xve en lo que me puedas ayudar.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de xve
Val: 3.943
Oro
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

Contador con variable de session

Publicado por xve (6935 intervenciones) el 16/07/2015 07:45:02
Hola Jesus, creo que te he entendido, en un mismo ordenador, varios usuarios diferentes lo van a utilizar...

Lo que puedes hacer, es crear un contador para cada usuario... algo así:
1
$_SESSION[$_POST['login']]++;

Lo que generaras una variable por cada nombre de usuario distinto... pero si el usuario se equivocad de login, empieza el contador nuevamente.

Las variables de sesión, por defecto tienen una vida de 30 minutos...

Esto te valdría?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar