Advertisement
Guest User

Untitled

a guest
Sep 25th, 2017
58
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.33 KB | None | 0 0
  1. if (logged_in() === true){
  2. echo "Mostramos el nombre del usuario y ocultamos el enlace de login.php";
  3. }else{
  4. echo "no logeado, aquí se muestra el enlace del login.php";
  5. }
  6.  
  7. if (logged_in() === true) {
  8. $session_user_id = $_SESSION['user_id'];
  9. $user_data = user_data($session_user_id, 'user_id', 'username', 'password', 'first_name', 'last_name', 'email', 'profile');
  10. if (user_active($user_data['username']) === false){
  11. session_destroy();
  12. header('location: index.php');
  13. exit();
  14. }
  15. }
  16.  
  17. <?php
  18. session_start();
  19. if (isset($_POST)) {
  20. $message= $username = $password = $usernameBD = $passwordDB = NULL;
  21. $captcha = true;
  22. $logueado = false;
  23. $attemptsIP = 8;
  24. $attemptsU = 5;
  25.  
  26. if(isset($_POST) && isset($_POST["vcode"]) && $_POST["vcode"]!=$_SESSION["vcode"]) {
  27. $captcha = false;
  28. $message = "Los caracteres escritos no coinciden con la palabra de verificación. Inténtalo de nuevo.";
  29. }else{
  30. unset($_SESSION['id_user']);
  31. }
  32.  
  33. $addres = $_SERVER['REMOTE_ADDR'];
  34.  
  35. require_once'app/php/config.ini.php';
  36. $stmtA = $con->prepare("SELECT attempts FROM failed_attempt WHERE ip=? AND datetime BETWEEN DATE_SUB( NOW() , INTERVAL 1 DAY ) AND NOW()");
  37.  
  38. $stmtA->bind_param("s",$addres);
  39. $stmtA->execute();
  40. $stmtA->store_result();
  41.  
  42. $check_result = $stmtA->num_rows;
  43. if ($stmtA->num_rows===1) {
  44. $stmtA->bind_result($failed_login_attempt);
  45. $stmtA->fetch();
  46. $stmtA->close();
  47. } else {
  48. $stmtA->close();
  49. $failed_login_attempt=0;
  50. }
  51.  
  52. if(count($_POST)>0 && $captcha == true) {
  53. $username = $_POST["username"] ?: '';
  54. $password = $_POST["password"] ?: '';
  55. $stmtB = $con->prepare("SELECT id_user,username,password,logindatetime, CASE WHEN logindatetime BETWEEN DATE_SUB( NOW() , INTERVAL 2 MINUTE ) AND NOW() THEN '1' ELSE '0' END as logueado FROM users where username=? OR email=? AND active=? LIMIT 1");
  56. $stmtB->bind_param("ssi",$username,$username,$active);
  57. $active=1;
  58. $stmtB->execute();
  59. $stmtB->store_result();
  60. if ($stmtB->num_rows===1) {
  61. $stmtB->bind_result($id_userBD,$usernameBD,$passwordDB,$logindatetime,$activeBD);
  62. if ($stmtB->fetch()){
  63. if (password_verify($password, $passwordDB)) {
  64. $check_password = true;
  65. } else {
  66. $check_password = false;
  67. }
  68. } $stmtB->close();
  69. } else {
  70. $stmtB->close();
  71. $check_password = false;
  72. }
  73.  
  74. if($check_result===0){
  75. $stmtC = $con->prepare("INSERT INTO failed_attempt (ip,attempts,datetime) VALUES (?, ?, NOW())");
  76. $stmtC->bind_param("si",$addres,$attempts);
  77.  
  78. $attempts = 1;
  79. //$datetime = date('Y-m-d H:i:s', time());
  80. $stmtC->execute();
  81. $stmtC->close();
  82.  
  83. } else {
  84. if($failed_login_attempt<$attemptsIP){
  85. $accountant = $failed_login_attempt + 1;
  86. $stmtD = $con->prepare("UPDATE failed_attempt SET attempts=?, datetime=NOW() WHERE ip = ?");
  87. $stmtD->bind_param("is",$accountant,$addres);
  88. //$datetime = date('Y-m-d H:i:s', time());
  89. $stmtD->execute();
  90. $stmtD->close();
  91. }
  92. }
  93.  
  94. if ($username==$usernameBD && $check_password == true && $logindatetime!=NULL && $activeBD==1) {
  95. $logueado = true;
  96. } else {
  97. $attempU = 0;
  98.  
  99. if($usernameBD!= null && $usernameBD!=''){
  100.  
  101. $id_user = $id_userBD;
  102.  
  103. $stmtE = $con->prepare("SELECT attempts FROM failed_login WHERE id_user =? AND datetime BETWEEN DATE_SUB( NOW() , INTERVAL 15 MINUTE ) AND NOW() ");
  104. $stmtE->bind_param("i",$id_user);
  105. $stmtE->execute();
  106. $stmtE->store_result();
  107. $queryResult = $stmtE->num_rows;
  108.  
  109. if ($queryResult===0) {
  110. $stmtF = $con->prepare("INSERT INTO failed_login (id_user, attempts, ip, datetime) VALUES (?, ?, ?, NOW())");
  111. $stmtF->bind_param("iis",$id_user,$attempts,$addres);
  112. $attempts=1;
  113. $stmtF->execute();
  114. $stmtF->close();
  115. } else {
  116. $stmtE->bind_result($attempU_BD);
  117. $stmtE->fetch();
  118.  
  119. $attempU = $attempU_BD+1;
  120.  
  121. if ($attempU_BD<$attemptsU) {
  122. $stmtG = $con->prepare("UPDATE failed_login SET attempts=?, ip = ?, datetime=NOW() where id_user =?");
  123. $stmtG->bind_param("isi",$attempU,$addres,$id_user);
  124. $stmtG->execute();
  125. $stmtG->close();
  126. }
  127.  
  128. } $stmtE->close();
  129. }
  130. }
  131.  
  132. //validando Usuario y Contraseña - INICIO
  133. if (empty($username) || empty($password)) {
  134. $message = "Es necesario introducir un nombre de usuario y contraseña";
  135. } elseif($failed_login_attempt>=$attemptsIP){
  136. $message = "'IP' bloqueada por 1 dia";
  137. } elseif($logueado){
  138. $message = "'Usuario' ya se encuentra logueado.";
  139. } elseif($attempU>=$attemptsU){
  140. $message = "'Usuario' bloqueado por 15 minutos";
  141. } elseif ($username != $usernameBD) {
  142. $message = "El 'Usuario' que has introducido no coincide. ";
  143. } elseif ($check_password == false) {
  144. $message = "Tu 'Contraseña' introducido no coincide. ";
  145. } else {
  146. $_SESSION["id_user"] = $id_userBD;
  147. }
  148. //validando Usuario y Contraseña - FIN
  149.  
  150. if(isset($_SESSION["id_user"])) {
  151. echo '<script>window.location="index.php"</script>';
  152. }
  153. }
  154. }
  155. ?>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement