Hi Everyone,
I have an issue with my website login and registration. On localhost using xampp, my code is working perfectly but on online server I'm getting these errors "PHP Notice: Undefined index: **** in ... " for both username and password.
I've tried so many solutions but none is working.
Here is my code. Please help.
Login.php page code
`
<?php
include '../../includes/conn.php';
include '../../includes/functions.php';
include '../../includes/navbar.php';
?>
<div class="register login">
<div class="container">
<div class="row">
<div class="col-lg-4"></div>
<div class="col-lg-4">
<form action="verify.php" method="post">
<div class="reg-holder log-in">
<div class="form-group">
<p class="title">Login to proceed</p>
</div>
<div>
<?php include '../../includes/alert-message.php'; ?>
</div>
<div class="form-group">
<div class="input-group">
<span class="input-group-addon"><i class="fa fa-user"></i></span>
<input type="text" class="form-control" name="Username" id="Username" placeholder="Username" required>
</div>
</div>
<div class="form-group">
<div class="input-group">
<span class="input-group-addon"> <i class="fa fa-lock"></i> </span>
<input type="password" class="form-control" name="Password" placeholder="Password" required>
</div>
</div>
<div class="sign-up">
<button type="submit" class="btn btn-primary pull-right"><i class="fa fa-sign-in"></i> Login</button>
</div>
<div class="form-group login-footer">
<a href="register.php">Don't have an account? Sign-up</a>
<br>
<a href="home.php"> <i class="fa fa-home"></i> Home </a>
</div>
</div>
</div> <!-- End Reg-holder -->
</form>
<div class="col-lg-4"></div>
</div> <!-- End Row -->
</div> <!-- End Container -->
</div> <!-- End Register -->
<?php include '../../includes/footer.php'; ?>
`
and verify.php page
`
<?php
include '../../includes/functions.php';
include '../../includes/conn.php';
$username = $conn->real_escape_string($_POST['Username']);
$password = $conn->real_escape_string($_POST['Password']);
$sql = "SELECT * FROM users WHERE username='$username'";
$query = mysqli_query($conn, $sql);
if ($query->num_rows==1) {
if ($login = mysqli_fetch_array($query)) {
if (password_verify($password, $login['password'])) {
$_SESSION['id'] = $login['id'];
$_SESSION['user'] = $login['username'];
if ($login['type']==0) {
$_SESSION['SuccessMessage'] = "Hey {$_SESSION['user']} :)";
redirect_to("home.php");
} elseif ($login['type']==1) {
$_SESSION['SuccessMessage'] = "Welcome {$_SESSION['user']}";
redirect_to("../../admin/home.php");
}
} else {
$_SESSION['ErrorMessage'] = "Invalid username/password";
redirect_to("login.php");
}
}
} else {
$_SESSION['ErrorMessage'] = "Something went wrong. Try again!";
redirect_to("login.php");
}
One of the solutions I've tried is to use isset to check both username name and password but still nothing is working.
With isset method my code looked like this:
<?php
include '../../includes/functions.php';
include '../../includes/conn.php';
if (isset($_POST['Username']) && isset($_POST['Password'])) {
$username = $conn->real_escape_string($_POST['Username']);
$password = $conn->real_escape_string($_POST['Password']);
}
$sql = "SELECT * FROM users WHERE username='$username'";
$query = mysqli_query($conn, $sql);
if ($query->num_rows==1) {
if ($login = mysqli_fetch_array($query)) {
if (password_verify($password, $login['password'])) {
$_SESSION['id'] = $login['id'];
$_SESSION['user'] = $login['username'];
if ($login['type']==0) {
$_SESSION['SuccessMessage'] = "Hey {$_SESSION['user']} :)";
redirect_to("home.php");
} elseif ($login['type']==1) {
$_SESSION['SuccessMessage'] = "Welcome {$_SESSION['user']}";
redirect_to("../../admin/home.php");
}
} else {
$_SESSION['ErrorMessage'] = "Invalid username/password";
redirect_to("login.php");
}
}
} else {
$_SESSION['ErrorMessage'] = "Something went wrong. Try again!";
redirect_to("login.php");
}
`
Which works perfectly on localhost but not on online server for my website.
Kindly help.