<?php 
require_once('connection.php');
session_start();
	
	if(empty($_SESSION['Id'])){
		
    if(isset($_POST['Id']) && isset($_POST['Password'])){
		$Id = $_POST['Id'];
		$Password = $_POST['Password'];
		
		
		$Id = mysqli_real_escape_string($conn, $Id);
		$Password = mysqli_real_escape_string($conn, $Password);
		
       if(!empty($Id) && !empty($Password)){
           $sql = "select Id from employee where Id='$Id' and Password='$Password'";
            $sql_query = mysqli_query($conn, $sql);
			
			$mysqli_num_rows = mysqli_num_rows($sql_query);
			
			 if($mysqli_num_rows){
				$data = mysqli_fetch_array($sql_query);
				$Id = $data['Id'];
				
				
                $_SESSION['Id']=$Id;
				
                header("location:Employeedisplay2.php?Id=" . $_SESSION['Id'] . "");
				
       }else{
           echo 'Invalid Id Or Password!';
	   }
            }else{
               
        echo 'Fill Up All Fields!';
    }
	
	}
		mysqli_close($conn);
?>
<!doctype html>
<html lang="en">
  <head>
  	<title>Login PLC</title>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">

	<link href="https://fonts.googleapis.com/css?family=Lato:300,400,700&display=swap" rel="stylesheet">

	<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css">
	
	<link rel="stylesheet" href="css/style.css">

	</head>
	<body class="img js-fullheight" style="background-image: url(images/bg.jpg);">
	<section class="ftco-section">
		<div class="container">
			<div class="row justify-content-center">
				<div class="col-md-6 text-center mb-5">
					<h2 class="heading-section">Login Power Links Ctg Electrician</h2>
				</div>
			</div>
			<div class="row justify-content-center">
				<div class="col-md-6 col-lg-4">
					<div class="login-wrap p-0">
		      	<h3 class="mb-4 text-center">Have an account?</h3>
		      	<form action="index.php" method="post" class="signin-form">
		      		<div class="form-group">
		      			<input type="text" class="form-control" name="Id" placeholder=" Id" required>
		      		</div>
	            <div class="form-group">
	              <input id="password-field" type="password" class="form-control" name="Password" placeholder="Password" required>
	              <span toggle="#password-field" class="fa fa-fw fa-eye field-icon toggle-password"></span>
	            </div>
	            <div class="form-group">
	            	<button type="submit" class="form-control btn btn-primary submit px-3">Sign In</button>
	            </div>
	            <div class="form-group d-md-flex">
	            	<div class="w-50">
		            	<label class="checkbox-wrap checkbox-primary">Remember Me
									  <input type="checkbox" checked>
									  <span class="checkmark"></span>
									</label>
								</div>
	            </div>
	          </form>

		      </div>
				</div>
			</div>
		</div>
	</section>

	<script src="js/jquery.min.js"></script>
  <script src="js/popper.js"></script>
  <script src="js/bootstrap.min.js"></script>
  <script src="js/main.js"></script>

	</body>
</html>
   
<?php
	}else{
		header("location:Employeedisplay2.php?Id=" . $_SESSION['Id'] . "");
	}

?>       




