I-AM-OBODO Posted February 21, 2015 Share Posted February 21, 2015 Hi all.I'm trying to get user login into two different areas on one login form based on a criteria. The problem I'm having is that if the correct passwords are provided, everything works fine but when a wrong password is provided, nothing happens, it doesn't even echo the password error alert! What could be wrong and is my code okay?Thanks if(isset($_POST['login'])){ $username=$_POST['username']; $password=$_POST['password']; $username = stripslashes($username); $password = stripslashes($password); $username = $username; $password = $password; //$pass = md5($password); $stmt = $pdo->prepare("SELECT password FROM table WHERE username=:username"); $stmt->bindValue(':username', $username, PDO::PARAM_STR); $stmt->execute(); if($stmt->rowCount()<1){ echo '<div class="signals"><p class="bg-warning text-center warning"><button type="button" class="close" aria-label="Close"><span aria-hidden="true">×</span></button>INVALID USERNAME OR PASSWORD</div></p>'; }else{ $password = $_POST['password']; list($hash) = $stmt->fetch(PDO::FETCH_NUM); if (password_verify($password, $hash)) { $_SESSION['username'] = $username; $status1 = "COMPLETED"; $status2 = "UNCOMPLETED"; $stmt = $pdo->query("SELECT status FROM table WHERE username ='$_SESSION[username]'"); $check = $stmt->fetch(PDO::FETCH_ASSOC); $status = $check['status']; if(strcmp($status, $status1) == 0){ header("location: completed/index.php"); exit(); }elseif(strcmp($status, $status2) == 0){ header("location: uncompleted/index.php"); exit(); }else{ echo '<div class="signals"><p class="bg-warning text-center warning"><button type="button" class="close" aria-label="Close"><span aria-hidden="true">×</span></button>INVALID USERNAME OR PASSWORD again</div></p>'; } } } } Link to comment https://forums.phpfreaks.com/topic/294763-login-into-two-different-areas-on-one-login-form/ Share on other sites More sharing options...
Ch0cu3r Posted February 21, 2015 Share Posted February 21, 2015 It doesn't even echo the password error alert! This is because this else is in the wrong place. else{ echo '<div class="signals"><p class="bg-warning text-center warning"><button type="button" class="close" aria-label="Close"><span aria-hidden="true">×</span></button>INVALID USERNAME OR PASSWORD again</div></p>'; } You have have after the if/elseif strcmp statements. It should be after the if (password_verify($password, $hash)) block. if(isset($_POST['login'])) { $username = stripslashes($_POST['username']); $password = stripslashes($_POST['password']); $stmt = $pdo->prepare("SELECT password FROM table WHERE username=:username"); $stmt->bindValue(':username', $username, PDO::PARAM_STR); $stmt->execute(); if($stmt->rowCount()<1) { echo '<div class="signals"><p class="bg-warning text-center warning"><button type="button" class="close" aria-label="Close"><span aria-hidden="true">×</span></button>INVALID USERNAME OR PASSWORD</div></p>'; } else { $password = $_POST['password']; list($hash) = $stmt->fetch(PDO::FETCH_NUM); if (password_verify($password, $hash)) { $_SESSION['username'] = $username; $status1 = "COMPLETED"; $status2 = "UNCOMPLETED"; $stmt = $pdo->query("SELECT status FROM table WHERE username ='$_SESSION[username]'"); $check = $stmt->fetch(PDO::FETCH_ASSOC); $status = $check['status']; if(strcmp($status, $status1) == 0) { header("location: completed/index.php"); exit(); } elseif(strcmp($status, $status2) == 0) { header("location: uncompleted/index.php"); exit(); } } else { echo '<div class="signals"><p class="bg-warning text-center warning"><button type="button" class="close" aria-label="Close"><span aria-hidden="true">×</span></button>INVALID USERNAME OR PASSWORD again</div></p>'; } } } Link to comment https://forums.phpfreaks.com/topic/294763-login-into-two-different-areas-on-one-login-form/#findComment-1506317 Share on other sites More sharing options...
I-AM-OBODO Posted February 21, 2015 Author Share Posted February 21, 2015 This is because this else is in the wrong place. else{ echo '<div class="signals"><p class="bg-warning text-center warning"><button type="button" class="close" aria-label="Close"><span aria-hidden="true">×</span></button>INVALID USERNAME OR PASSWORD again</div></p>';}You have have after the if/elseif strcmp statements. It should be after the if (password_verify($password, $hash)) block.if(isset($_POST['login'])){ $username = stripslashes($_POST['username']); $password = stripslashes($_POST['password']); $stmt = $pdo->prepare("SELECT password FROM table WHERE username=:username"); $stmt->bindValue(':username', $username, PDO::PARAM_STR); $stmt->execute(); if($stmt->rowCount()<1) { echo '<div class="signals"><p class="bg-warning text-center warning"><button type="button" class="close" aria-label="Close"><span aria-hidden="true">×</span></button>INVALID USERNAME OR PASSWORD</div></p>'; } else { $password = $_POST['password']; list($hash) = $stmt->fetch(PDO::FETCH_NUM); if (password_verify($password, $hash)) { $_SESSION['username'] = $username; $status1 = "COMPLETED"; $status2 = "UNCOMPLETED"; $stmt = $pdo->query("SELECT status FROM table WHERE username ='$_SESSION[username]'"); $check = $stmt->fetch(PDO::FETCH_ASSOC); $status = $check['status']; if(strcmp($status, $status1) == 0) { header("location: completed/index.php"); exit(); } elseif(strcmp($status, $status2) == 0) { header("location: uncompleted/index.php"); exit(); } } else { echo '<div class="signals"><p class="bg-warning text-center warning"><button type="button" class="close" aria-label="Close"><span aria-hidden="true">×</span></button>INVALID USERNAME OR PASSWORD again</div></p>'; } }} Thanks Link to comment https://forums.phpfreaks.com/topic/294763-login-into-two-different-areas-on-one-login-form/#findComment-1506356 Share on other sites More sharing options...
Recommended Posts
Archived
This topic is now archived and is closed to further replies.