Saghalie,
You are right, this is a "feature". Ugh.
Here is how to fix it, edit your includes/post-functions.php, search around line 14-28:
//this function handle password submission and general form submission
if(isset($input['password'])){ //if there is password input, do validation
$query = "select count(form_id) valid_password from ap_forms where form_password='{$input['password']}'";
$result = do_query($query);
$row = do_fetch_result($result);
if(!empty($row['valid_password'])){
$process_result['status'] = true;
$_SESSION['user_authenticated'] = $form_id;
}else{
$process_result['status'] = false;
$process_result['custom_error'] = 'Invalid Password!';
}
return $process_result;
}
Replace that whole block of code with this one:
//this function handle password submission and general form submission
//check for password requirement
$query = "select form_password from ap_forms where form_id='$form_id'";
$result = do_query($query);
$row = do_fetch_result($result);
if(!empty($row['form_password'])){
$require_password = true;
}else{
$require_password = false;
}
//if this form require password and no session has been set
if($require_password && (empty($_SESSION['user_authenticated']) || $_SESSION['user_authenticated'] != $form_id)){
$query = "select count(form_id) valid_password from ap_forms where form_id='{$form_id}' and form_password='{$input['password']}'";
$result = do_query($query);
$row = do_fetch_result($result);
if(!empty($row['valid_password'])){
$process_result['status'] = true;
$_SESSION['user_authenticated'] = $form_id;
}else{
$process_result['status'] = false;
$process_result['custom_error'] = 'Invalid Password!';
}
return $process_result;
}
If the above code doesn't quite clear, use this:
http://mf.pastebin.com/f31d151c0
That should fix this "feature".
I'm packing this code into version 2 which should be released next week. So version 2 shouldn't have this "feature" again.
Thanks for the report.