OiO.lk Blog PHP How do I resolve error messages involving session handling?
PHP

How do I resolve error messages involving session handling?


I have a login page (login.php) with the following code (PHP part and form):

<?php

session_start();

if (isset($_SESSION['signUpBtn']) && isset($_SESSION['role'])) {
  // Redirect the user to the appropriate interface based on the role
  if ($_SESSION['role'] === 'user') {
    header("Location: user_index.php");
    exit();
  } elseif ($_SESSION['role'] === 'consultant') {
    header("Location: consultant_index.php");
    exit();
  }
} elseif (isset($_SESSION['signUpBtn']) && !isset($_SESSION['role'])) {
  header("Location: role.php");
}

?>

    <div class="container">
      <form id="mainForm" action="javascript:void(0)" method="post">
        <div class="login">
          <h2 class="textHead">MedConnect</h2>
          <h2 class="logintxt">Log In to Your Account</h2>
          <input type="text" id="loginemailtxt" class="loginemailtxt" name="logInEmail" placeholder="Email Address">
          <input type="password" id="loginpwdtxt" class="loginpwdtxt" name="logInPassword" placeholder="Password">
          <button class="loginbtn" id="loginBtn" type="submit" name="logInBtn" onclick="checkLogin()">Log In</button>
          <h5 id="signuptext" onclick="showorHide('signup','login')" style="margin-top: 50px; text-align: center;">Don't have an Account? <u style="cursor: pointer;">Sign Up</u></h5>
          <h6 style="text-align: center;">By clicking "Log In", you log back into your Existing Account</h6>
          <h5 id="loginNoEmail">Please enter your email address</h5>
          <h5 id="loginNoPassword">Please enter your password</h5>
          <h5 id="loginIncorrectCreds">Incorrect Email or Password</h5>
        </div>

        <div class="signup" style="display: none">
          <h2 class="textHead">MedConnect</h2>
          <h2 class="logintxt">Create a New Account</h2>
          <input id="signupnametxt" type="text" class="signupnametxt" name="signUpName" placeholder="Name">
          <input id="signupemailtxt" type="text" class="signupemailtxt" name="signUpEmail" placeholder="Email Address">
          <input id="signuppwdtxt" type="password" class="signuppwdtxt" name="signUpPassword" placeholder="Create Password">
          <button id="signupbtn" class="signupbtn" type="submit" name="signUpBtn" onclick="checkEmail()">Sign Up</button>
          <h5 id="logintext" onclick="showorHide('login','signup')" style="margin-top: 50px; text-align: center;">Already a Member? <u style="cursor: pointer;">Log In</u></h5>
          <h6 style="margin-top: 5px; text-align: center;">By clicking "Sign Up", you agree to our <u style="cursor: pointer;">Terms</u> and <u style="cursor: pointer;">Privacy Policy</u></h6>
          <h5 id="signupNoName" class="error-message">Please enter your name</h5>
          <h5 id="signupNoEmail" class="error-message">Please enter your email address</h5>
          <h5 id="signupNoPwd" class="error-message">Please create a password</h5>
          <h5 id="signupValidEmail" class="error-message">Please enter a valid email address</h5>
          <h5 id="signupValidPwd" class="error-message">Your password must be above 6 characters</h5>
          <h5 id="signupEmailExists" class="error-message">Email is already registered</h5>
        </div>
      </form>

      <div class="information">
        <h2 class="infoHead1">All-In-One</h2>
        <h2 class="infoHead2">Medical Consultancy Platform</h2>
        <div class="infoIcons">
          <i class="fa-solid fa-person"></i>
          <i class="fa-solid fa-calendar-check"></i>
          <i class="fa-solid fa-handshake-angle"></i>
          <h6 style="text-align: center;">Connect with <br>Consultants</h6>
          <h6 style="text-align: center;;">Book Online Interactions <br>Anytime</h6>
          <h6 style="text-align: center;">Volunteer as a <br>Verified Consultant</h6>
        </div>
        <div class="infoIcons" style="margin-top: 20px;">
          <i class="fa-brands fa-youtube"></i>
          <i class="fa-solid fa-file"></i>
          <i class="fa-solid fa-magnifying-glass"></i>
          <h6 style="text-align: center;">Self-Educate with <br>Resources</h6>
          <h6 style="text-align: center;">Get Personalised, Detailed <br>Prescriptions</h6>
          <h6 style="text-align: center;">Search for specific <br>Medical Help</h6>
        </div>
        <h5>Non Profit • Start for Free • Cancel Anytime</h5>
      </div>
    </div>

    <script type="text/javascript">

        // Toggling between the Log In and Sign Up DIVs

        function showorHide(showDivName, hideDivName) {
            var showDiv = document.getElementsByClassName(showDivName);
            var hideDiv = document.getElementsByClassName(hideDivName);

            hideDiv[0].style.display = "none";
            showDiv[0].style.display = "grid";
        }

        // Log In Validation System

        // Input Fields
        var logInEmail = document.getElementById("loginemailtxt");
        var logInPwd = document.getElementById("loginpwdtxt");
        // Error Messages
        var loginNoEmail = document.getElementById("loginNoEmail");
        var loginNoPassword = document.getElementById("loginNoPassword");
        var loginIncorrectCreds = document.getElementById("loginIncorrectCreds");
        // Log In button
        var loginBtn = document.getElementById("loginBtn");

        loginBtn.addEventListener("click", function(e) {
          e.preventDefault();
          if(logInEmail.value === "" && logInPwd.value === "") {
            // error messages
            loginNoEmail.style.visibility = 'visible';
            loginNoPassword.style.visibility = 'visible';
            loginIncorrectCreds.style.visibility = 'hidden';
            // borders
            logInEmail.style.border="2px solid red";
            logInPwd.style.border="2px solid red";
          } else if (logInEmail.value === "") {
            // error messages
            loginNoEmail.style.visibility = 'visible';
            loginNoPassword.style.visibility = 'hidden';
            loginIncorrectCreds.style.visibility = 'hidden';
            // borders
            logInEmail.style.border="2px solid red";
            logInPwd.style.border="2px solid green";
          } else if (logInPwd.value === "") {
            // error messages
            loginNoEmail.style.visibility = 'hidden';
            loginNoPassword.style.visibility = 'visible';
            loginIncorrectCreds.style.visibility = 'hidden';
            // borders
            logInEmail.style.border="2px solid green";
            logInPwd.style.border="2px solid red";
          } else {
            // error messages
            loginNoEmail.style.visibility = 'hidden';
            loginNoPassword.style.visibility = 'hidden';
            loginIncorrectCreds.style.visibility = 'hidden';
            // borders
            logInEmail.style.border="2px solid green";
            logInPwd.style.border="2px solid green";
            document.getElementById('mainForm').submit();
          }
        });

        // Sign Up Validation System

        // Input Fields
        var signUpName = document.getElementById('signupnametxt');
        var signUpEmail = document.getElementById('signupemailtxt');
        var signUpPassword = document.getElementById('signuppwdtxt');
        // Error Messages
        var signupNoName = document.getElementById('signupNoName');
        var signupNoEmail = document.getElementById('signupNoEmail');
        var signupNoPwd = document.getElementById('signupNoPwd');
        var signupValidEmail = document.getElementById('signupValidEmail');
        var signupValidPwd = document.getElementById('signupValidPwd');
        var signupEmailExists = document.getElementById('signupEmailExists');
        // Sign Up button
        var btnSubmit = document.getElementById('signupbtn');

        btnSubmit.addEventListener('click', () => {
          if(signUpName.value === "") {
            signUpName.style.border="2px solid red";
            signupNoName.style.visibility = 'visible';
            signupEmailExists.style.visibility = 'hidden';
          } else {
            signUpName.style.border="2px solid green";
            signupNoName.style.visibility = 'hidden';
          }

          if(signUpEmail.value === "") {
            signUpEmail.style.border="2px solid red";
            signupNoEmail.style.visibility = 'visible';
          } else if (!validateEmail(signUpEmail.value)) {
            signUpEmail.style.border="2px solid red";
            signupValidEmail.style.visibility = 'visible';
            signupEmailExists.style.visibility = 'hidden';
          } else {
            signUpEmail.style.border="2px solid green";
            signupValidEmail.style.visibility = 'hidden';
            signupNoEmail.style.visibility = 'hidden';
            signupEmailExists.style.visibility = 'hidden';
          }

          if(signUpPassword.value === "") {
            signUpPassword.style.border="2px solid red";
            signupNoPwd.style.visibility = 'visible';
            signupEmailExists.style.visibility = 'hidden';
          } else if (signUpPassword.value.length < 6) {
            signUpPassword.style.border="2px solid red";
            signupValidPwd.style.visibility = 'visible';
            signupEmailExists.style.visibility = 'hidden';
          } else {
            signUpPassword.style.border="2px solid green";
            signupValidPwd.style.visibility = 'hidden';
            signupNoPwd.style.visibility = 'hidden';
          }

          if(signUpName.value.length > 0 && signUpEmail.value.length > 0 && signUpPassword.value.length >= 6) {
            document.getElementById('mainForm').submit();
          }
        });

    </script>

    <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
    <script src="script.js"></script>
    <script defer src="https://use.fontawesome.com/releases/v6.4.0/js/all.js"></script>
  </body>
</html>

Now, when I sign up, everything is well and good. However, after I log in and get redirected to the home page (user_index.php) and then click on the Your Profile button to go to user_profile.php, I’m faced with these two error messages:

Warning: Undefined array key "signUpEmail" in /Applications/MAMP/htdocs/medConnect/user_profile.php on line 6

Warning: Undefined array key "signUpPassword" in /Applications/MAMP/htdocs/medConnect/user_profile.php on line 7

Here is my user_profile.php code:

<?php

session_start();

$userName = $_SESSION['signUpName'];
$userEmail = $_SESSION['signUpEmail'];
$userPassword = $_SESSION['signUpPassword'];

// making the database connection

$dbHost = "localhost";
$dbUser = "root";
$dbPass = "root";
$database = "medconnect";

$connection = mysqli_connect($dbHost, $dbUser, $dbPass, $database) or die ("Sorry, couldn't connect to the database");

if (!isset($_SESSION['signUpBtn'])) {
  header("Location:login.php"); // Not Logged In (Redirect Back to Login/Sign Up Page)
} elseif (isset($_SESSION['signUpBtn']) && !isset($_SESSION['role'])) {
  header("Location:role.php");
} elseif ($_SESSION['role'] === 'consultant') {
  header("Location:consultant_index.php");
}

// user age
if (isset($_POST['user-age-btn'])) {
    $user_age = $_POST['user_age'];
    $update = "UPDATE users SET age="$user_age" WHERE email="$userEmail"";
    if(mysqli_query($connection, $update)) {
        // Query the user's age from the database after the update
        $result = mysqli_query($connection, "SELECT age FROM users WHERE email="$userEmail"");
        if ($row = mysqli_fetch_assoc($result)) {
            $user_age = $row['age'];
            $_SESSION['user_age'] = $user_age;
        }
    }
}

if (isset($_SESSION['user_age'])) {
    $user_age = $_SESSION['user_age'];
} else {
    $user_age = "";
}

// user gender
if (isset($_POST['user-gender-btn'])) {
    $user_gender = $_POST['user_gender'];
    $update = "UPDATE users SET gender="$user_gender" WHERE email="$userEmail"";
    if(mysqli_query($connection, $update)) {
        // Query the user's gender from the database after the update
        $result = mysqli_query($connection, "SELECT gender FROM users WHERE email="$userEmail"");
        if ($row = mysqli_fetch_assoc($result)) {
            $gender_age = $row['gender'];
            $_SESSION['user_gender'] = $user_gender;
        }
    }
}

if (isset($_SESSION['user_gender'])) {
    $user_gender = $_SESSION['user_gender'];
} else {
    $user_gender = "";
}

// user nationality
if (isset($_POST['user-nationality-btn'])) {
    $user_nationality = $_POST['user_nationality'];
    $update = "UPDATE users SET country = '$user_nationality' WHERE email="$userEmail"";
    if(mysqli_query($connection, $update)) {
        // Query the user's nationality from the database after the update
        $result = mysqli_query($connection, "SELECT country FROM users WHERE email="$userEmail"");
        if ($row = mysqli_fetch_assoc($result)) {
            $user_nationality = $row['country'];
            $_SESSION['user_nationality'] = $user_nationality;
        }
    }
}

if (isset($_SESSION['user_nationality'])) {
    $user_nationality = $_SESSION['user_nationality'];
} else {
    $user_nationality = "";
}

 ?>

  <!-- Navigation Bar -->

  <nav class="navbar">
    <h1 onclick="location.href="user_index.php"" class="head">MedConnect</h1>

    <ul class="nav-links">
      <div class="menu">
        <li><h3 onclick="location.href="user_consult.php"">Consult</h3></li>
        <li><h3>Resources</h3></li>
        <li><h3>About</h3></li>
        <li><h3>Records</h3></li>
        <li><h3 onclick="location.href="user_profile.php"" class="profile-btn" style="color: white;">Your Profile</h3></li>
      </div>
    </ul>
  </nav>

  <div class="heading-txt">
    <h1>Your Profile</h1>
    <h3>Welcome, <?php echo $userName; ?></h3>
  </div>

  <div class="container-1">
    <div class="left-buttons">
      <button id="personal-details-wrapper" class="wrapper wrapper-1"><i style="margin-right: 10px;" class="fa-solid fa-circle-info"></i>Personal Details</button>
      <button id="contact-details-wrapper" class="wrapper wrapper-2"><i style="margin-right: 10px;" class="fa-solid fa-address-card"></i>Contact and About</button>
      <button id="your-reviews-wrapper" class="wrapper wrapper-3"><i style="margin-right: 10px;" class="fa-solid fa-star"></i>Your Reviews</button>
      <button id="manage-profile-wrapper" class="wrapper wrapper-4"><i style="margin-right: 10px;" class="fa-solid fa-list-check"></i>Manage Profile</button>
      <button id="help-and-more-wrapper" class="wrapper wrapper-5"><i style="margin-right: 10px;" class="fa-solid fa-question"></i>Help and More</button>
    </div>
    <hr>
    <div class="personal-details" id="personal-details">
      <div class="personal-details-1">
        <div class="personal-details-name">
          <h2 style="color: white;">Name</h2>
          <h3 style="background-color: white; padding: 8px; width: 250px; border-radius: 5px;"><?php echo $userName; ?></h3>
        </div>
        <div class="personal-details-email">
          <h2 style="color: white;">Email Address</h2>
          <h3 style="background-color: white; padding: 8px; border-radius: 5px;"><?php echo $userEmail; ?></h3>
        </div>
        <div class="personal-details-password">
          <h2 style="color: white;">Password</h2>
          <h3 id="user_password" style="background-color: white; padding: 8px; border-radius: 5px;"><?php echo $userPassword; ?></h3>
          <button style="font-family: Lora; font-size: 20px; border-radius: 5px; margin-top: -50px; margin-left: 200px; width: 40px; border: none; cursor: pointer;" type="button" onclick="togglePassword('user_password')"><i class="fa-solid fa-eye"></i></button>
        </div>
      </div>

How can I go about fixing this? Appreciate any help. Thanks a lot.



You need to sign in to view this answers

Exit mobile version