What's new

Help Warning: Undefined array key bpmsaid

Status
Not open for further replies.

Alieson09

Forum Expert
Joined
Aug 30, 2021
Posts
2,246
Solutions
27
Reaction
2,961
Points
2,085
Warning: Undefined array key bpmsaid"
Warning: Undefined variable $result
Fatal error: Uncaught TypeError: mysqli_fetch_array():
PHP:
<?php
$host = "localhost";
$user = "root";
$password = "";
$db = "bpms2db";

session_start();

$data = mysqli_connect($host, $user, $password, $db);

if ($data === false) {
    die("connection error");
}

if ($_SERVER["REQUEST_METHOD"] == "POST") {
    $email = $_POST["email"];
    $password = $_POST["password"];

    $sql = "select * from login where Email ='" . $email . "' AND password='" . $password . "' ";

    $result = mysqli_query($data, $sql);

    if (mysqli_num_rows($result) == 1) {
        $row = mysqli_fetch_array($result);
        $data->close();

        if ($row["usertype"] == "user") {
            $_SESSION["email"] = $email;
            header("location:dashboarduser.php");
        } elseif ($row["usertype"] == "admin") {
            $_SESSION["email"] = $email;
            header("location:admin/index.php");
        } else {
            echo "<script>alert('email or password incorrect');</script>";
        }
    } else {
        echo "<script>alert('email or password incorrect');</script>";
    }
}

?>
<!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="">

    <title>BPMS - 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.css" rel="stylesheet">
    
</head>

<body class="bg-gradient-primary">
    <header>
        <div class="logo">
        <p>Bicycle Parking Management System</p>
              </div>
      <nav>
        <ul>
          <li><a href="#" class="navf">Home</a></li>
          <li><a href="#" class="navf">About</a></li>
          <li><a href="#" class="navf">Services</a></li>
            </ul>
          </nav>
        </header>
    <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">
                                        <h1 class="h4 text-gray-900 mb-4">Welcome To BPMS !</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" name="email"
                                                placeholder="Email Address..." required="true">
                                        </div>
                                        <div class="form-group">
                                            <input type="password" class="form-control form-control-user"
                                                id="exampleInputPassword" placeholder="Password" name="password" required="true">
                                        </div>
                                        <div class="form-group">
                                            <div class="custom-control custom-checkbox small">
                                                <input type="checkbox" class="custom-control-input" id="customCheck">
                                                <label class="custom-control-label" for="customCheck">Remember
                                                    Me</label>
                                            </div>
                                        </div>
                                        <button type="submit" name="login" class="btn btn-primary btn-user btn-block">
                                            Login
                                        </button>
                                        <hr>
                                    </form>
                                    <hr>
                                    <div class="text-center">
                                        <a class="small" href="forgotpassword.php">Forgot Password?</a>
                                    </div>
                                    <div class="text-center">
                                        <a class="small" href="signup.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:
<?php
session_start();
include('includes/connect.php');

  if(isset($_POST['submit'])) {
    $email=$_SESSION['bpmsaid'];
    $cpassword=($_POST['currentpassword']);
    $newpassword=($_POST['newpassword']);
    $query=mysqli_query($con,"select * from login where Email='$email' and password='$cpassword'");
    $row=mysqli_fetch_array($query);
    if($row["usertype"] == "user">0){
      $ret=mysqli_query($con,"update login set password='$newpassword' where Email='$email'");
      echo '<script>alert("Your password successully changed.")</script>';
    }
    else {
      echo '<script>alert("Your current password is wrong.")</script>';
    }
  }

?>
<head>
    <title>BPMS - Change Password</title>
<script type="text/javascript">
function checkpass()
{
if(document.changepassword.newpassword.value!=document.changepassword.confirmpassword.value)
{
alert('New Password and Confirm Password field does not match');
document.changepassword.confirmpassword.focus();
return false;
}
return true;
}
</script>
</head>
<body>
   <?php include_once('includes/header.php');?>
   <?php include_once('includes/navbar.php');?>
        <div class="container">
                <div class="row">
                    <div class="col-lg-6">
                        <div class="card">                         
                        </div> <!-- .card -->
                    </div><!--/.col-->
                    <div class="col-lg-12">
                        <div class="card">
                            <div class="card-header">
                                <strong>Change </strong> Password
                            </div>
                            <div class="card-body card-block">
                                <form action="" method="post" enctype="multipart/form-data" class="user" name="changepassword" onsubmit="return checkpass();">
                                    <?php
$email=$_SESSION['bpmsaid'];
$row=mysqli_query($con,"select * from login where Email='$email'");
$cnt=1;
while ($row=mysqli_fetch_array($result)) {

?>
                                <div class="row form-group">
                                        <div class="col col-md-3"><label for="text-input" class=" form-control-label">Current Password</label></div>
                                        <div class="col-12 col-md-9"><input type="password" name="currentpassword" class=" form-control" required= "true" value=""></div>
                                    </div>
                                    <div class="row form-group">
                                        <div class="col col-md-3"><label for="email-input" class=" form-control-label">New Password</label></div>
                                        <div class="col-12 col-md-9"><input type="password" name="newpassword" class="form-control" value="" required="true"></div>
                                    </div>
                                    <div class="row form-group">
                                        <div class="col col-md-3"><label for="email-input" class=" form-control-label">Confirm Password</label></div>
                                        <div class="col-12 col-md-9"><input type="password" name="confirmpassword" class="form-control" value="" required="true"></div>
                                    </div>
                                   <p style="text-align: center;"> <button type="submit" class="btn btn-primary btn-user btn-block" name="submit" >Change</button></p>
                                </form>
                            </div>                           
                        </div>                       
                    </div>
                    <div class="col-lg-6">                 
                </div>
            </div>
        </div><!-- .animated -->
    </div><!-- .content -->
</body>
</html>
    <?php
include('includes/scripts.php');
include('includes/footer.php');
?>
<?php }  ?>
 
The first error "Undefined array key bpmsaid" is likely caused by not initializing the $_SESSION['bpmsaid'] variable before using it in the change_password.php file. You should check if the session variable is set before using it to avoid this error, like this:

Code:
if(isset($_SESSION['bpmsaid'])) {
 // Rest of the code that uses $_SESSION['bpmsaid']
}

The second error "Undefined variable $result" is caused by not defining the $result variable before using it in the change_password.php file. You should define $result before using it, like this:

Code:
$email=$_SESSION['bpmsaid'];
$row=mysqli_query($con,"select * from login where Email='$email'");
$result = mysqli_fetch_array($row);
$cnt=1;
while ($row=mysqli_fetch_array($result)) {
// Rest of the code that uses $result
}

The third error "Uncaught TypeError: mysqli_fetch_array()" is caused by using mysqli_fetch_array() on a variable that is not a result set. In this case, you are using it on the variable $result in the login.php file without checking if the query was successful. To avoid this error, you should check if the query was successful before using mysqli_fetch_array(), like this:

Code:
$result = mysqli_query($data, $sql);
if($result) {
  if (mysqli_num_rows($result) == 1) {
      $row = mysqli_fetch_array($result);
      // Rest of the code that uses $row
  } else {
      echo "<script>alert('email or password incorrect');</script>";
  }
} else {
  // Handle the error, for example:
  echo "Query error: " . mysqli_error($data);
}
 
The first error "Undefined array key bpmsaid" is likely caused by not initializing the $_SESSION['bpmsaid'] variable before using it in the change_password.php file. You should check if the session variable is set before using it to avoid this error, like this:

Code:
if(isset($_SESSION['bpmsaid'])) {
 // Rest of the code that uses $_SESSION['bpmsaid']
}

The second error "Undefined variable $result" is caused by not defining the $result variable before using it in the change_password.php file. You should define $result before using it, like this:

Code:
$email=$_SESSION['bpmsaid'];
$row=mysqli_query($con,"select * from login where Email='$email'");
$result = mysqli_fetch_array($row);
$cnt=1;
while ($row=mysqli_fetch_array($result)) {
// Rest of the code that uses $result
}

The third error "Uncaught TypeError: mysqli_fetch_array()" is caused by using mysqli_fetch_array() on a variable that is not a result set. In this case, you are using it on the variable $result in the login.php file without checking if the query was successful. To avoid this error, you should check if the query was successful before using mysqli_fetch_array(), like this:

Code:
$result = mysqli_query($data, $sql);
if($result) {
  if (mysqli_num_rows($result) == 1) {
      $row = mysqli_fetch_array($result);
      // Rest of the code that uses $row
  } else {
      echo "<script>alert('email or password incorrect');</script>";
  }
} else {
  // Handle the error, for example:
  echo "Query error: " . mysqli_error($data);
}
Parse error: syntax error, unexpected token "else"
PHP:
<?php
session_start();
include('includes/connect.php');

  if(isset($_SESSION['bpmsaid'])) {
 // Rest of the code that uses $_SESSION['bpmsaid']
    $email=$_SESSION['bpmsaid'];
    $cpassword=($_POST['currentpassword']);
    $newpassword=($_POST['newpassword']);
    $row=mysqli_query($con,"select * from login where Email='$email'");
    $result = mysqli_fetch_array($row);
    $cnt=1;
    while ($row=mysqli_fetch_array($result)){
      $ret=mysqli_query($con,"update login set password='$newpassword' where Email='$email'");
      echo '<script>alert("Your password successully changed.")</script>';
    }
    else {
      echo '<script>alert("Your current password is wrong.")</script>';
    }
  }

?>
<head>
    <title>BPMS - Change Password</title>
<script type="text/javascript">
function checkpass()
{
if(document.changepassword.newpassword.value!=document.changepassword.confirmpassword.value)
{
alert('New Password and Confirm Password field does not match');
document.changepassword.confirmpassword.focus();
return false;
}
return true;
}
</script>
</head>
<body>
   <?php include_once('includes/header.php');?>
   <?php include_once('includes/navbar.php');?>
        <div class="container">
                <div class="row">
                    <div class="col-lg-6">
                        <div class="card">                         
                        </div> <!-- .card -->
                    </div><!--/.col-->
                    <div class="col-lg-12">
                        <div class="card">
                            <div class="card-header">
                                <strong>Change </strong> Password
                            </div>
                            <div class="card-body card-block">
                                <form action="" method="post" enctype="multipart/form-data" class="user" name="changepassword" onsubmit="return checkpass();">
                                    <?php
$email=$_SESSION['bpmsaid'];
$row=mysqli_query($con,"select * from login where Email='$email'");
$cnt=1;
while ($row=mysqli_fetch_array($result)) {

?>
                                <div class="row form-group">
                                        <div class="col col-md-3"><label for="text-input" class=" form-control-label">Current Password</label></div>
                                        <div class="col-12 col-md-9"><input type="password" name="currentpassword" class=" form-control" required= "true" value=""></div>
                                    </div>
                                    <div class="row form-group">
                                        <div class="col col-md-3"><label for="email-input" class=" form-control-label">New Password</label></div>
                                        <div class="col-12 col-md-9"><input type="password" name="newpassword" class="form-control" value="" required="true"></div>
                                    </div>
                                    <div class="row form-group">
                                        <div class="col col-md-3"><label for="email-input" class=" form-control-label">Confirm Password</label></div>
                                        <div class="col-12 col-md-9"><input type="password" name="confirmpassword" class="form-control" value="" required="true"></div>
                                    </div>
                                   <p style="text-align: center;"> <button type="submit" class="btn btn-primary btn-user btn-block" name="submit" >Change</button></p>
                                </form>
                            </div>                           
                        </div>                       
                    </div>
                    <div class="col-lg-6">                 
                </div>
            </div>
        </div><!-- .animated -->
    </div><!-- .content -->
</body>
</html>
    <?php
include('includes/scripts.php');
include('includes/footer.php');
?>
<?php }  ?>
 
Parse error: syntax error, unexpected token "else"
The error "Parse error: syntax error, unexpected token 'else'" is caused by an issue in your PHP code. Specifically, your while loop in the change_password.php file is missing an opening brace. To fix this error, add an opening brace after the while loop statement, like this:

Code:
while ($row=mysqli_fetch_array($result)) {
    // Rest of the code that uses $row
}

Also, make sure that you have the closing brace for your if statement that checks if $_SESSION['bpmsaid'] is set. The fixed code should look like this:

Code:
<?php
session_start();
include('includes/connect.php');

if(isset($_SESSION['bpmsaid'])) {
    $email=$_SESSION['bpmsaid'];
    $cpassword=($_POST['currentpassword']);
    $newpassword=($_POST['newpassword']);
    $row=mysqli_query($con,"select * from login where Email='$email'");
    $result = mysqli_fetch_array($row);
    $cnt=1;
    while ($row=mysqli_fetch_array($result)) {
        $ret=mysqli_query($con,"update login set password='$newpassword' where Email='$email'");
        echo '<script>alert("Your password successully changed.")</script>';
    }
} else {
    echo '<script>alert("You are not logged in.")</script>';
}
?>
 
The error "Parse error: syntax error, unexpected token 'else'" is caused by an issue in your PHP code. Specifically, your while loop in the change_password.php file is missing an opening brace. To fix this error, add an opening brace after the while loop statement, like this:

Code:
while ($row=mysqli_fetch_array($result)) {
    // Rest of the code that uses $row
}

Also, make sure that you have the closing brace for your if statement that checks if $_SESSION['bpmsaid'] is set. The fixed code should look like this:

Code:
<?php
session_start();
include('includes/connect.php');

if(isset($_SESSION['bpmsaid'])) {
    $email=$_SESSION['bpmsaid'];
    $cpassword=($_POST['currentpassword']);
    $newpassword=($_POST['newpassword']);
    $row=mysqli_query($con,"select * from login where Email='$email'");
    $result = mysqli_fetch_array($row);
    $cnt=1;
    while ($row=mysqli_fetch_array($result)) {
        $ret=mysqli_query($con,"update login set password='$newpassword' where Email='$email'");
        echo '<script>alert("Your password successully changed.")</script>';
    }
} else {
    echo '<script>alert("You are not logged in.")</script>';
}
?>
Warning: Undefined array key "bpmsaid"
Warning: Undefined variable $result
Fatal error: Uncaught TypeError: mysqli_fetch_array(): Argument #1 ($result) must be of type mysqli_result, null given in C:\xampp\htdocs\bpms2\admin\change_password.php
 
Status
Not open for further replies.

Similar threads

Back
Top