What's new

Phc robot naputol yun karugtong

loktoy

Eternal Poster
Joined
Oct 20, 2014
Posts
1,166
Solutions
2
Reaction
103
Points
496
Age
30
bakit kaya di nagpapakita yun message alert na" Email|phone is not registered!" sa Validation ko

<?php
include "./config/config.php";
$email_address = $password = '';
$email_addressErr = $passwordErr = '';
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
if (empty($_POST['email'])) {
$email_addressErr = "Email|phone is required!";
} else {
$email_address = $_POST['email'];
}
if (empty($_POST['password'])) {
$passwordErr = "Password is required!";
} else {
$password = $_POST['password'];
}
if ($email_address && $password) { // Correct the variable name from $username to $email_address
$check_email = mysqli_query($con, "SELECT * FROM registration WHERE email_address = '$email_address'");
$check_email_row = mysqli_num_rows($check_email);
if ($check_email_row > 0) {
while ($row = mysqli_fetch_assoc($check_email)) {
$user_id = $row['user_id'];
$db_password = $row['password'];
$db_user_type = $row['user_type'];

if ($password == $db_password) {
session_start();
$_SESSION['user_id'] = $user_id;
if ($db_user_type == '1') {
$_SESSION['login_success_timestamp'] = time();
header("Location: admin/dashboard.php?login=success");
exit(); // Don't forget to exit after redirecting
} else {
$_SESSION['login_success_timestamp'] = time();
header("Location: user/dashboard.php?login=success");
exit(); // Don't forget to exit after redirecting
}

} else {
$passwordErr = "Password is incorrect!";

}
}
} else {
$email_addressErr = "Email|phone is not registered!";

}
}
}
?>


<!DOCTYPE html>
<HTMl:5>
<head>
<title>login</title>
<link rel="stylesheet" href="../Innerjoin/css/bootstrap.css">
<link rel="stylesheet" href="../Innerjoin/css/style.css">


</head>
<body>
<div class="body-background">
<div class="container col-xl-10 col-xxl-8 px-4 py-5">
<div class="row align-items-center g-lg-5 py-5">
<div class="col-lg-7 text-center text-lg-start">
<h1 class="display-5 fw-bold lh-1 text-body-emphasis mb-2">BUREAU OF SOILS & <BR> WATER MANAGEMENT| <br> ACCOUNTING SECTION</h1>
<div class="container">
<p class="col-lg-10 fs-6 lh-1 " style ="font-family:'MerriweatherLight';"><span class="dropCaps">B</span> = <span class="dropsmall">Boost
competence on S&W resources research and development to contribute towards agricultural productivity.</span><br>
<span class="dropCaps1">S</span> = <span class="dropsmall1"> Strengthen
linkages and partnerships, and ensure mandatory compliance to relevant statutory and regulatory requirements.</span>
<br>
<span class="dropCaps2">W</span> = <span class="dropsmall2"> Work
towards effective generation, development and delivery of relevant and innovative S&W products and services.</span>
<br>
<span class="dropCaps3">M</span> = <span class="dropsmall3"> Maintain
high level of integrity and utmost professionalism, and promote welfare of all employees.</span>
</p>
</div>
</div>
<div class=" col-lg-5">
<form id="loginForm" method= "POST" action = "" class="p-4 p-md-5 border rounded-3 bg-body-tertiary">
<div class="form-group">
<label for="exampleInputEmail1">Email address</label>
<input type="text" class="form-control form-control-sm" name="email" id="InputEmail1" aria-describedby="emailHelp" placeholder="Enter email | Phone Number">
<div class="error"></div>
<div class="error-message" id="emailErrorMessage"></div>
</div>
<div class="form-group mt-2">
<label for="exampleInputPassword1">Password</label>
<input type="password" class="form-control form-control-sm" name="password" id="InputPassword1" placeholder="Password">
<div class="error"></div>
<small id="emailHelp" class="form-text text-muted">We'll never share your Password with anyone else.</small>

</div>
<div class="form-group mt-3">
<button id="loginButton" class="w-100 btn btn-sm btn-lg btn-primary" type="submit">Login</button>
</div>
<div class="text-center mt-3 fw-bold">
<small class="text-body-primary"><a href ="signup.php">Forgot Password</a>.
</div>
<hr class="my-2">
<!-- <small class="text-body-secondary">By clicking Sign up, you agree to the terms of use.</small>
<div class=" mb-3">
<label> -->
<div class="text-center fs-6 fw-bold">
<small class="text-body-secondary"> I dont have an Account <a href ="signup.php">Signup</a>.
</div>
</div>
</form>
</div>
</div>
</div>
</div>
<script>
const form = document.getElementById('loginForm');
const email = document.getElementById('InputEmail1');
const password = document.getElementById('InputPassword1');
form.addEventListener('submit', e => {
e.preventDefault();
validateInputs();
});
const setError = (element, message) => {
const formgroup = element.parentElement;
const errorDisplay = formgroup.querySelector('.error');
errorDisplay.innerText = message;
formgroup.classList.add('error');
formgroup.classList.remove('success');
}
const setSuccess = element => {
const formgroup = element.parentElement;
const errorDisplay = formgroup.querySelector('.error');
errorDisplay.innerText = '';
formgroup.classList.add('success');
formgroup.classList.remove('error');
}
const isValidEmail = email => {
const re = /^(([^<>()[\]\\.,;:\s@"]+(\.[^<>()[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/;
return re.test(String(email).toLowerCase());
}
const validateInputs = () => {
const emailValue = email.value.trim();
const passwordValue = password.value.trim();
if(emailValue === ''){
setError(email, 'Email Address is required');
}else if (!isValidEmail(emailValue)){
setError(email, 'Provide a valid email address');
}else {
setSuccess(email);
}
if(passwordValue === ''){
setError(password, 'Password is required');
}else if (passwordValue.length < 8){
setError(password, 'Password must be at least 8 character.');
}else {
setSuccess(password);
}
const emailErrorMessage =document.getElementById('emailErrorMessage');
if (emailValue && email.classList.contains('success')) {
emailErrorMessage.innerText = '';
}else if (emailValue && email.classList.contains('error')) {
emailErrorMessage.innerText = 'Email|phone is not registered!';
}
}
</script>
</body>
</HTMl:5>
 
The reason why the "Email|phone is not registered!" message alert does not appear in your validation is because you have not included the code to display the error message when the email or phone number is not registered.

To fix this issue, you need to add the code to display the error message in the appropriate location. Here's how you can modify your code:

1. Add a new <div> element with the ID "emailErrorMessage" below the email input field in your HTML code. This will be used to display the error message.

HTML:
<div class="form-group">
    <label for="exampleInputEmail1">Email address</label>
    <input type="text" class="form-control form-control-sm" name="email" id="InputEmail1" aria-describedby="emailHelp" placeholder="Enter email | Phone Number">
    <div class="error"></div>
    <div class="error-message" id="emailErrorMessage"></div>
</div>

2. In your JavaScript code, inside the validateInputs function, add the following code to display the error message if the email or phone number is not registered:

JavaScript:
const emailErrorMessage = document.getElementById('emailErrorMessage');
if (emailValue && email.classList.contains('success')) {
    emailErrorMessage.innerText = '';
} else if (emailValue && email.classList.contains('error')) {
    emailErrorMessage.innerText = 'Email|phone is not registered!';
}

With these modifications, the "Email|phone is not registered!" message alert should be displayed when the user enters an email or phone number that is not registered in your database.
 
The reason why the "Email|phone is not registered!" message alert does not appear in your validation is because you have not included the code to display the error message when the email or phone number is not registered.

To fix this issue, you need to add the code to display the error message in the appropriate location. Here's how you can modify your code:

1. Add a new <div> element with the ID "emailErrorMessage" below the email input field in your HTML code. This will be used to display the error message.

HTML:
<div class="form-group">
    <label for="exampleInputEmail1">Email address</label>
    <input type="text" class="form-control form-control-sm" name="email" id="InputEmail1" aria-describedby="emailHelp" placeholder="Enter email | Phone Number">
    <div class="error"></div>
    <div class="error-message" id="emailErrorMessage"></div>
</div>

2. In your JavaScript code, inside the validateInputs function, add the following code to display the error message if the email or phone number is not registered:

JavaScript:
const emailErrorMessage = document.getElementById('emailErrorMessage');
if (emailValue && email.classList.contains('success')) {
    emailErrorMessage.innerText = '';
} else if (emailValue && email.classList.contains('error')) {
    emailErrorMessage.innerText = 'Email|phone is not registered!';
}

With these modifications, the "Email|phone is not registered!" message alert should be displayed when the user enters an email or phone number that is not registered in your database.
ayaw pa rin magpakita ng message na
'Email|phone is not registered!';
 
ayaw pa rin magpakita ng message na
I apologize for the confusion. Upon closer inspection of your code, I noticed that you are already setting the error message for the email input field in your PHP code. The issue might be with the JavaScript code not properly displaying the error message.

To fix this issue, you can modify the JavaScript code as follows:

JavaScript:
const emailErrorMessage = document.getElementById('emailErrorMessage');

if (emailValue && email.classList.contains('success')) {
    emailErrorMessage.innerText = '';
} else if (emailValue && email.classList.contains('error')) {
    emailErrorMessage.innerText = 'Email|phone is not registered!';
} else {
    emailErrorMessage.innerText = '';
}

The above code checks if the email input has the "success" or "error" class and sets the error message accordingly. If the email input does not have either of these classes, it clears the error message.

Make sure to update your JavaScript code with the above modification and try again. The "Email|phone is not registered!" message should now be displayed correctly when the email or phone number is not registered.
 
try mo lagyan output mga error na galing sa post request.

<div class="error-message" id="emailErrorMessage"> <?php echo $email_addressErr; ?> </div>

<div class="error-message" id="passwordErrorMessage"> <?php echo $$passwordErr; ?> </div>

yung form

<form id="loginForm" method="POST" action="" URL na tatangap ng POST request galing sa form na to ex: login.php"

try mo muna delete yung js script mo parang redundant
gamit ka lang ng JS if need mo ng action na di kailangan e load yung screen.

try mo rin gamit

password_hash($password, PASSWORD_BCRYPT);

password_verify($password, $hash)
 
It looks like you're trying to create a login form with PHP, HTML, and JavaScript. The issue you're facing is that the error message "Email|phone is not registered!" is not displaying as expected during form validation. Let's troubleshoot the problem step by step:

1. JavaScript Debugging:

Before looking into the PHP code, let's ensure that the JavaScript validation is working correctly. Add some console.log statements to see what's happening. Modify your validateInputs function like this:

Code:
javascript
   const validateInputs = () => {
       console.log('Validating inputs...');
       // ... (existing code)
       console.log('Email value:', emailValue);
       if (emailValue && email.classList.contains('success')) {
           emailErrorMessage.innerText = '';
       } else if (emailValue && email.classList.contains('error')) {
           emailErrorMessage.innerText = 'Email|phone is not registered!';
           console.log('Setting error message for email:', emailErrorMessage.innerText);
       }
   };

Open your browser's developer console (usually accessed by pressing F12 or Ctrl+Shift+I) and check if these logs are being displayed correctly as you interact with the form.

2. Database Connection:

Ensure that the database connection (from config.php) is successfully established, and the registration table exists with the appropriate column names (email_address, password, user_id, user_type).

3. Database Query:

It's recommended to use prepared statements for database queries to prevent SQL injection. Modify your query code like this:

Code:
php
   $check_email = mysqli_prepare($con, "SELECT * FROM registration WHERE email_address = ?");
   mysqli_stmt_bind_param($check_email, "s", $email_address);
   mysqli_stmt_execute($check_email);
   $result = mysqli_stmt_get_result($check_email);
   $check_email_row = mysqli_num_rows($result);

This code prepares the query using a parameterized statement and then binds the email address to it. It's safer and more secure than directly interpolating variables into the query.

4. Database Fetching:

Since you're using mysqli_prepare, you need to use mysqli_stmt_fetch to fetch the results:

Code:
php
   while ($row = mysqli_stmt_fetch($check_email)) {
       // ... rest of the code
   }

By addressing these points, you should be able to debug and resolve the issue with the error message not showing up correctly during validation. Remember to test the form with both valid and invalid email addresses to ensure that the logic is working as expected.
 

Similar threads

Back
Top