2021年4月9日星期五

PHP - login is not working on single submission

I'm implementing a login for a small application. I created a login with a simple authentication query and creating a session for that, It worked totally fine. But later on, when I have made the session system a little bit complex than to log in user has to submit a login form twice to log in.

I have tried going through php-session-lost-after-redirect and others as well but have no clue what's the issue.

I'm attaching login layout, session check file & login logic files so you can have a better view of the issue. LOG IN LOGIC:

<?php   $msg = "";   if(isset($_POST['submitBtnLogin'])) {    $username = trim($_POST['username']);    $password = md5(trim($_POST['password']));    if($username != "" && $password != "") {      try {        $query = "select * from `user` where `email`=:username and `password`=:password";        $stmt = $pdo->prepare($query);        $stmt->bindParam('username', $username, PDO::PARAM_STR);        $stmt->bindValue('password', $password, PDO::PARAM_STR);        $stmt->execute();        $row   = $stmt->fetch(PDO::FETCH_ASSOC);        $count = $stmt->rowCount();        if($count == 1 && !empty($row)) {          if($row['verified']==0){            $msg = "Your account is not approved by admin. Please contact your admin to get it approved!";          }else{              $userId=$row["id"];              $query = "select * from `bbfdccAppSessions` where `userId`=:userId";              $stmt = $pdo->prepare($query);              $stmt->bindParam('userId', $userId, PDO::PARAM_STR);              $stmt->execute();              $sessiondata= $stmt->fetch(PDO::FETCH_ASSOC);              $sesscount= $stmt->rowCount();              if($sesscount == 1 && !empty($sessiondata)){                  $query = 'DELETE FROM `bbfdccAppSessions` WHERE userId=:auserId';                  $stmt = $pdo->prepare($query);                  $stmt->bindParam('auserId', $userId, PDO::PARAM_STR);                  $stmt->execute();              }else{                  $currentTimeStamp=time();                  $verified=1;                  $query = "INSERT INTO `bbfdccAppSessions`(`userId`, `sesstimestamp`, `verified`) VALUES (:userId,:timestampNew,:verified)";                  $stmt = $pdo->prepare($query);                  $stmt->bindParam('userId', $userId, PDO::PARAM_STR);                  $stmt->bindValue('timestampNew', $currentTimeStamp, PDO::PARAM_STR);                  $stmt->bindValue('verified', $verified, PDO::PARAM_STR);                  $stmt->execute();                  $query = "select * from `bbfdccAppSessions` where `userId`=:userId";                  $stmt = $pdo->prepare($query);                  $stmt->bindParam('userId', $userId, PDO::PARAM_STR);                  $stmt->execute();                  $sessiondata= $stmt->fetch(PDO::FETCH_ASSOC);                  if (!isset($_SESSION)) {                      session_start();                }                  $_SESSION['currentSession']=$currentTimeStamp;                  $_SESSION['sessionSec']=$sessiondata['sessId'];                  $msg = "Log in Success!";                  //var_dump ($_SESSION);                  //exit();                  header('Location: /bbfdcc-app/',  true,  301);                  session_write_close();                  exit();              }              }        } else {          $msg = "Invalid username and password!";        }      } catch (PDOException $e) {        echo "Error : ".$e->getMessage();      }    } else {      $msg = "Both fields are required!";    }  }  ?>  

LOGIN PAGE LAYOUT:

<?php   session_start();  if(!isset($_SESSION['currentSession']) && !isset($_SESSION['sessionSec'])){  require 'loginlogic.php';  ?>  <!DOCTYPE html>  <html lang="en">    <head>            <meta charset="utf-8">      <meta http-equiv="X-UA-Compatible" content="IE=edge">      <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">      <meta name="description" content="">      <meta name="author" content="">      <noscript><h1 style="text-align:center; font-size:2em; padding-bottom:100000px; color:black; background:white; padding-top:400px;">JavaScript is off. Please enable to view full site.</h1></noscript>      <title>BBFDC - Login</title>        <!-- Custom fonts for this template-->      <link href="vendor/fontawesome-free/css/all.min.css" rel="stylesheet" type="text/css">      <link          href="https://fonts.googleapis.com/css?family=Nunito:200,200i,300,300i,400,400i,600,600i,700,700i,800,800i,900,900i"          rel="stylesheet">        <!-- Custom styles for this template-->      <link href="css/sb-admin-2.min.css" rel="stylesheet">    </head>    <body class="bg-gradient-primary">        <div class="container">            <!-- Outer Row -->          <div class="row justify-content-center">                <div class="col-xl-10 col-lg-12 col-md-9">                    <div class="card o-hidden border-0 shadow-lg my-5">                      <div class="card-body p-0">                          <!-- Nested Row within Card Body -->                          <div class="row">                              <div class="col-lg-6 d-none d-lg-block bg-login-image">                                                                </div>                              <div class="col-lg-6">                                  <div class="p-5">                                          <div class="text-center">                                              <div class="sidebar-brand-text mx-3" style="padding: 20px;"><img src="img/bbfdc logo.png" width="150px;"></div>                                                <h1 class="h4 text-gray-900 mb-4">Welcome Back!</h1>                                          </div>                                          <form class="user" method="post">                                              <div class="form-group">                                                  <input type="email" class="form-control form-control-user"                                                      id="exampleInputEmail" aria-describedby="emailHelp"                                                      placeholder="Enter Email Address..." name="username">                                              </div>                                              <div class="form-group">                                                  <input type="password" class="form-control form-control-user"                                                      id="exampleInputPassword" placeholder="Password" name="password">                                              </div>                                          <input type="submit" name="submitBtnLogin" id="submitBtnLogin" value="Login" class="btn btn-primary btn-user btn-block" />                                              <br>                                              <span class="loginMsg" style="color:red;"><?php echo @$msg;?></span>                                          </form>                                          <hr>                                          <div class="text-center">                                              <a class="small" href="forgot-password.html">Forgot Password?</a>                                          </div>                                          <div class="text-center">                                              <a class="small" href="register.php">Create an Account!</a>                                          </div>                                  </div>                              </div>                          </div>                      </div>                  </div>                </div>            </div>        </div>        <!-- Bootstrap core JavaScript-->      <script src="vendor/jquery/jquery.min.js"></script>      <script src="vendor/bootstrap/js/bootstrap.bundle.min.js"></script>        <!-- Core plugin JavaScript-->      <script src="vendor/jquery-easing/jquery.easing.min.js"></script>        <!-- Custom scripts for all pages-->      <script src="js/sb-admin-2.min.js"></script>    </body>    </html>  <?php  }else{      header("Location: /bbfdcc-app/");      exit();  }  ?>  
https://stackoverflow.com/questions/67029813/php-login-is-not-working-on-single-submission April 10, 2021 at 08:42AM

没有评论:

发表评论